icpc补题
文章平均质量分 53
lxrrrrrrrr
这个作者很懒,什么都没留下…
展开
-
2021icpc南京 J. Xingqiu‘s Joke(数论)
每组测试数据输入两相异整数a,b (1≤a,b≤1e9),每次进行如下三种操作之一,直至a,b中至少有一个为1,输出最小步数。小优化:unorderedmap在多查询时会比map快很多,但如果想传入一个pair,需要自己写一个hash函数。可以考虑将c分解质因数,通过分解出的质因数和12操作一起记忆化搜索。也就是我们要通过1,2,3操作,使得a变成1,而c会限制操作3。而假设3操作中a,b同时除以g,那么a和b的差值也会除以g。再1操作和2操作中,a-b是不会变的。,每一次除g,相当于。原创 2022-10-26 19:26:02 · 401 阅读 · 0 评论 -
2019icpc香港 G. Game Design(构造)
每个叶节点会诞生怪物,并开始沿着路径向根节点走,你要有k种花费最少的金钱建造防御塔的方案,使得所有怪物都被防御塔阻拦。题意为让我们建一棵树,并为每个节点分配权值,在该节点建防御塔会花费ci的金钱。的贡献(只要让他的c值等于以他为根子树叶节点c值之和,他就可以提供贡献)用dfs实现,每一层向右建一个2的子树,向左递归k/2。号节点,都等于以他为根的子树叶节点权值和,所以。这样我们就可以用二进制拼凑拼出任意的。输出设计的这棵树和每个点的权值。我们可以借助二进制拼凑的思想。,如果需要它,它就可以提供。原创 2022-10-17 13:57:26 · 440 阅读 · 0 评论 -
2019icpc香港 E. Erasing Numbers(贪心)
所以我们可以巧妙的维护一个tmp,遇到想要消掉的数++,不想消掉的数--按题目意思,连续三个1或连续三个0可以消掉两个,使得多出的部分减2。11011可以先变成111进而变成1,贡献相当于111。也就是说如果我们可以把多出的这些部分按题目意思消掉,,每次可以选择相邻的三个数,将最大和最小的数删除。首先我们要想明白一件事,当一个数组中大于。,比他大的数和比他小的数的数量之差等于。可不可能是最后被保留下来的那个数?本身,是不能被跨越的,所以经过。而对于在排列中任意一个数。假设我们多出的是大于。原创 2022-10-16 17:40:45 · 397 阅读 · 0 评论 -
2021ccpc桂林 E. Buy and Delete(n次dijkstra求最小环)
我们假设有两个点A,B,那么A->B 的最短路加上 B->A的最短路(前提是AB强连通)就是一个有关于AB的最小环。题意为给一张有向图,每条边有对应价格,Alice有一个初始金钱c,它可以从图中买一些边来构成一个新图。Bob每一次删除可以删除一些边的集合,条件是集合中不能有环,问Alice最多能让Bob删几次。因为可以在第一次时,把每个环都拿一条边出来,这样肯定不会构成环,又能保证第二次拿的时候没有环。首先我们稍微想象一下画个图就可以知道,任何一张图都可以拆成两张无环图组合在一起。如果买不起环,答案为1。原创 2022-10-14 23:42:03 · 479 阅读 · 0 评论 -
2021ccpc桂林 K. Tax(bfs最短路+dfs)
题意为给我们一张有向图,每条边长度为1,每个边有一个编号,当你第i次经过一条边时要支付i*w[i]的费用。如果dis[now]+1==dis[next],说明now是从1-next的最短路上的点。题目保证沿最短路行驶,问从1出发到达每个点的最小花费。首先我们从1开始bfs一遍,找出去其他点的最短路。之后只要搜出每个点的所有最短路花费的最小值即可。就可以把这条边加进去求一个答案。原创 2022-10-14 23:30:05 · 373 阅读 · 0 评论 -
2020ccpc绵阳J. Joy of Handcraft(线段树)
结果也就是3 3 2 3 3,因为第一个位置被涂过最大的数是3,第二个是3,第三个是2,,,题目大致意思是,给我们一个一维数组,每次操作有一个t和x,每隔t步将连续t个空位涂上x。所以我们可以想想其他办法,很容易发现,相同步数只要保留最大值就好,其他都会被覆盖。但线段树直接修改会tle,因为每次修改最多On,一共m次就会爆。这样我们即便改Om次,每次步数不同,复杂度也是logn的。比如同样是隔一步涂一次,涂5可以完全覆盖涂3。总复杂度是On*logn*logn,可以过。最后问每个位置被涂过最大的数是多少。原创 2022-10-10 18:41:56 · 216 阅读 · 0 评论 -
2021ccpc威海H city safety(最小割,最大权闭合子图)
先把所有的收益全部加上去。之后计算最小割,使得对于每份收益,要么放弃要么支付对应的费用。我们看n = 200非常小,直接floyd暴力一遍所有点的算法,矩阵存起来。3,每个原图中的点连向 汇点,表示支付修复这个点的费用。连接对应与i点距离为p的原图中的点,容量为INF。为对于i这个点,小于等于p距离的点全选。来限制割边,必须先放弃p才能放弃p+1。的收入,如果多个满足取最大值。答案等于总收益减去最小割。个点都被修复时,就会获得。答案转化为总收益-最小割。然后开始建图,我们定义。建出来的图大概长这样。原创 2022-09-08 00:25:21 · 622 阅读 · 0 评论 -
2021ccpc威海A(签到),D(字符串哈希),G(组合数),J(签到)
从圆盘的边缘以某个角度发射一颗小球,小球在圆盘内部反弹运动,问第一次回到原点之前一共碰撞了多少次。也就是说,最小的 n 即为最小的 n 使得 360/nα等于一个整数,利用 gcd 算一下即可。首先二叉树中每个节点最多有3个度,如果有一个节点度大于3了,那么这棵树就不是二叉树。首先#肯定没有对应匹配的字母,我们只需要考虑#之前的或之后的有几个前缀等于后缀即可。题意为给我们一个字符串,问将一个字母变成#后,有多少个不同的前缀等于后缀。ai虽然在1e5,但总和不超过1e5,所以他的种类最多有。原创 2022-09-08 00:02:45 · 591 阅读 · 0 评论 -
2021ccpc威海 M 810975(容斥/生产函数/多项式快速幂)
题意很简单n场比赛,赢了m场,最大连赢k场有多少种排列。原创 2022-09-06 19:48:31 · 1451 阅读 · 5 评论 -
2018icpc沈阳C - Insertion Sort(排列组合)
这里前面排好序是124,后面56保持有序,即满足LIS大于等于n-1,4在前面可以随意放,3在后面可以随意放,有。题意:问长度为n的所以排列中,在前k个数排好序的情况下,最长上升子序列大于等于n-1的排列数,对p取模。3,蒋val等于k+1拿到前k个,替换一个数拿到后n-k个,例如下面这种情况。2,前k个排完序,前面贡献k个上升,后面n-k个贡献n-k-1种上升,有。种情况,(前k个任意,后n-k个LIS等于n-k-1)1,前k个排完序整个数组有序,最长上升子序列为n,有。讲以上所有答案累加,得出答案为。原创 2022-09-04 15:28:50 · 251 阅读 · 0 评论 -
2021 icpc南京站 D - Paimon Sorting(主席树+打表)
因为这里并不是前i-1中最大值贡献的2次交换,而是前i-1中最大值出现第二次之后每个数也都额外贡献了交换。可以很明显的看到,在第i层排序中,会将第i大的元素排在第一位,并将比i大的所有元素全部排好序。这里加个5进来 答案是res[i-1]+2+sum(4,3)=res[i-1]+4次。之间的关系,那么我们可以考虑使用数据结构,一个个把数插进去求解。我们可以先把他的排序方式抄下来,讲每一层输出出来试着找找规律。问对于指定数组的每一个前缀,派蒙的排序方法要交换多少次。加上前i-1个元素中,比。原创 2022-09-01 23:37:54 · 1340 阅读 · 0 评论 -
“蔚来杯“2022牛客暑期多校训练营2 K Link with Bracket Sequence I(括号dp)
题意:给我们字符串n和n的长度,让我们构造一个长度为m的字符串,使得n是m的子串,问有几种构造方式。表示我们构造了长度为i的字符串,已经和n匹配了j个字符,并且左括号比右括号多k个。还有注意下他数据到200,牛客数组开500*500*500内存就爆了。每当我们多构造一个,要么放左括号要么放右括号。别用memset,也别全清空,都会t掉。注意特判下j等于0,i和k的边界情况。如果正好匹配上了,那就可以从。清空f的时候用m,n,m清空。原创 2022-08-24 23:14:08 · 217 阅读 · 0 评论 -
“蔚来杯“2022牛客暑期多校训练营1 J Serval and Essay(图的启发式合并)
首先我们可以想到,如果这个点只有一个父节点,当且仅当他的父节点被激活时,他才被激活,所以可以将他和他的父节点合并,把size小的集合合并到size大的集合里,同时把入边和出边合并到大集合中,如过他的出边连接的点的入边减少成了1(也就是合并之后下一个节点的入边变成1了),我们就继续合并,这样合并后的图就不存在桥。题意为给定一张无向图,对于每一个点,只有当他的所有入边的点都被激活时,他才被激活,并且可以被用于激活出边的点,在最开始,可以无条件指定一个点为激活状态,问最大的可激活点为多少。原创 2022-08-22 23:53:45 · 110 阅读 · 0 评论 -
“蔚来杯“2022牛客暑期多校训练营2 Falfa with Substring(二项式反演,ntt,组合数学)
n=6,k=1,那么我们在计算bit***这个字符串的时候,实际上已经计算了一次bitbit。而我们计算***bit的时候,又算了一边bitbit,所以实际上我们算的f(k)是有重复的。这里特别解释一下为什么要乘上组合系数,因为我们之前计算f(k)的时候,假设我们计算的是。题意为 定义 $$F_{n,k}$$ 为长度为n的字符串中出现k个bit的字符串数量。则f(k)由恰好出现k次,k+1次....n次累加起来,在乘上组合系数,有。让我们求 $$F_{n,0},F_{n,1}.....F_{n,n}$$原创 2022-08-22 22:57:53 · 166 阅读 · 0 评论 -
2022“杭电杯”中国大学生算法设计超级联赛(10)Winner Prediction(最大流dinic)
1的得分是2 2 3 4的得分都是1,他们都还能再赢一场,建出来的图就长这样。每场比赛赢的人加一分,输的人不扣分,已完成的会给出结果,问第一个人可不可以获胜。首先贪心的想,已完成比赛的分数我们无法确定,但未完成比赛我们可以选择让谁获胜。有1的比赛肯定让1获胜,这样全部进行完之后,1的分数就确定了。题意为给n个人,给出已完成和未完成的m1和m2场比赛。然后源点向比赛连边,比赛向人连边,人向汇点连边。每个人流出去的流量最多为s[i]-s[1]a和b比赛之后流出去的流量为1。原创 2022-08-20 23:23:00 · 287 阅读 · 2 评论 -
2022“杭电杯”中国大学生算法设计超级联赛(5)Count Set(分治ntt,生成函数,组合数学)
选一个点,旁边的两个点就不能选,就转化为一个从n-3个点中选m-1个不相邻的点,转化为链式。得到这个答案就可以先算出每个环的生成函数,然后分治合并,取最后答案的第k项就是答案。题目为给定我们一个n的排列为p,让我们从1-n的序列中选出长度为k的子序列。不选一个点,那么转化为一个从n-1个点选m个不相邻,转化为链式。我们知道从n个点选m个不相邻的点的链式不相邻问题的答案是。问题就转化为从数个环上选出k个点,使得所有点都不相邻。表示从长度为n的环中选i个点的选法。我们计算每一个环的生成函数,使得。原创 2022-08-19 22:42:39 · 343 阅读 · 0 评论 -
2021icpc沈阳 H Line Graph Matching(tarjan 求桥)
总损失是a+b+c,这样显然是不划算的,我们可以使桥c-奇数变成一个偶数图,他们可以一个都不删掉,只删a即可,所以如果是奇数-桥-奇数,这个桥就不能参与取min了。给定一个无向图,将原图中的点换成边,边换成点,如果原图中边1和边2公用一个端点A,那么生成图中边A的权值等于原图中边1+边2。我们可以看出,其实题意就是再原图中,如果两条边有共同顶点就可以选,同一条边只能选一次,求最大权值和。如果是 奇数-桥c-奇数,我们如果想删桥c,就要在左边删一个a,在右边删一个b,然后删掉桥c。首先这个题意有点曲折。..原创 2022-08-14 13:57:04 · 764 阅读 · 2 评论 -
2021icpc上海补题E,D,G,I,H,K
比如11,00,101,010这种,根据题意首先不可能全是1或0010一次会变成101,第二次会直接000,也肯定不行而我们发现,像1001,0110这两个串,他们是在此变换中互逆的,可以考虑用他们构造循环1001-> 0110 -> 1001原创 2022-05-17 13:50:07 · 698 阅读 · 0 评论 -
2022icpc昆明补题,K,D,F
题意规定一种完美分配方法,把一个序列分成A,B两个序列,A序列不下降,B序列不上升,AB可以为空,数字要按在原序列的顺序插入原创 2022-04-17 20:24:35 · 984 阅读 · 0 评论