随笔分类 -  位运算

摘要:可以发现可以构建出的是一棵树,且树的深度在20层及以内 刚开始想对于每条路径跑最短路,然后都跑一边得出答案,但是发现因为路径可以重叠,所以后面求的路径会修改一些公共路径的最短路,所以不能这么求 考虑什么是不变的,一个点到自己的最短路一定是0,所以从每个点出发,跑它到所有子节点的最短路,这个路一定是这 阅读全文
posted @ 2021-05-10 17:00 cminus 阅读(644) 评论(0) 推荐(0)
摘要:神仙题%%% 场上想了两个小时都没想出来 #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; #define fi first #define se second #define mp make_pair #de 阅读全文
posted @ 2021-03-11 16:34 cminus 阅读(131) 评论(0) 推荐(0)
摘要:整出来了七道题,ABC最后都没做赛后补的 A题我和题解以及大部分人思路都不一样,并没有用到树状数组,我甚至看到有笛卡尔树做的(并不会),我是用了两次单调栈,维护两边最远的位置,再算贡献,然后这样写好像是代码长度最短的,应该是最简单的方法吧,但是这么写细节上也有很多坑,比如最小值不在区间内,在端点上时 阅读全文
posted @ 2021-02-13 16:50 cminus 阅读(83) 评论(0) 推荐(0)
摘要:用了很神奇的办法,对于每一个数,取反,暴力找它所有子集,如果dfs到的数字又是我们输入的数字,就继续取反暴力找子集 #include <bits/stdc++.h> using namespace std; const int N = (1 << 23) + 10; int a[N]; bool v 阅读全文
posted @ 2020-12-06 20:20 cminus 阅读(91) 评论(0) 推荐(0)