2022 Jiangsu Collegiate Programming Contest

A. PENTA KILL!

简单模拟。

B. Prime Ring Plus

大于 2 的素数只可能是奇数,因此相邻两个数一定是一奇一偶,容易想到二分图。

但是环上每个点有两个相邻的点,网络流求匹配是将与源汇点相连的边流量设为 2 即可。

C. Jump and Treasure

单次 dp 可以显然的用单调队列优化。

对于每个关都跑一遍,总点数是调和级数,可以通过。

D. Finding Pairs

能一起选的点 modk 意义下都相同,我们按 modk 的结果分类。

容易想到莫队,对于每个同余类,维护一个数组 f0/1.0/1 表示当前左右两边有没有被选的情况的最大值。加入数是好做的,但是不能支持删除,回滚即可。

E. Playing Cards

我们把题意做转化:Alice 每次能用魔法选择 Bob 的一张牌使它的数字减去 k,或者选择自己的一张牌匹配 Bob 的一张更小的牌。要求使用魔法的次数最少。

不难想到贪心策略,当要匹配时,Alice 最大的牌一定会匹配 Bob 的最大的牌。我们每次取出 Alice 和 Bob 的最大牌,能匹配就匹配,否则就是用魔法将 Bob 的牌减去 k 后放回去。

注意直接维护这个过程是 O(n2logn) 的,需要使用数据结构维护。

F. Pockets

显然的生成函数。

f(x)=vixwi,一开始会想到将所有物品的 wi 减去 1,但是会出现 x1 项,它是没有意义的,所以考虑老实写式子,枚举购买次数:

i=0m[xk+i]11xfi(x)

很容易想到乘上 xi :

i=0m[xk]11xfi(x)xi

但是如同之前所说,f(x)x 是没有意义的,我们考虑乘上 xmfm(x) 来消去分母上的 x:

[xm+k]fm(x)1xi=0m(xf(x))mi=[xm+k]xm+1fm+1(x)(1x)(xf(x))

多项式快速幂即可。

G. GCD on Bipartite Graph

条件等价于对于任意一个质数,一定有一边它的倍数的出现次数小于 2

不妨设 nm,那么显然对于所有 44 的质数,第一个集合中至多只能出现一次它的倍数。可以推出当 n+m 充分大的时候,任意一个质数的倍数在第一个集合中只会出现 1 次。

于是对于 max(n,m)30 的情况暴力搜索,其它情况在第一个集合放素数即可。

H. Super Gray Pony

这个构造方式就是格雷码,根据经典结论,ax=x(x>>1),题意转化为给你一个 n 位二进制数,进行 kx(x>>1) 后的结果。

显然,最后 xi+j 会在 xi 异或上 (kj) 次,显然只有它为奇数才有用。也就是说有贡献的 j 一定是 k 的子集。

fi 表示考虑了 k 的后 i 位的结果,如果第 i 位是 0 那么无事发生,否则可以观察到 fi=fi(fi1>>2i),bitset 即可。

I. Cutting Suffix

有两个字母不同,可以构造方案使得答案为 0。否则所有字母都相同,答案显然为 n1

J. Balanced Tree

fx 表示大小为 x 的 super balanced tree 的个数,如果 x 是奇数,则 fx=fx122,否则 fx=2fx2fx21

发现 fx 一定是 2 的次幂,考虑求出指数。设 gi,0/1,0/1 表示从下往上考虑到第 i 位,第 i 位为 0/1,下面是否有借位的次幂个数,dp 即可。

K. aaaaaaaaaaA heH heH nuN

简单构造。

L.Collecting Diamonds

显然可以按中间的 B 讲串分成若干组,每组形如 AAABCCC。

我们发现,只有删除 B 的操作会影响后面的奇偶性。所以我们尽量让每个组都删除一次 B,并在删除 B 之前删除尽可能多的 AC。

策略是显然的:先从后往前删去一次能删的 AC 数大于 1 的组。然后从前往后扫,记录在前面删了几次 B 即可。

posted @   Smallbasic  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示