把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

03 2022 档案

摘要:题面传送门 感觉很妙妙的一道题,但是好像啥乱搞都能过。 我们考虑排好序后对于每一个m元组求出其最小的与其不相同的wj 容易发现这个wj如果上升那么是没有意义的,所以可以双指针。 然后就相当于询问一个前缀内是否有与当前点完全不同的m元组,这个可以把所有子集跑出来然后容斥就可以算了。 阅读全文
posted @ 2022-03-29 12:52 275307894a 阅读(78) 评论(0) 推荐(0) 编辑
摘要:题面传送门 首先好像有一道题交闹钟来着,是m=0的版本。 考虑设fi,j0/1\(\)[aim,ai]左/右,另一个点在j点的最小答案。 然后转移分类讨论:首先找到第一个不在[aim,ai]区间内的位置x,如果找不到直接贡献答案。 如果是这一步转移$ 阅读全文
posted @ 2022-03-29 08:19 275307894a 阅读(274) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2022-03-29 08:01 275307894a 阅读(0) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2022-03-29 07:49 275307894a 阅读(0) 评论(0) 推荐(0) 编辑
摘要:题面传送门 结合manacher的拓展过程以及复杂度证明可以知道,一个序列的本质不同回文串是O(n)个,并且每次拓展时会出现一个可能本质不同的字符串。 那么就把这个回文串扔到SAM上查出现次数就好了。时间复杂度O(nlogn) 如果这样那也就不会有这篇题解了。 但是问题在于空间开不下。主 阅读全文
posted @ 2022-03-27 22:24 275307894a 阅读(33) 评论(0) 推荐(0) 编辑
摘要:题面传送门 原来CF的机子是32位的,还可以手动切到64位,卡常把人卡傻掉了。 题目中要求最小值首先考虑1的位置,记为i,那么显然所有形如[j,i](ji)的区间,最小值都在i,对于[i,j](ji)也是如此。 然后考虑[1,i]区间内的第二小值,记位置为 阅读全文
posted @ 2022-03-25 22:06 275307894a 阅读(43) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这步根号是实在想不到。 考虑我们最优策略是什么,显然我们目的是消耗最多的动能,容易发现如果一对点直接有边并且高度相等,那么这对点是可以消耗掉目前为止所有动能的。 那么目的就是找到一个点能走到的点中高度最低的等高点fi,那么答案就是2hifi。 正着做不太好做,考虑反过来, 阅读全文
posted @ 2022-03-24 22:11 275307894a 阅读(60) 评论(0) 推荐(0) 编辑
摘要:题面传送门 大诈骗题。 发现对着题目中那个东西不太好想,所以考虑没有被点亮的点,发现如果满足题目中那个条件,那么没有被点亮的点构成一个包含1的联通块。 众所周知联通块个数等于点数减边数,然后就可以用这个东西开个线段树随便维护一下最小值就好了。 也不用LCT,只要两个点在a序列中的排名就好了。 时间复 阅读全文
posted @ 2022-03-21 22:30 275307894a 阅读(145) 评论(0) 推荐(0) 编辑
摘要:题面传送门 首先你必须了解的是SG定理,设fSS状态对应的SG值,则设S可以到达的状态为T,则fS=mexfT。 如果S能被划分成若干个互不影响的状态,记为S1,S2,,Sk,则fi为所有fSj的异或 阅读全文
posted @ 2022-03-20 18:38 275307894a 阅读(55) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2022-03-20 16:40 275307894a 阅读(0) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2022-03-20 16:29 275307894a 阅读(0) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2022-03-20 16:23 275307894a 阅读(0) 评论(0) 推荐(0) 编辑
摘要:题面传送门 先来考虑l=1,r=|S|怎么做。 首先显然可以先跑个SA数数本质不同子串个数。 然后再对原串建一个SAM,容易发现就是将询问串在原串上面跑匹配,匹配完了以后就可以计算以当前节点为左端点有多少个右端点是不重复且在主串没出现过的。 然后如果询问变成一段区间了那么就线段树合并维护一下en 阅读全文
posted @ 2022-03-19 22:08 275307894a 阅读(38) 评论(0) 推荐(1) 编辑
摘要:题面传送门 完全颠覆了我对于二进制分组的认知,本来以为那东西只能优化多重背包还被单调队列吊起来打来着。 首先这个题如果不强制在线可以发现就是个AC自动机sb题。 但是问题是它强制在线了,就有一些奇技淫巧来做。 首先显然可以对询问分块,但是有一个26的常数的根号显然跑不过去。 但是可以二进制分组呀。 阅读全文
posted @ 2022-03-19 13:14 275307894a 阅读(50) 评论(0) 推荐(0) 编辑
摘要:题面传送门 首先最大值最小肯定想到二分。 然后二分相当于问一个区间是不是有k种颜色。 一个简单粗暴的想法就是树套树算有几种颜色,O(nlog3n),能过就有鬼了。 发现如果后面有一个点的前驱在这个区间以前,那么一定有一种颜色没有出现过。 所以只要维护主席树维护后缀min,然后询问的时 阅读全文
posted @ 2022-03-18 20:45 275307894a 阅读(24) 评论(0) 推荐(0) 编辑
摘要:题面传送门 如果做过这个dp套路的话感觉这题到不了黑? 显然可以先离散,然后求出分出来每一段的最大值。 因为一段的最大值中这个最大值没法放到更小的地方去,所以只能放在最大值为这个值的位置。 容易得到一段长度为Len的位置,要求最大值为A的方案数为ALen(A1)Len 然后 阅读全文
posted @ 2022-03-18 16:31 275307894a 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题面传送门 感觉这道题比较屑? 首先考虑爆枚线段。 然后考虑两个线段能构成矩形的条件,大概就是中点相同并且圆半径相同。 然后这样的两个线段一定能构成一个矩形。 据说有个结论是矩形个数不超过O(n2n)? 所以直接爆枚就好了。 但是实际上不用,因为要求的是最大,所以让夹角最大显然是最大 阅读全文
posted @ 2022-03-18 10:48 275307894a 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这个题之所以能黑不是因为它难想而是难写吧…… 这个东西名字叫广义线段树那看上去和线段树应该没啥大区别除了时间复杂度不大对之外。 考虑普通线段树的复杂度证明,就是一定有一个节点将这个区间从中间断开,然后两边分别是单侧递归的。 设Xl1在线段树上的叶子节点,Yr+1在线 阅读全文
posted @ 2022-03-18 09:41 275307894a 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题面传送门 因为每次有一轮打出一发就不打了的限制所以不能直接期望去算。 考虑一个点i之前如果打出了j个技能,无论这j个技能是啥,i这个点都会被打rj次,这启发我们设fi,j1i点打出j次的概率。 有了这个就可以算每个点被打出的期望了,根据期望的线性性直 阅读全文
posted @ 2022-03-17 15:24 275307894a 阅读(26) 评论(0) 推荐(0) 编辑
摘要:题面传送门 首先我们考虑一个两个已经是点双的点集怎么合并。 显然是找到两条最小的且跨立的边连起来对吧。 但是你会发现其实不用两个都是点双,其中一个是,另一个只要是链,然后那两条边连两个端点即可。 所以可以先一遍做出fi,x,y表示i点集构成的链,x,y为端点的最小值。 然后再dp出 阅读全文
posted @ 2022-03-17 14:06 275307894a 阅读(50) 评论(0) 推荐(0) 编辑
摘要:题面传送门 终究还是太菜了,赛时没冲出来不说了,到最后搭了个拍才发现自己错在哪里。 看上去这种异或题肯定是扔到Trie上去。然后看上去就是个先确定前多少位相同,然后一位1变成0然后随便算? 设fu为Trie上u这个点的子树内的答案,然后发现好像不太好算? 因为如果x这一位为 阅读全文
posted @ 2022-03-16 18:02 275307894a 阅读(59) 评论(0) 推荐(0) 编辑
摘要:题面传送门 因为有50pts都是k=n所以先考虑这个。 考虑从后往前扫,如果扫到当前点发现当前点是亮的,那么当前点一定会操作一次,因为前面的点操作不到当前这个点。这样可以做出最小的步数。 然后交上去就有80pts了( 观察这个东西不难发现一个性质:如果i在最优方案中没有被按到但是我按了,那么 阅读全文
posted @ 2022-03-15 12:42 275307894a 阅读(50) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这个k这么小看上去一脸状压dp 序列操作可以差分。那么原来的问题就被转化为序列上有2k个点,可以花费1的代价将一对长度固定的点消掉。问最小的代价。 然后就可以状压dp,先对每个点跑一遍bfs算出以这个点和剩下点消掉的最小代价,然后状压时可以钦定当前操作一定操作未被操作中编号最 阅读全文
posted @ 2022-03-14 21:31 275307894a 阅读(29) 评论(0) 推荐(0) 编辑
摘要:题面传送门 先看第一问,设fii次操作后的深度总和。 考虑选择一个点让它扩展,那么得到的叶子节点的期望深度就是fii+1+2,就可以O(n)解决问题了。 再看第二问,设fi,ji次操作,深度为j的概率。 枚举左边子树的操作数k,再枚 阅读全文
posted @ 2022-03-13 20:51 275307894a 阅读(37) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这种删边的东西看上去一脸不可做,肯定要反过来加边。 但是问题是反过来你又不知道哪些点被删了。 看上去可以启发式分裂,但是两个log又只有1.5s看上去就被出题人针对。 又有一个套路是跑删边时间的最大生成树,每次删掉树上一条边,看上去可以简单一点。变成树上的联通块问题。 这种联通块类似问题 阅读全文
posted @ 2022-03-13 14:22 275307894a 阅读(21) 评论(0) 推荐(0) 编辑
摘要:题面传送门 为啥没人写好想又好写的 O(nlogn) 做法呢? 观察这个操作的实质实际上就是让 x 子树内的点到 x 点路径中离 x 点最近的白点变黑,如果没有白点则不操作。如果设 bii 点到根路径上的白点数,则这一操作相当于先区间减一, 阅读全文
posted @ 2022-03-12 22:42 275307894a 阅读(22) 评论(0) 推荐(0) 编辑
摘要:题面传送门 看上去像THUPC的签到题。 首先考虑一个O(nlnn)的暴力,就是先枚举一个长度,然后往后暴力倍增,如果不能倍增就直接跳出。如果能到序列末尾那么这个东西就是可行的。 如何判可行大概就是manacher求个回文就好了。 然后发现对于i>n2只需要倍增一次,剩 阅读全文
posted @ 2022-03-11 22:01 275307894a 阅读(41) 评论(0) 推荐(0) 编辑
摘要:题面传送门 题目中怎么不说明这个可以取空区间啊害我调半天。 这个重复的算一次就容易想到区间数颜色的相关套路,就是每个点记录前面最近的点。 离线询问然后扫描线,记录线段树上每个位置的值为到当前点的区间的和,那么需要做的就是两种操作: 将上一个这个数的出现位置+1到现在的位置都加上一个数。 查询区间历史 阅读全文
posted @ 2022-03-10 16:01 275307894a 阅读(25) 评论(0) 推荐(0) 编辑
摘要:题面传送门 当时好像以为巨大多难写所以扔了,然后发现好像很好写来着? 首先这个答案肯定小于等于2,因为如果有至少一个偶数,那么对那个奇数做一次就连到一起了。如果两个都是奇数那么最多对两个分别做一次就好了。 那么只要看答案是不是01,如果不是那么答案一定为2。 答案是0很好算,只需要 阅读全文
posted @ 2022-03-10 15:10 275307894a 阅读(37) 评论(0) 推荐(0) 编辑
摘要:题面传送门 感觉上这种xor问题肯定是放到Trie上。 考虑对于每一种询问的权值x有没有啥快速的做法。容易想到一种在Trie树上dfs的做法,即对于dfs到的每一个节点,如果答案的这一位一样,那么就朝两边dfs下去,如果不一样,那么一定是大的那边最小的减去小的那边最大的。这样就有了一个$O(2k 阅读全文
posted @ 2022-03-10 13:55 275307894a 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题面传送门 感觉是个神仙题。有一堆性质。 首先发现可以排序。再算的时候用可重排列算算就好了。 然后发现排序之后那个子序列就是假的,直接算子串就好了。 然后发现子串也是假的,其实是个前缀。就可以写一个O(n6)的大暴力dp 考虑对于一个ai,如果其小于i,那么$a_i\times\min 阅读全文
posted @ 2022-03-09 19:34 275307894a 阅读(41) 评论(0) 推荐(0) 编辑
摘要:题面传送门 听说和THUPC的切切糕是一个题目? 首先考虑暴力dp:设dpi,j表示做了i次,正了j次的双方最优策略情况下的答案。 显然有状态转移方程:\(dp_{i,j}=\max\limits_{0\leq d\leq k}{\min(dp_{i-1,j}-d,dp_{i-1, 阅读全文
posted @ 2022-03-04 19:21 275307894a 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题面传送门 考虑一个O(n2logn)的暴力。 枚举模数p,然后转化bi=aimodp并将b排序。 如果当前两个数加起来大于p,则一定选b最大和次大值最优。 如果小于p,那么可以双指针。 这样就是O(n2logn)的。 然后在考场上如果想要更多分,那 阅读全文
posted @ 2022-03-03 20:32 275307894a 阅读(55) 评论(0) 推荐(0) 编辑
摘要:题面传送门 感觉自己可能哪里写烦了,写了个O(nlog2n)的大暴力。 考虑对于一个点u求有多少个点能和他进行贸易。 容易发现在一次语言的传播过程中,如果ux>y的路径上,那么u能和x>y路径上所有点进行交易。 所以可以将这个路径上所有点的x>y都打上标记,那么 阅读全文
posted @ 2022-03-03 15:58 275307894a 阅读(29) 评论(0) 推荐(0) 编辑
摘要:题面传送门 首先显然有一个O(2mmlogm)的容斥,但是和这道题好像一点关系没有。 所以这道题的关键就是不要去想容斥 发现如果现在深度从下往上确定到第i条边,那么我们只需要关注底下往上还没有一条边的限制的最近的即可。 因为如果最近的都满足了,那么剩下的一定也能满足。 然后就可以写出一个 阅读全文
posted @ 2022-03-02 21:00 275307894a 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题面传送门 直接对着这个式子是真的不好做,考虑把它转化成下降幂多项式。 设原来的多项式是f(x)=i=0maixi,现在的多项式是g(x)=i=0mbixi_ 然后原式转化成这个样子:\(\ 阅读全文
posted @ 2022-03-02 19:01 275307894a 阅读(41) 评论(0) 推荐(0) 编辑
摘要:题面传送门 考验了选手平常的抄作业能力 首先有一种方法就是哪个多选那个。 但是有些时候真理掌握在少数人手中,就假掉了。 然后又可以谁之前对的多谁说话牛逼一点。 但是万一他刚好错了呢? 所以可以每个人按照之前错的次数赋权值,一般是一个底数小于1的指数函数。 然后根据这个权值随机化,如果你rp好就可 阅读全文
posted @ 2022-03-02 18:48 275307894a 阅读(67) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这道题好像有两种做法。 做法一直接无脑上Boruvka,然后在树上dp,保存最近的值和和最近值颜色不同的最近值。 但是好难写,不想写怎么办。 考虑MST的一个性质:将边集分成两部分,对两部分分别做MST,然后将两边剩下的边合起来做MST就是现在的MST了。 所以可以考虑淀粉质。 可以确定 阅读全文
posted @ 2022-03-01 19:38 275307894a 阅读(47) 评论(0) 推荐(0) 编辑
摘要:题面传送门 容易发现这个S序列其实是假的,只要统计Fi,j表示i传递到j几次就好了。 然后容易想到状压dp,设fi,S为到了第i个位置,已经放了j的方案数。 可以枚举当前这个位置放什么,计算贡献即可,可以得到一个O(n22n)的做法。 发现形如$g_{i,S} 阅读全文
posted @ 2022-03-01 15:41 275307894a 阅读(42) 评论(0) 推荐(0) 编辑
摘要:题面传送门 一直以为点分治的复杂度就是logn×dd为序列上复杂度。 现在才发现好像可以和序列上做到一样的复杂度。 首先点分,然后计算过重心的答案。 发现似乎是一个树套树要干的事情。然后复杂度高达O(nlog3n)。 但是似乎不用树套树? 考虑先将当前联通块的所有点按 阅读全文
posted @ 2022-03-01 14:11 275307894a 阅读(34) 评论(0) 推荐(0) 编辑

浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示