摘要: 为了学长链剖分开的题,结果还是忍不住写了个线段树合并 首先不难发现:$b$ 要么是 $a$ 的祖先,要么是 $a$ 的后代。 $b$ 是 $a$ 的祖先很好弄,因为 $c$ 的数量始终等于 $size_a-1$;对于 $b$ 要么是 $a$ 的后代的情况,那么就是求 $a$ 的子树中和它深度差不超过 阅读全文
posted @ 2020-03-15 12:50 wangyuchen 阅读(194) 评论(0) 推荐(0) 编辑
摘要: upd: 它掉出 Ynoi 了,有时间了更几个真正的 Ynoi 吧。 Ynoi难得的很好写的题。主要考察两角和公式: $\sin(\alpha+\beta)=\sin\alpha\cos\beta+\cos\alpha\sin\beta$ $\cos(\alpha+\beta)=\cos\alpha 阅读全文
posted @ 2020-03-14 08:40 wangyuchen 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 首先考虑一下:如果我们知道要买(或送)哪几袋米,如何确保自己的钱够用? 显然应该买最便宜的几个,剩下的送。 所以我们可以枚举一个$p$,比$p$便宜的米用买的方式,比$p$贵的米用送的方式,不会遗漏最优解。把米按价格排序用背包就可以做到$O(n^2m)$。 #include<cstdio> #inc 阅读全文
posted @ 2020-03-03 10:03 wangyuchen 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 首先把 $a$ 排序。不难发现只有两种可能方案:把所有数改成 $a_n$,改成不小于 $a_n$ 的第一个质数。 对于每个数,把它改成大于它的第一个质数,再改成第二个……这些过程可以拆开来放在一起,对于短于 $\frac{c_2}{c_1}$ 的区间用第一种方案,更长的用第二种。 一些细节:如果 $ 阅读全文
posted @ 2020-02-16 16:02 wangyuchen 阅读(164) 评论(0) 推荐(0) 编辑
摘要: (在接下来的描述和图片中,用$dis_u$表示根(1号点)到$u$的路径的边权和;$[l,r]$范围内的点用蓝色表示,$p$用红色表示) 我们考虑$lca_{l,l+1,\cdots,r}$(以下记为$lca$,用橙色表示),有以下情况: 1.$lca$为$p$的孩子(或$p$) 这表明$[l,r] 阅读全文
posted @ 2020-02-10 14:41 wangyuchen 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 首先研究一下subtask 5怎么搞。 手玩一下不难发现:满足总和为$2m-2$且每个数不小于1的数列都是满足要求的。这就给了我们启发:可不可以直接找出度数序列数量呢? 接下来解决一个问题:$n$个结点的仙人掌最多有几条边? 不难发现,所有包含点数大于4个的环都是不优的,例如5个点的环可以改成6条边 阅读全文
posted @ 2020-02-10 13:54 wangyuchen 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 莫队之集大成者——树上带修改莫队。 首先对树dfs,记下进入和离开一个结点的时间戳$in_u$,$out_u$,并得到相应的长为$2n$的dfs序(常称为括号序),对于一个询问$(u,v)$: 若$lca_{u,v}=u$,则$in_u$到$in_v$之间$(u,v)$路径上的点恰好出现一次,其他点 阅读全文
posted @ 2019-08-28 14:33 wangyuchen 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 显然k条数据线不会交叉。因此可以把问题转化为:从n-1个区间中选择k个,选出的区间不能相邻,最小化区间长度和。 这个贪心和种树是一样的,只不过1和n-1不相邻,两边放上inf值作边界即可。 #include<cstdio> #include<queue> using namespace std; c 阅读全文
posted @ 2019-08-27 14:35 wangyuchen 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 因为$a_i+x,b_i+y$和$a_i+(x-y),b_i$是等价的,所以只需讨论给$a_i$加上一个$[-m,m]$的数即可。 对于题目中的式子: $$\begin{aligned}\sum\limits^n_{i=1}(a_i+x-b_i)^2&=\sum\limits^n_{i=1}(a_i 阅读全文
posted @ 2019-08-27 13:25 wangyuchen 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 这里是点名被卡的$O(qnlogm)$做法 首先考虑对于两个串$s$和$t$,我们怎么合并得到$ans$(两天的总状态): 1. 若存在$s_i$,$t_i$分别为0,1,则返回无解;2. 若$s_i=t_i$,则$ans_i=s_i$(这里涵盖了$s_i=t_i=?$的情况);3. 否则,$s_i 阅读全文
posted @ 2019-08-26 15:15 wangyuchen 阅读(140) 评论(0) 推荐(0) 编辑