Educational Codeforces Round 170 (Rated for Div. 2)
1|0A. Two Screens
难点是读题,找到最长公共前缀即可。
2|0B. Binomial Coefficients, Kind Of
打表找规律
3|0C. New Game
首先我们可以统计出每个数字出现的次数。
可以用双指针求出最大的,满足区间内的数至少出现一次且。
4|0D. Attribute Checks
考虑前缀中中有点属性点,我们用表示当前分配点智力,点力量可以满足多少次检查。
现在有三种情况。
如果当前是智力检测,则分配了的均加。
如果当前是力量检测,则分配了的均加。
这两种情况是区间修改。
如果当前是一个待分配的智力点,则可以从转移过来。
这种情况是单点查询。
因此我们可以用一个树状数组来维护。
但是,我们注意到操作,因此我们可以直接新建一个树状数组更新好之后再赋值回去。
的值域是,至多重建次,因此重建的总复杂度是。
区间修改的次数是,复杂度是。
因此最终的复杂度就是。
其实可以注意到区间只有当获得能力值是才会查询,并且每次查询是要查询全部值。因此我们可以直接用差分来实现区间修改,对于查询我们可以直接求出前缀和,然后再进行转移。
5|0E. Card Game
对于花色为的牌,Alice 拿到的牌数一定不少于 Bob。对于花色不为的牌,Alice 拿到的牌数一定不多于Bob。
我们在分配的时候可以一次分配两张牌,其中较大的给 Alice,另一张给 Bob。
设 dp 状态为某种花色的牌,对于前张牌,分配了张牌,剩下张牌的方案数,因此一定有,也就是奇偶性相同。
对于第牌有两种情况。如果不分配,则前张牌分配了张。如果分配,则需要一张之前没有分配的牌,因此前张分配了张。因此有如下转移
考虑只有第一种花色Alice可以多拿。其他花色只能 Bob 多拿,并且 Bob 每多拿一张,Alice 就要消耗一张花色 1 的牌。因此我们可以记 dp 状态为,表示前种花色的牌,此时 Alice还多出来了张花色为 1 的牌。对于花色 1 的牌,只能是 Alice 多拿,所以。对于其他花色的牌,我们可以枚举出 Bob 多拿了张,则存在转移
注意这里的都只能是偶数。
对于第二个 dp 可以转移即可。
__EOF__

本文链接:https://www.cnblogs.com/PHarr/p/18470071.html
关于博主:前OIer,SMUer
版权声明:CC BY-NC 4.0
声援博主:如果这篇文章对您有帮助,不妨给我点个赞
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律