ACM补题
文章平均质量分 50
想出成果的acmer
当你越来越漂亮的时候,自然有人关注你,当你越来越有能力时,自然会有人看得起你,改变自己,你才有自信,梦想会慢慢的实现,要做好你自己,懒惰可以毁掉一个人,勤奋可以激发一个人,不要等到夕阳西下的时候才对自己说如果当初…如果…我就会怎么样,之类的话,都已经晚了,我只想告诉你一句话:要做一个连自己都羡慕的人!
展开
-
2021 ICPC 上海 H(Kruskal重构树)
给定n个点m条边的无向图,每个点具有一个点权,到达之后可以累加上这个权值的能力,而通过某一条边需要当前的能力值大于这条边的边权才可以(通过后能力值不会减少)。所以建好树之后,我们就可以对于每个查询从叶子开始往上爬,如果父节点的点权(对应选择边的边权,也就是合成的代价)原创 2022-12-15 22:00:03 · 235 阅读 · 0 评论 -
2021 ICPC 沈阳 J (bfs)
bfs,搜索从0000到其他状态的最短路。然后哩,我们可以发现从状态a转移到b,相当于从0000转移到b-a.相当于有个偏移量,直接到a状态了,搜索b-a需要多少步即可。给定四个数0-9的数,变成另外四个0-9的数。每次可以选择1-4个连续的数,都+1或者都-1 (mod 10).合法的状态转移我是用dfs,3^4暴搜搜出来的。没想到可以转化成b-a,蚌埠住了。原创 2022-12-15 11:17:11 · 367 阅读 · 0 评论 -
2022 浙大城市学院 新生赛 补题
比较套路的题,这n次位运算是独立的,可以对于每一位提前预处理出来,以0和1为起点能否变成1. 然后对于每次查询,从高位到低位处理,如果0能变成1直接这一位填0,如果1才能变成1在满足限制的前提下这一位填1,二进制特性,这一位选1比后边所有位都选1更优。给定n层的树,第i层有i个叶子,类似数字三角形。给定n次位运算,包括&、|、^.给定q次询问,每次可以选择[0,r]中的任意整数x,令x经过这n次位运算最大,输出选择的x.给定x、y、z,x和y都有a个1、b个0,z有c个0. 满足y原创 2022-12-14 22:07:06 · 405 阅读 · 0 评论 -
2018 ICPC 青岛站 C(思维) + E(二分)
而其他的位置即使浇水浇够了,也需要加上走过去的一次,因为n至少要浇水一次,必须要走下去,只有第n个数满足条件时可以少走一次。给定n个植物,分别在1-n的位置,然后有一个机器人在0这个位置,总共能移动m次,每次移动会给对应的植物浇水,使植物提高ai点防御力,求这些植物的防御力的最小值最大是多少。两次都选对应区间,覆盖两个区间再把中间的选上,或者覆盖两个区间的基础上交叉地把中间的区间选了。写代码的时候把n给复用了,导致一直wa,后来看了别人题解才发现自己很对,然后把变量改成len就行了,服了,太粗心了。原创 2022-12-14 20:51:58 · 579 阅读 · 0 评论 -
2020 银川 B(dp好难捏)
fi,j,k表示前i个数,分成j段,然后当前第j段已经选了+、-,只选了+,只选了-。(也可以再加上什么都不选,也可以用前j-1段已经选了+、-来代替)一个长度为n的数组,分成k个不相交的子段,每个子段的贡献是其中的最大值-最小值,求最大贡献是多少。0可以由1和2推得,也由前一个状态顺延(第i个数不选),也可以使第i个数单独成一段。2也可以由前j-1段选了+、-推得,也可以由前一个状态顺延(第i个数不选)1可以由前j-1段选了+、-推得,也可以由前一个状态顺延(第i个数不选)0表示当前这一段已经选了+、-原创 2022-12-13 17:35:28 · 287 阅读 · 0 评论 -
2021 ICPC上海站 D(思维),G(猜结论),I(01背包变形)
如果有偶数个儿子,自己分配,Cn2、Cn-22这样的,然后如果是奇数个儿子,留着一个儿子和该节点连向父节点的边配合,剩下的选俩、选俩直到都选完。给定n个物品,有体积和价值。假设x=a/b,然后发现就是个一元二次方程,然后如果Δ不是某个数的平方的话,是不符合题意的,因为x不能是无理数的。给定一棵n个节点的树,保证n是奇数,然后我们需要把这n-1条边分成互不相交的n-1/2组,即每两条边在一个组里,然后。f[i][j][k]: 前i个物品,有j个翻倍,然后集合1的体积和-集合2的体积和为k。原创 2022-12-12 22:07:01 · 347 阅读 · 0 评论 -
2022 ICPC杭州站 C(01背包,简单dp)
题目题意: 给定n个物品,体积为vi,其体积t∈1-vi分别对应一个价值wi,t。背包容量上限为k,若某个物品能放入背包,则必须完全放入;可以选择至多一个个物品作为特殊物品,其可以部分放入。思路: 由于每个物品的体积很小,至多为10.可以采用n * k * vi的dp方式. f[i][j][k]表示从前i个物品中选,体积为j且是否存在部分选择的物品。(k=1表示已经选择了某个物品部分选择,k=0反之亦然)PS: 注意将dp数组初始化为-INF,这样才能保证第二维里是恰好用了体积为j的物品.代码:原创 2022-12-07 14:19:10 · 1220 阅读 · 0 评论 -
2022 CCPC 威海 C(计算几何)
一句话题解就是当且仅当存在5个点不共线。即使4点共线,也只要找到剩下那个不共线的,就可以把他作为A。只要固定前4个点,然后O(n)遍历剩余的点,如果存在一个点和前4个点不共线,说明有解。暴力枚举哪个点作为中心点,即可求解。给定n个点,找5个点。使得中心点A,与其余四个点B、C、D、E组成的线段AB、AC、AD、AE的交点只有点A。原创 2022-11-08 15:32:49 · 324 阅读 · 0 评论 -
2022 CCPC 威海 G(队友真滴强)
打表发现是有循环的。因为假设x有cnt位,当这cnt位全都移动到左边之后,他们和异或就没有关系了,因为x只有cnt位。只需要k达到2的cnt次方,就会把后cnt位的数都变到左边,之后就重新进行前2的cnt次方的操作,每次k增加1对于kx^x的贡献能在前2的cnt次方操作中找到。简单来说就是循环节是2 ^(logx),每次kx ^x的增量一样。gcd(a,x) = gcd(x,a%x)给定数x,n组查询,每次查询[l,r]中有多少个数满足 gcd(k*x异或x,x) = 1.原创 2022-11-08 15:25:25 · 325 阅读 · 0 评论 -
2022 CCPC 威海 J (代码功底属实有点退步)
可以发现其实这个限制没有什么用,除非有限制个数为0个的。因为我限制了2个3,达到2个3之后就可以减少到2,就可以打破限制了,这样一直减还是可以减少到0。所以以限制个数为0个的查询进行分段,之后根据其他限制每个数尽可能地减少即可。给定数组a,两个人轮流操作,每次操作可以选一个正整数使得他-1。也就是说最多减少到0。但是额外有m条限制,在操作完成后,x这个数不得超过y次。注意如果限制2个0,也是有限制的。也就是说,可以设置边界为0个-1,这样就可以统一处理。当时赛场上也没想到,分开讨论的,敲的太麻烦了。原创 2022-11-08 15:18:07 · 485 阅读 · 0 评论 -
2022 CCPC 桂林 C
可以发现,操作2只有第一次有用,因为执行一次之后就变成回文的了。再执行个千八百边也没有用。而且什么时候复制对于前i项和的和也没有影响,因为恰好一半相对位置在初始数组的头,一半相对位置在初始数组的尾,偏移量是一样的。所以本质就两个结果,比较一下大小即可。其实只要发现操作2只有第一次有用就行了,之后枚举在哪一次用的reverse操作,时间复杂度纯纯够用。一个数组,两种操作。1:复制他自己,2:复制一个reverse版的自己在前边.执行恰好k次操作。求模1e9+7前提下,数组的前i项和的和最大是多少。原创 2022-11-01 19:22:51 · 146 阅读 · 0 评论 -
2022赛氪 秋季赛 补题 (鼠鼠输麻了)
如果i%prime[j]==0,此时i被他最小的质因子prime[j]筛掉,他的质因子个数和i一样,因为i已经有prime[j]这个质因子了,i。因为对于t这个数的某个质因子,要么分给k1,要么分给k2,如果一部分分给k1、一部分分给k2,gcd就不是1了。答案: 有n/i种,即1-n中有多少个数是t的倍数,t = 3,z = 3、6、9…gcd(y/x,z/y) = 1,即gcd(k1,k2) = 1.所以对于某个质因子,要么在这边要么在那边,2的次幂。答案是2的x次幂,x是t的质因子的种类数。原创 2022-11-01 19:11:30 · 498 阅读 · 2 评论 -
2022年ICPC网络赛第二场 A(找规律加费马小定理)
注意到p不等于5,想到费马小定理,x^(p-1) === 1(mod p). 太对了,如果p=5,就没法找循环了。因为10 ^(p-1)在模p意义下就没了。这时我们发现是有循环节的,每p个数,作为一循环。那么对于位置为idx的数,与他10的幂次相同的有idx+p,idx+2。而是给定min(100,n)行,第i行有i个数,第j个数表示[j,j+i,j+2。给定一个质数p (p是小于等于97的所有质数,并且p不等于5).另外,有可能p-1是大于n的,而n原创 2022-09-28 18:56:36 · 442 阅读 · 0 评论 -
2022年ICPC网络第二场 J(博弈论)
an(a1 > an或者an > a1实际是一样的),讨论a1 > an. 如果a1(大的)这一头是奇数,直接先手胜。否则,大的这一头是偶数,先手会选择另一头an。如果后手选a1,那好,另一头不能选了,又已知大的这一头是偶数,那后手就必败了。所以后手是不能再选a1的,所以问题变成了只看小的那一头的奇偶性,如果小的这一头是奇数,那么先手还是胜。如果有一头是奇数次,先手直接选了,就可以必胜。很有意思的一个题,当时敲代码敲错了,然后ac了。综上,如果两头的操作次数l和r都是偶数,则后手胜;原创 2022-09-28 18:09:17 · 403 阅读 · 3 评论