knights专题

【codeforces】gym 101137 K - Knights of the Old Republic【用最小生成树对图做集合dp】

题目链接:【codeforces】gym 101137 K - Knights of the Old Republic 考虑对图集合dp,一个连通块的dp值为两个连通块的值的和或者强制加一条新边后的最小值,取个最小值(边从小到大枚举,则强制加一条最大的边会导致连通块内较小的边一定都选,则会构成一个生成树)。用kruskal实现这个dp过程即可。 #include <bits/stdc++.h>

Codeforces Round #488 by NEAR (Div. 2) B. Knights of a Polygonal Table

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

poj 2942 Knights of the Round Table(双连通分量+tarjan+二分图判定)

http://poj.org/problem?id=2942 题意: 有N个骑士,给出某些骑士之间的仇恨关系,骑士们开会时会围坐在一个圆桌旁。一次会议能够顺利举行,要满足两个条件: 1:任意相互憎恨的两个骑士不能相邻 2:开会人数为大于2的奇数 若某个骑士任何会议都不能参加,那么就必须将他踢出,给出骑士之间的仇恨关系,问最少需要踢出多少个骑士? 思路: 题目要求踢出的人最少,那

(简单贪心)CodeForces 994B-Knights of a Polygonal Table

(简单贪心)CodeForces 994B-Knights of a Polygonal Table   题目链接:B. Knights of a Polygonal Table 思路: 题目大意是有n个杀手,每个杀手最多能杀k个Power值比他小的人,给出n个杀手各自的Power值和Money数,问每个杀手最多能获得多少Money 定义一个结构体,内含杀手的原始索引(排序会