第一题贪心倒着求当前的最小可能值,扫到开头就是答案。 第二题前缀和+单调队列维护当前点往左最多m个数的最小前缀和,相减的差就是以当前点为右端点的最大区间和,更新答案。 第三题我考虑的是一个dp的做法,首先将N拆成二进制上的各个位数,dp[i][j]表示到第i位且前i - 1位和答案相同且第i位为j(j为0或1)的最少时间,那么就是一个位数平方的dp,每次要么从上一位正确的位置转移过来,要么把前面一段100000加上一次B的花费变成011111,要么扫一次把一段数字变成前面的往左*2次数+这段数字的大小*B。结果只能过60的小数据,感觉算法应该没错不然小数据也对不了的,后来懒得调了直接交了。。事后想想似乎是“这段数字的大小”会爆long long,傻了傻了。。 第四题没细过脑子就写了个dp,一通操作结果估计是只把k=0的30分拿到了。。。然后发现样例都过不了,纸上推了一下貌似我的状态转移有容斥问题,也是没接着调了。。急着吃饭就溜了55