摘要: 首先如果$n\le22$那么大家都会了。 因为22以内只有8个质数,所以我们可以状压一个8位二进制数表示一个数的质因子集合。 那么要求就是两人吃的寿司的质因子集合交集为空集。 怎么状压应该都会了吧。 那么$n\le500$呢? 发现$\lfloor\sqrt{500}\rfloor=22$,也就是5 阅读全文
posted @ 2019-03-17 18:00 xryjr233 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 首先,我们都会暴力计算贡献。 我们还发现这题对精度的要求很低。 于是我们心想,这一定不是出题人随便放的,而是关乎正解的。 我们发现当$j i$很大时,它的微小改变对答案的影响就是微不足道的。 于是我们定义一个块大小$siz$,然后对于一个长$siz$的区间$[i,i+siz 1]$,且这个区间位于影 阅读全文
posted @ 2019-03-17 18:00 xryjr233 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 看到最大值最小,第一个想到二分答案。 那么我们需要改成虫洞的边必然被所有大于当前答案的路径覆盖,我们只要在这些边中找到一条时间最大的,看看删去以后能否使之前耗时最长的路径耗时小于等于答案就好了。 那么如何找到满足条件的边呢? 我们可以将每一条超出答案的路径上所有的边打上一个标记,(标记数量=超出答案 阅读全文
posted @ 2019-03-17 17:59 xryjr233 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 发现对于任意一条路径,我们可以找到一些环,然后将环和链之间用链连起来,从而使这条链的异或和xor上环的异或和(注意我们新加的链被走了两次,所以没有贡献)。 所以我们可以找出图中所有的环,然后用某一节点1到节点n的路径异或上若干个环来增大总的异或和。 最大异或和,想到用线型基维护。 那么最开始的路径是 阅读全文
posted @ 2019-03-17 17:57 xryjr233 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 考虑贪心地从魔力值大到小加入矿石,合法就加入。 ~~为什么是对的我也不知道233~~ 那么如何判断合法呢? 其实考虑是否可以让它在异或一些数时候变为0即可。 线性基维护。 code: cpp include using namespace std; struct stone{ int m; long 阅读全文
posted @ 2019-03-17 17:57 xryjr233 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 一看到IOI2007,又是紫题,一脸惊恐... 然后就被我秒了233 我们令一个数字表示一种食物。 设$dp_{i,a,b,c,d}$表示运完第$i$辆食物,煤矿1的上次食物是$b$,上上次是$a$,煤矿2的上次食物是$d$,上上次是$c$。 设第$x$次的食物是$f_x$,令$i,j,k$中不同食 阅读全文
posted @ 2019-03-17 17:56 xryjr233 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 首先很容易想到并查集维护,将相等的数merge起来。但是我们很难维护不等的情况。 那怎么办? 我们发现我们可以查询两数不等是否成立,只是不能维护它而已,并且事实上,不等没有类似$a\ne b,b\ne c,\texttt{则}a\ne c$的性质。 所以我们可以变更维护顺序。 先在并查集里维护等于的 阅读全文
posted @ 2019-03-17 17:54 xryjr233 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 考虑一个一个加入限制。 那么先算没有限的情况。 根据乘法分配律,发现答案其实是$[\frac{n(n+1)}{2}]^m$。 也就是$m$个$(1+2+3+...+n)$的积。将第$i$个$(1+2+3+...+n)$记为$sum_i$(当然这只是$sum_i$的初值)。 设目前答案为$ans$。 阅读全文
posted @ 2019-03-15 15:53 xryjr233 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 这种异或和问题一看就是线性基对吧。。。 要维护的是树上两点之间的路径,所以考虑倍增。 发现可以记$p_{i,j}$为$i$到$i$的$2^j$次父亲(不含)的点权构出的线性基。 于是我们需要合并两个线性基,记这个操作为$Merge(p1,p2)$。 则$p_{i,j}=Merge(p_{i,j 1} 阅读全文
posted @ 2019-03-15 15:49 xryjr233 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 首先,我们需要把图上的边像样例的图片一样反着建。 然后我们跑一遍拓扑排序(注意这时候可能有多个入度为0的点),记录每个点的层数(即它的所有父亲的层数最大值+1)。 然后我们将所有点按层数升序排序,依次处理。 对于每个点,能够使它灭绝的,深度最大的点是它所有父亲的$LCA$,记为$f_{i,0}$。 阅读全文
posted @ 2019-03-15 15:47 xryjr233 阅读(104) 评论(0) 推荐(0) 编辑