摘要: 用tarjan进行缩点,因为所有强连通分量都能互达,因此考虑dag,当且仅当拓扑排序是队列中不超过一个元素存在才是答案。 #include<bits/stdc++.h> using namespace std; const int N=2e5+10; int id[N]; int h[N],ne[N 阅读全文
posted @ 2020-05-22 22:37 朝暮不思 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 通过式子转化,考虑贡献,设bit(x)为x的位数,答案为所有组合的位数-(n-i)*a[i]的位数 后一个式子可以读入处理,前一个式子先排序后用二分找到变化边界,从大往小遍历二分,答案只有位数+1或者跟原位数相符。 #include<bits/stdc++.h> using namespace st 阅读全文
posted @ 2020-05-22 15:01 朝暮不思 阅读(165) 评论(0) 推荐(0) 编辑
摘要: tarjan缩点的模板题 #include<bits/stdc++.h> using namespace std; const int N=2e5+10; int id[N]; int h[N],ne[N],w[N],e[N],idx; stack<int> q; int scnt; int cnt 阅读全文
posted @ 2020-05-22 10:47 朝暮不思 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 因为我们知道中序遍历,所以可以设计dp状态为1-i为一个子树的最大值,这样即可用区间dp或者记忆化搜索来解决。 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<functional> #in 阅读全文
posted @ 2020-05-22 09:35 朝暮不思 阅读(163) 评论(0) 推荐(0) 编辑