摘要: 显然是状压,设f[i][j][k]为1到i行选j个king,并且第i行状态为k的方案数,判断是否可行然后枚举转移即可 先把可行状态预处理出来会变快 cpp include include using namespace std; const int N=2005; long long n,kk,a[ 阅读全文
posted @ 2018-07-29 21:17 lokiii 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 先tarjan找割点和点双连通分量,然后对一个点双,如果没有割点,那么需要建立两个出口(割掉一个另一个备用);如果只有一个割点,出口可以设立在任意一个非割点的地方;如果有两个及以上个割点,就不用建出口(可以直接到达其他联通块) cpp include include include using na 阅读全文
posted @ 2018-07-29 14:23 lokiii 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 对于一个lr,每个颜色贡献的是在(1,r)区间里出现的最右位置,所以记录一个b数组表示当前点这个颜色上一个出现的位置 然后把询问离线,按r升序排序 每次把右端点右移,把这个点在树状数组上+1,并且在当前这个点的b位置上 1(表示没用了),然后树状数组前缀和减一下即可 ~~我写的~~莫队会T cpp 阅读全文
posted @ 2018-07-29 10:08 lokiii 阅读(136) 评论(0) 推荐(0) 编辑
摘要: m是5000,就想到了直接枚举比例 具体做法是是先把边按照边权从小到大排序,然后先枚举最小边权,再枚举最大边权,就是从最小边权里一个一个加进并查集里,每次查st是否联通,联通则退出,更新答案 阅读全文
posted @ 2018-07-29 08:58 lokiii 阅读(146) 评论(0) 推荐(0) 编辑