- 博客(8)
- 收藏
- 关注
原创 CF2200 Codeforces Round 1084 (Div. 3) 题解 图解 超详细版
否则考虑是否存在数字可以拆成两个因子相乘,容易发现,如果包含不同大小的质因子,可以将含大质因子的因子放在前面,含小质因子的因子放在后面,假设游戏能持续进行,最后拆到不能再拆,大质因子位置肯定比小质因子靠前,一定不满足数组非递减,那么Alice获胜。容易发现,最后成为赢家的一定是菜数量最多的玩家,因为游戏是按顺序来的,每转一圈,所有玩家的菜数减一,换句话说,如果一个玩家有。注:我的写法把各种情况混合在一起判断了,逻辑比较复杂,称不上好代码,如果看不懂可以分情况讨论,把情况分开写,会更好理解一些。
2026-03-06 00:31:45
1196
1
原创 P1296 奶牛的耳语 详解
为实现不重不漏,遍历所有奶牛作为左端点,考虑其能与右侧几头牛交流。容易发现,如果从左到右遍历左端点牛,能交流到的最右端牛的坐标是只增不减的。试问有多少对可以相互交流的奶牛。这种单调性可以用双指针求解。注:同一对牛不同顺序算作一对。头奶牛排成一列,其中第。头奶牛的坐标为非负整数。若一对奶牛相距不超过。
2026-03-02 22:00:59
843
原创 P1147 连续正整数和 详解
的左边,那么区间和一定大于M,左端点右移,可以遇到此解。若右端点在(L, R)之间,左端点无论怎么移,总会和L重合,此时区间和一定小于M,右端点右移,可以遇到此解。,故可以考虑双指针求解:令左右端点初始位置为1,右端点右移,至数段和超过M,再将左端点右移,至数段和小于M,过程中若数段和等于目标值则记录解。想增大区间和只能右移右端点,想减小区间和只能右移左端点。,求出所有的连续的正整数段(每一段至少有两个数),使得这些连续的正整数段中的全部数之和为。,会破坏端点移动对区间和增减的单调性,不可以用此法求解。
2026-03-02 22:00:23
398
原创 P1094 纪念品分组 详解
聪明的同学会发现问题,"任一物品定会分到某组"是前提,为了方便,我们先手选择了最贵的物品A,然后给它配了一个最合适的物品B。考虑极端情况,刚才我们从可以和A(未分组中最贵的物品)配对的若干物品中选择了最贵的,现在考虑选择能配对中最便宜的[^2]物品,观察会对组数有什么影响。深入思考发现:选择最便宜的物品配对A对组数没有影响,因为在"'最贵和最便宜物品的价值和’不超过限制"这一前提下,若存在一最优分组[考虑若将两价值低的物品分做一组,会浪费余下的价格空间,剩价值高的物品也许只能自成一组,导致组数增多。
2026-03-01 22:41:20
1718
原创 P1102 A-B 数对 详解
但由于本题给定数列可能有重复数字,需考虑左指针右移发现数字不变,此时右指针就要左移回到对应数字A的位置,最坏情况下时间复杂度为。既然重复数字会有问题,可以想到优化数据结构:每个位置记录两个值,val(数字大小)、cnt(数字个数)。既然相同的A可以用两个区间端点指针表示,那么相同的B也可以这样做,只是维护起来麻烦一点,也可以保证两个区间是不会回头的。的位置也随遍历右移,在数字不重复的情况下,可以保证两指针位置持续右移不回头,故可采用双指针算法。遍历数组,使遍历到的数字作A,另一数字B的大小就确定了(
2026-03-01 22:39:53
927
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅