jly 贪心

这也太难了吧。

[AGC029B] Powers of two

高桥君有 \(N\) 个写有正整数的球。第 \(i\) 个球上写的正整数为 \(A_i\)。高桥君想从这 \(N\) 个球中组成若干对,使得每一对球上数字之和都是 \(2\) 的正整数幂。
注意,同一个球不能属于多个不同的对。
请你求出最多能组成多少对满足条件的球。

sol

从小到大排序。

从大到小凑二的幂次一定是最优的,双指针取一下就好,原理就是每次消大的数更优,因为不然后面消不掉了。

CF936D World of Tank

Vitya 是一名热爱编程与解题的选手,但有时也玩游戏来放松。某日他发现一款坦克类游戏,并在一天内几乎通关,仅剩最后一关难以突破。于是他发挥程序员的优势,写程序帮助自己通关。现在请你也来试试吧!

游戏地图是一条长为 \(n\)、宽为 \(2\) 的路径(两行 \(n\) 列)。地图上部分格子存在障碍。你控制的坦克初始在坐标 \((0,1)\),目标是到达 \((n+1,1)\)\((n+1,2)\)

每一秒坦克自动向右移动一格(即 \(x\) 坐标加 1)。你可以随时按“上下箭头”使坦克立即切换车道(即 \(y\) 坐标变为 1 或 2),但不能斜着移动。如果你在某一秒恰好移动+切换车道,先移动再切换。

你也可以按“空格键”使坦克开火,摧毁当前车道上最前方未摧毁的障碍(即同一条直线上,最近的障碍)。但坦克装弹需要 \(t\) 秒,开始时未装弹,意味着第一次射击必须在第 \(t\) 秒或之后。

若某一刻坦克进入含有尚未摧毁的障碍的格子,则游戏失败。

你的目标是判断坦克能否成功通关(到达 \((n+1,1)\)\((n+1,2)\)),若能,请输出一组合法的操作方案。

sol

神题。

根据一通证明,你可以发现坦克在换行前是没必要攻击的。

ldg 的图床挂了

如图假如说我在绿色这行可以直接打到橙色这行,我是可以直接走过去的,也就没有必要去走上面这一段。

但是万一我换行是为了提前攻击蓝色呢?

正确的调整思路是从后向前,这样可以避免上面遇到的问题。

假设上图在遇到蓝色障碍之后就结束了,那么显然在橙色障碍的阶段,我们是没有必要进行提前攻击的,因为后面根本没有障碍物了。

因为橙色障碍所在的阶段不是为了提前攻击,所以如果我们在紫色路径上可以攻击到蓝色目标,我们就可以直接走过去。

同样的,因为紫色路径也不是为了提前攻击,所以我们如果绿色路径上可以攻击到橙色目标,我们也可以直接走过去。

按照这个思路,我们可以使用数学归纳法,证明出坦克的提前攻击是不重要的。

把装填炮弹看成每秒攒一点能量,然后设计就变成能量值 \(-t\)

现在你就顺着去设计 dp,设 \(dp_{i,0/1}\) 表示在上下排的最大积累能量值。

转移显然,随便写点输出方案就过了。

CF1209H Moving Walkways

详见:https://www.cnblogs.com/degch5zm/p/19133933

posted @ 2025-10-11 20:59  degchuzm  阅读(12)  评论(0)    收藏  举报