随笔分类 -  BZOJ

摘要:同 "BZOJ2763" 。 注意本题起点终点不是$s,t$而是$1,n$,之前在不同层之间建立的权值为$0$的边权值改为$w/2$即可。 code: cpp include define val(u,id) (n (u)+id) using namespace std; struct node{ 阅读全文
posted @ 2019-03-17 18:10 xryjr233 阅读(143) 评论(0) 推荐(0)
摘要:建一个分层图,第$i$层的第$j$个节点表示走到$j$号节点,用了$i$个优惠的最短路,我们设为$[i,j]$。 然后对于原图的一条权值为$w$的双向边$(u,v)$,对于任意的$0\le x\le k$,在$[x,u]$和$[x,v]$之间建立权值为$w$的双向边,对于任意的$0\le x def 阅读全文
posted @ 2019-03-17 18:09 xryjr233 阅读(178) 评论(0) 推荐(0)
摘要:以下除法一律为整除。 求$\sum_{i=0}^kC_n^i\ mod\ p,p=2333$ 设$f(i,j)=\sum_{k=0}^jC_i^k$ $f(n,k)=\sum_{i=0}^kC_n^i$ 当$k\le p,n\le p$,预处理$0\le i\le p,0\le j\le i$的$C 阅读全文
posted @ 2019-03-17 18:08 xryjr233 阅读(138) 评论(0) 推荐(0)
摘要:我们记$pw3_i$表示前$i$个位置,结尾为$i$的最长全1子串的期望长度的立方。 如果我们钦定$p_{n+1}=0$,那么答案$=\sum_{i=1}^npw3_i\times(1 p_{i+1})$。乘上$(1 p_{i+1})$意思是这一位要在下一位为$0$的时候才有贡献。 设当前位置为$i 阅读全文
posted @ 2019-03-17 18:06 xryjr233 阅读(154) 评论(0) 推荐(0)
摘要:首先,发现数据范围很小,结合题意认为这是一道~~搜索~~网络流题。 考虑建模。 我们把图中 高度不为0 的石柱看做点,如何连边呢? 首先,两个相互可以到达的石柱之间需要连容量为$inf$的边,因为如果石柱不消失,蜥蜴可以在这两个石柱之间条无数次。 然后建立汇点$t$,每一个与边界距离不超过$d$的点 阅读全文
posted @ 2019-03-17 18:05 xryjr233 阅读(116) 评论(0) 推荐(0)
摘要:明显的点分治。 我们记$num_{i,j}$为点$i$及其子树中的节点与$i$之间的路径的和对3取余为$j$的种类数,显然$0\le j define V(x) (x 2?x 3:(x 阅读全文
posted @ 2019-03-17 18:04 xryjr233 阅读(107) 评论(0) 推荐(0)
摘要:容易想到一个网络流模型,就是将武器作为节点放在左边,机器作为节点放在右边,一个武器可以攻击一个机器,就在这个武器和这个机器之间连容量为$inf$的边,因为武器可以攻击机器任意多的伤害。 那么如何建立其他边呢? 由于最小时间不好求,我们考虑二分答案$Time$(注意这是一个实数),将问题转化为询问可行 阅读全文
posted @ 2019-03-17 18:04 xryjr233 阅读(118) 评论(0) 推荐(0)
摘要:以下设$n\ge m$。 首先,一个点$(x,y)$到$(0,0)$的路径上经过的点的数量( 不包括首尾 )为$gcd(x,y) 1$。 所以它的能量损耗为$2\times gcd(x,y) 1$。 考虑如何统计$\sum_{i=1}^n\sum_{j=1}^m 2\times gcd(i,j) 1 阅读全文
posted @ 2019-03-17 18:03 xryjr233 阅读(118) 评论(0) 推荐(0)
摘要:首先,我们可以预处理$r$以内的幸运数字。 这样的数字不会很多,设$r$内所有幸运数字有$n$个,分别是$a_1,a_2,a_3,...,a_n$。 然后,我们知道$m$以内的$x$的倍数有$\lfloor\frac{m}{x}\rfloor$个。 那么答案就是$\sum_{i=1}^n\lfloo 阅读全文
posted @ 2019-03-17 18:02 xryjr233 阅读(162) 评论(0) 推荐(0)
摘要:其实可操作相当于只有$(a,b),(a, b),(b,a),(b, a)$,因为加上$( a, b)$相当于减去$(a,b)$,其他的同理。 那么问题就变成了找到整数$c,d,e,f$,使 $c(a,b)+d(a, b)+e(b,a)+f(b, a)=(x,y)$成立。 化简原方程,得 $(c+d) 阅读全文
posted @ 2019-03-17 18:01 xryjr233 阅读(131) 评论(0) 推荐(0)
摘要:首先如果$n\le22$那么大家都会了。 因为22以内只有8个质数,所以我们可以状压一个8位二进制数表示一个数的质因子集合。 那么要求就是两人吃的寿司的质因子集合交集为空集。 怎么状压应该都会了吧。 那么$n\le500$呢? 发现$\lfloor\sqrt{500}\rfloor=22$,也就是5 阅读全文
posted @ 2019-03-17 18:00 xryjr233 阅读(213) 评论(0) 推荐(0)
摘要:首先,我们都会暴力计算贡献。 我们还发现这题对精度的要求很低。 于是我们心想,这一定不是出题人随便放的,而是关乎正解的。 我们发现当$j i$很大时,它的微小改变对答案的影响就是微不足道的。 于是我们定义一个块大小$siz$,然后对于一个长$siz$的区间$[i,i+siz 1]$,且这个区间位于影 阅读全文
posted @ 2019-03-17 18:00 xryjr233 阅读(114) 评论(0) 推荐(0)
摘要:看到最大值最小,第一个想到二分答案。 那么我们需要改成虫洞的边必然被所有大于当前答案的路径覆盖,我们只要在这些边中找到一条时间最大的,看看删去以后能否使之前耗时最长的路径耗时小于等于答案就好了。 那么如何找到满足条件的边呢? 我们可以将每一条超出答案的路径上所有的边打上一个标记,(标记数量=超出答案 阅读全文
posted @ 2019-03-17 17:59 xryjr233 阅读(141) 评论(0) 推荐(0)
摘要:发现对于任意一条路径,我们可以找到一些环,然后将环和链之间用链连起来,从而使这条链的异或和xor上环的异或和(注意我们新加的链被走了两次,所以没有贡献)。 所以我们可以找出图中所有的环,然后用某一节点1到节点n的路径异或上若干个环来增大总的异或和。 最大异或和,想到用线型基维护。 那么最开始的路径是 阅读全文
posted @ 2019-03-17 17:57 xryjr233 阅读(109) 评论(0) 推荐(0)
摘要:考虑贪心地从魔力值大到小加入矿石,合法就加入。 ~~为什么是对的我也不知道233~~ 那么如何判断合法呢? 其实考虑是否可以让它在异或一些数时候变为0即可。 线性基维护。 code: cpp include using namespace std; struct stone{ int m; long 阅读全文
posted @ 2019-03-17 17:57 xryjr233 阅读(140) 评论(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 阅读(178) 评论(0) 推荐(0)
摘要:首先很容易想到并查集维护,将相等的数merge起来。但是我们很难维护不等的情况。 那怎么办? 我们发现我们可以查询两数不等是否成立,只是不能维护它而已,并且事实上,不等没有类似$a\ne b,b\ne c,\texttt{则}a\ne c$的性质。 所以我们可以变更维护顺序。 先在并查集里维护等于的 阅读全文
posted @ 2019-03-17 17:54 xryjr233 阅读(139) 评论(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 阅读(104) 评论(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 阅读(129) 评论(0) 推荐(0)
摘要:首先,我们需要把图上的边像样例的图片一样反着建。 然后我们跑一遍拓扑排序(注意这时候可能有多个入度为0的点),记录每个点的层数(即它的所有父亲的层数最大值+1)。 然后我们将所有点按层数升序排序,依次处理。 对于每个点,能够使它灭绝的,深度最大的点是它所有父亲的$LCA$,记为$f_{i,0}$。 阅读全文
posted @ 2019-03-15 15:47 xryjr233 阅读(116) 评论(0) 推荐(0)