Codeforces 经典场
经典波兰球场
A. PolandBall and Hypothesis#
其实就是让你判断一下质数,直接暴力就行。
B. PolandBall and Game#
先把都有的说完,然后判断谁的集合更大即可。
C. PolandBall and Forest#
树的直径
D. PolandBall and Polygon#
根据欧拉公式 ,算出 是容易的,所以就可以算 了。
E. PolandBall and White-Red graph#
简单画一下发现 均无解。
- 时
时无解,否则只要有一个点没有全部和其他选上即可。
- 时
PolandBall and Gifts#
- 最多比较简单
就是置换环隔着选。
- 最少
一个长度为 的环如果选了 个人,那不如选 个人。于是每个环都尽量选上,直接背包即可。
G. PolandBall and Many Other Balls#
经典倍增FFT题。
写出dp的转移式子 代表前 个球取出 组的方案数,。写成生成函数的形式 ,多项式乘法+快速幂即可。
你还可以算通项以及ODE暴解递推式。
CF1149#
C. Tree Generator™#
容易发现树上一条路径一定形如 ))...)((...(
。也就是对于任意子段,去掉匹配了的括号后还剩下的部分。而这个东西还是不太好表示,我们有如下引理:
这个值等于 ,其中 代表把
(
看成 ,)
看成 后区间 的和。
证明 一定可以找到最后一个 )
,当 取到这个位置时 显然就是答案。接下来证明这个值是最大的。在这个体系里面所有被匹配掉的括号贡献都是 ,最后没被匹配掉的括号, 往左往右都会变小,得证。
那么现在就是要求 ,即 。类似最大子段和,这个也可以用线段树来维护。
简单分类讨论 是取在区间中点的左边还是右边即可。
D. CF1149D Abandoning Roads#
难得自己想出来一道 3000 分的题,虽然说考试的时候打挂了...
首先先对较小的边缩点,然后求连通块内的最短路。显然,连通块内其实想怎么走就怎么走,但不能走较大的边。
然后不同连通块用较大的边连起来,就完事了?你发现较大的边走起来必须是一条链,也就是不能回到之前存在过连通块,比如说 边权都是 ,而 的边权都是 ,这时走外面一圈会更短但是这不符合条件。
所以我们有一个暴力的思路,状压连通块。连通块的个数是 的,仔细观察数据范围 。然后发现只有一个点的连通块显然不用压,只有两个的也显然不用压,于是就只有 个连通块。
还是太多,观察三个点的连通块,由于 ,所以其实也一定不会走出去再走回来,所以也不用压,于是要压的点只有 个了。最后跑最短路转移(类似最小斯坦纳树)即可。复杂度 。
E. Election Promises#
神仙博弈题。首先如果没有第二个操作就是一个很简单的有向图博弈,设 代表所有 的 的 。。结论:如果存在 那么先手有必胜策略。
证明 可以说明如果不存在 ,那么下一步操作一定存在 ,否则下一步操作一定可以让 都为 。而最后的必败态的 显然全为 ,所以先手显然可以让后手进入必败态。
构造方案如下:找到一个最大的 的 ,然后找到一个可以减小的 ,再把其出边都搞一遍,由于这是最大的,所以他的出边遍历所有 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统