题目链接:【codeforces】gym 101137 K - Knights of the Old Republic 考虑对图集合dp,一个连通块的dp值为两个连通块的值的和或者强制加一条新边后的最小值,取个最小值(边从小到大枚举,则强制加一条最大的边会导致连通块内较小的边一定都选,则会构成一个生成树)。用kruskal实现这个dp过程即可。 #include <bits/stdc++.h>
k最大是10, 按照power排序后 维护每个位置的前k大,注意k为0的情况 类似前缀和,每个位置的优先队列按照从小到大的顺序排列,同时保证队列的大小不超过k #include <bits/stdc++.h>using namespace std;const int maxn = 1e6 + 10;const int N = maxn;typedef long long ll;#def
(简单贪心)CodeForces 994B-Knights of a Polygonal Table 题目链接:B. Knights of a Polygonal Table 思路: 题目大意是有n个杀手,每个杀手最多能杀k个Power值比他小的人,给出n个杀手各自的Power值和Money数,问每个杀手最多能获得多少Money 定义一个结构体,内含杀手的原始索引(排序会