xcpc
文章平均质量分 52
lamentropetion
---
展开
-
The 2021 CCPC Weihai Onsite ADGJM
一开始border有很多,每次操作之后,border只剩下操作位置左边的所有border,因此可以考虑把所有border求出来,用差分数组维护即可。注意到 sigma ai <= 1e5,ai 的不同种类数是 sqrt(1e5) 级别的。很明显的组合思路,直接对于每种糖果去分配给队伍即可,即在 k 个队伍里选 ai 个分配。首先周期 = 串长 - border,那问题转化为修改对 border集的影响。但是这样的复杂度是 nk 的,考虑优化。对于一排相同的 ai,需要再乘个幂次。原创 2023-12-06 10:44:15 · 483 阅读 · 0 评论 -
2022 China Collegiate Programming Contest (CCPC) Guangzhou Onsite
求组合数,考虑先分配再排列。原创 2023-12-06 10:25:43 · 550 阅读 · 0 评论 -
2022 China Collegiate Programming Contest (CCPC) Guilin Site
题意思路数所有周围没L的格子。原创 2023-12-05 00:00:09 · 536 阅读 · 0 评论 -
2022CCPC绵阳 ACGHM
首先注意到贡献可以按深度统计,对于每个深度dep,贡献是在dep深度中属于的子树种类数,如果在该深度中子树存在点,那么该子树的贡献就要 + 1。设dp(x, i, j)为,已经进行了x轮,A选了i个数,B选了j个数,的最大得分差(这里指A - B)注意到每一轮都是较小的那个数被删除,因此每次会删至少一半的数,因此轮数一定很少,暴力模拟即可。如果是A操作,决策就是选一个a或者禁用一个b,如果是B操作,决策就是选一个b或者禁用一个a。状态数为 1e5 * 10 * 10,很够,因此一定就是这个做法。原创 2023-11-16 15:06:04 · 218 阅读 · 0 评论 -
【反悔贪心】2022ICPC南京 G
这里的做法是反悔贪心,先默认每次遇到0的时候合并,然后在遇到-1发现不够的时候反悔,把之前的合并变成加1即可。首先容易发现,合并操作对平均攻击力有贡献,但是加一个1就没有贡献,因此首先考虑每次遇到0的时候都合并。但是很快发现如果这样的话,遇到-1就不一定有足够的1给你合并,因此在遇到0的时候还得考虑后面够不够。但是现在反悔,先加1变成1 1 1,再合并变成 1 2。在反悔的时候,考虑维护的东西在反悔之前和之后的差值。这样 攻击力之和就 + 1, 个数也 + 1。原创 2023-10-24 20:32:03 · 173 阅读 · 0 评论 -
【二维差分】ICPC南京 A
那么我们要维护有洞会让袋鼠消失多少,只有在u<=x<=d,l<=y<=r的才是有效被消失的袋鼠,那么就维护mp[i][j]表示从(i,j)点开始会让多少只袋鼠消失,发现对于点(x,y),只会对一个矩形内的数加1,左上角为(u-x,l-y),右下角为(d-x,r-y)的矩形,变成二维差分维护,那么在二维差分中给一个点加1等于给它往右往下的全部点加1.所以记录u,d,l,r,表示在移动时所产生的最小矩阵的上下左右边界,这样剩下的袋鼠数量就是有(d-u+1)*(r-l+1)个。原创 2023-10-22 02:16:49 · 254 阅读 · 0 评论 -
【期望+状压DP】 2021 CCPC G
注意到在转移过程中需要用到用了哪辆车的两点之间的最短路,因此我们考虑预处理这个最短路,这个就类似于分层图的思想搞一搞就好了。设 dp[x][st] 为 当前处于 x 结点上,且经过的结点状态为 st 的最小期望路径长度。要求最小的期望长度,我们可以遍历所有可能的路径,统计这些路径的期望长度的最小值即可。可能关于期望的状压DP用记忆化搜索会好处理一点(?这里很经典的处理方式是状压DP。注意到 k 的范围是18,可以考虑状压。这里的状压DP我们用记忆化搜索解决。原创 2023-09-23 00:05:12 · 230 阅读 · 0 评论 -
【组合计数 or 树DP】2021 icpc 上海 G
【代码】【组合计数 or 树DP】2021 icpc 上海 G。原创 2023-09-01 00:33:02 · 198 阅读 · 0 评论 -
【暴力DP】2021 icpc上海 I
设 dp[i][j][k]表示 前 i 个物品,已经翻倍了 j 次,A点数 - B点数为 k 的最大价值和。注意数组里不能有负数,要加个偏移量 P。然后分为这6种决策分类讨论就好了。原创 2023-09-01 00:30:33 · 175 阅读 · 0 评论 -
【树DP】2021ICPC南京 H
然后考虑不存在tv = 3的结点,那么就是一次性走到底,再去遍历其他结点,此时贡献为 sum[u] + mx,其中 mx 为所有子节点中最大的 a[v]注意到,对于一个结点 u ,如果它的所有子节点中没有 tv = 3的,那么就肯定是沿着一棵子树走到底,然后去走剩下的子树。因为怎么转移和这些子节点中是否存在 tv = 3的结点有关,那么考虑先去把这些结点遍历一遍,看看是否存在,然后去转移。如果所有子节点中有 tv = 3的,那么可以先走到某个子节点,然后再走到这个 tv = 3的结点。原创 2023-08-30 21:52:15 · 139 阅读 · 0 评论 -
【打表】ccpc 2022威海 G
把gcd(kx^x,x)的值打出来,可以发现是个循环节。这种题大概率只能打表。原创 2023-08-01 14:45:03 · 74 阅读 · 0 评论 -
【长链剖分】icpc 2022西安 L
【代码】【长链剖分】icpc 2022西安 L。原创 2023-08-01 09:57:12 · 220 阅读 · 0 评论 -
【构造】icpc 2022济南 E
给定两个整数N和K,是否存在一个排列使得,对于这个排列,每个长度为K的区间内奇数个数奇偶性是一样的。根据之前的特殊情况猜:区间内奇数和偶数的个数相同。当K=2时一定满足,显然奇偶交替摆放即可。然后,我们猜一个结论,去猜该怎么特殊化。然后就可能猜对了,确实是这样子构造的。构造题,先从最特殊的情况开始考虑。推广得,K是偶数时,都是合法的。当K=1时,显然不可能满足。原创 2023-07-31 14:18:50 · 370 阅读 · 0 评论 -
【枚举+结论】icpc2022 济南 A
其实错误的思路都有个共同点,就是猜了结论之后没有去想为什么,在想为什么的过程其实就是pushup归纳的过程。然后,需要把贡献算出来之后再去排序,去掉排序后的m个大的,这里也有点问题,应该把贡献算出来了之后再去排序。考虑最后会变成什么数,手摸了几个发现,都是2,不论本来的集合是不是包含2。然后考虑去枚举最后变成什么数,猜测最后会变成集合中本来有的数,也wa2了。首先第一个,最后变成的数,一定是集合中某个数/2之后的值,这点需要观察到。然后要去掉m个,直接考虑去掉最大的m个。原创 2023-07-31 15:47:08 · 395 阅读 · 0 评论 -
【双指针优化DP】The 2022 Hangzhou Normal U Summer Trials H
然后就想了一个n^2的做法,枚举两个指针,第i个站点从第p个站点转移,讨论是走过来的还是骑过来的,计算贡献。但是这样的话从什么位置转移过来就不知道了,因此需要预处理从位置和花的钱数的关系。但是这样n^2肯定超时,因此我们去考虑特殊性质来枚举上一个状态。设dp[i][j]为到达第i个站点,已经花了j元钱的最小步数。特殊性质是,K很小,因此考虑去枚举这次花了l元钱到第i个站点。因为只有1e6个站点,因此可以以站点作为阶段。注意到K很小,因此可以尝试把这个当作第二维。原创 2023-07-27 19:31:59 · 225 阅读 · 0 评论 -
【树上点对问题】Tree Problem
如果关注的是路径经过边,那么就考虑一条边两端的连通分量。对于树上的一对点,我们往往考虑更换枚举对象。如果关注的是路径经过点,那么分成两部分考虑。另一部分是子树整体和上子树的贡献。一部分是这个点的子树之间的贡献。原创 2023-07-27 14:58:17 · 174 阅读 · 0 评论 -
【DP】The 2022 ICPC Asia Regionals Online Contest (II) B Non-decreasing Array
要满足该数列不下降,N-2次询问,问操作i次之后。2.选择2~N的一个数,改变这个数为任意值。首先有个结论:改变一个数等效于删除这个数。1.选择2~N的一个数,删除这个数。原创 2023-07-27 16:44:46 · 105 阅读 · 0 评论 -
【线性筛】ccpc黑龙江省赛 F
线性筛原创 2023-02-28 11:11:39 · 1181 阅读 · 0 评论 -
icpc网络赛第二场 J-A Game about Increasing Sequences
简单题,但是不会原创 2022-09-27 16:59:39 · 623 阅读 · 0 评论