上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 68 下一页
摘要: 经典的tarjan,但是这次要求个数,因此考虑做完后先重建边,去掉重边,因为缩点后每个连通块是一个点,所以往外的点都是同一个。 之后在拓扑序里面求一下就行。 #include<bits/stdc++.h> using namespace std; typedef long long ll; cons 阅读全文
posted @ 2020-05-23 22:33 朝暮不思 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 显然我们看到数据范围这么小,就很自然的想到dp。所以可以把状态设成以i为根节点可以异或出的答案是j 这样我们先对子树进行操作,之后枚举二维来暴力异或更新。 在更新的时候,千万不能直接拿原数组更新,而要存一个备份数组,因为如果拿原数组更新,很可能出与某个子树更新的答案又继续跟当前子树更新,从而多出答案 阅读全文
posted @ 2020-05-23 20:03 朝暮不思 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 本题数据量比较大,可以用tarjan缩点后判环,我使用的是差分约束,如果存在环的情况,最好将队列换成栈。 但是在普通求spfa的时候,还是要用队列。 #include<bits/stdc++.h> using namespace std; const int N=3e5+10; int h[N],n 阅读全文
posted @ 2020-05-23 10:42 朝暮不思 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 用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 朝暮不思 阅读(164) 评论(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) 编辑
摘要: 对于有向图问题,如果能转化成dag那么就会好做很多,因为这题如果是dag,那么只要只存在一格出度为0的,就是答案 而强连通分量中的点都可以互达,所以进行tarjan缩点。 tarjan缩点的原理,分为四个边,树边,前向边,后向边,横叉边 dfn是时间戳,tarjan的栈中存的是祖先和已被遍历的并且能 阅读全文
posted @ 2020-05-21 23:02 朝暮不思 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 这题是一个有向图,因为他必须要从高往低,因此我们在建边时注意一下。这不是普通的最小生成树 因为有向图的叫最小树形图,但是我们可以用这个思想来做。首先把所有满足条件的边加到结构体中 其次,先做一下bfs遍历标记所有能到的点,之后把结构体按出边的高度为第一排序,按权值为第二排序 这么做的原因是,首先我们 阅读全文
posted @ 2020-05-21 12:54 朝暮不思 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 这道题初始方程很简单,但是数据很大,因此我们想到,如果缩一下距离,一看到st是1-10,就很有可能跟他的最小公倍数有关,很多题目都是可以猜出来,因为1-10是一个很神奇的数字 所以,2520这个距离是可以到达的,我们只需要将两者之间的距离模2520,就成功缩小了。 #include<iostream 阅读全文
posted @ 2020-05-21 09:07 朝暮不思 阅读(188) 评论(0) 推荐(0) 编辑
上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 68 下一页