摘要:
有n个数字,不知道具体是多少,给q个信息。 每个信息给一个区间[l,r]。并告诉这个区间的奇数有多少个,问第一个错误的信息是第几个。 可以把每个区间的左端点-1的根看做右端点的根的根,用并查集维护一个到根点的1的个数是奇数还是偶数即可。 注意得离散化。 #include <cstdio> #incl 阅读全文
posted @ 2018-09-11 18:45
LMissher
阅读(141)
评论(0)
推荐(0)
摘要:
每个信息给一个子区间[l,r]的和,问有多少信息是错误的。 子区间[l,r]的和可以知道是由r的前缀和减去l-1的前缀和。 所以presum[r]-presum[l-1]=sum[l,r]。所有可以把每个数字当成一个节点,两个节点间的势差为sum。 用并查集维护联通块及所有点与根节点的势差,那么如果 阅读全文
posted @ 2018-09-11 14:43
LMissher
阅读(118)
评论(0)
推荐(0)
摘要:
一个城市有一个龙珠,每次两个操作,第一个操作把一个城市的龙珠移到另一个城市。 第二个操作询问第i个龙珠在哪个城市以及那个城市的size以及这个龙珠的转移次数。 用并查集维护一个联通块的size以及一个转换次数cnt。 每次合并联通块的时候把根节点的cnt++,然后在find的时候做压缩路径以及字节点 阅读全文
posted @ 2018-09-11 13:48
LMissher
阅读(138)
评论(0)
推荐(0)
摘要:
初始有n堆东西每堆一个物品,有两个操作,第一个把含有第x个物品的那堆物品放到含有第y个物品的那堆物品上。 第二个询问第x个物品下面有多少物品。 用并查集维护一个联通块的size以及每个节点到根节点的距离。 第一个操作的时候size[root[x]]+=size[root[y]]并且y的根节点的距离更 阅读全文
posted @ 2018-09-11 13:07
LMissher
阅读(132)
评论(0)
推荐(0)
摘要:
water #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector> using namespace std; const int M = 1007; int f[M],r 阅读全文
posted @ 2018-09-11 10:04
LMissher
阅读(126)
评论(0)
推荐(0)
摘要:
每个火车头能拉走连续的k个货箱,三个火车头可以拉的最大货箱重量是多少。 dp[i][j]表示i个火车头在前j个火车头里可以拉的最大货箱重量。 dp+记忆化搜索。 #include <cstdio> #include <cstring> #include <cmath> #include <algor 阅读全文
posted @ 2018-09-11 09:09
LMissher
阅读(130)
评论(0)
推荐(0)

浙公网安备 33010602011771号