这个题无解的情况后台数据高达80%,一开始过了10%以为写假了
光巨昨晚讲的太好了,今天上线写一下
题目大意:
给你n堆石子和一个区间k,每次对一个长度一定为k的区间里的所有数字加一,问最少操作次数使得所有的数都相等
思路:
对于一个区间的加减操作,我们很容易想到差分数组
我们直接考虑最终状态

最终状态的差分数组
W 0 0 0 0 0 0
此时w就是我们都变成的那个数字

那么考虑初始状态

w1 w2 w3 w4 w5  (可能为负)

我们差分数组操作的时候,如果对[x,y]区间加一的话
只需要
b[x]++
b[y+1]–

回到差分数组中
如果在pos1这个位置一个w小于0
那么我们把它变为0
对应的pos1+k的位置要+w
相当于对[pos1,pos1+k-1]这个区间加了w(注意边界

我们第一次扫数组的时候要倒着扫
(好像也可以先正着扫)
我们倒着扫一边之后还有一个细节没有考虑到
因为我们是从n这个位置开始的
但是在差分数组中n+1的这个位置也是可以操作的
所以数组中就会存在一些特殊点
这些特殊点有一个共同的性质:
1.就是如果我在差分数组中操作这个点,他一定会影响到b[n+1]这个位置的值的加减的权重

2. 点集在模k的余数相等
所以我们最后把这些特殊点单独拿出来重新扫一边
最后无解记得输出-1

Code:

ll n,k,a[maxn],b[maxn];
int main() {int toto = read();while(toto--) {n=read(),k=read();rep(i,1,n) a[i] = read();rep(i,1,n) b[i] = a[i] - a[i-1];ll ans=0;for(int i=n ; i>=1 ; i--) {if(i-k==0) break;if(b[i]<=0) continue;ll w=b[i];ans+=w;b[i]=0;b[i-k]+=w;}int pos = n - k +1; // last pos in  sequenceint yu  = pos%k;for(int i=1 ; i<=n ; i++) {if(b[i]>0) continue;if(i%k==yu) {int w = abs(b[i]);b[i]=0;ans+=w;b[i+k]-=w;}}rep(i,2,n) if(b[i]!=0) ans =-1;out(ans);puts("");}return 0;
}

2021牛客寒假训练营5D石子游戏(差分)相关推荐

  1. 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱

    今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...

  2. 【解题报告】2021牛客寒假算法基础集训营4

    [解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...

  3. 2021牛客寒假算法基础集训营1

    2021牛客寒假算法基础集训营1 A. 串(线性DP) B. 括号(构造) E.三棱锥之刻(几何) F. 对答案一时爽(签到) I. 限制不互素对的排列(构造) J. 一群小青蛙呱蹦呱蹦呱 A. 串( ...

  4. 2021牛客寒假算法基础集训营2 D.牛牛与整除分块

    2021牛客寒假算法基础集训营2 D.牛牛与整除分块 题目链接 题目描述 整除分块,又称数论分块.是数论算法中的重要技巧,你可以在各种需要枚举因子的连续求和类问题中见到它的身影.如杜教筛,莫比乌斯反演 ...

  5. 2021牛客寒假算法基础集训营5 B.比武招亲(上)

    2021牛客寒假算法基础集训营5 B.比武招亲(上) 题目链接 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐在榜上留下了这样一道问题,谁做出来了就可以 ...

  6. 【2021牛客寒假第五场】B-比武招亲(上)排列组合

    [2021牛客寒假第五场]B-比武招亲(上)排列组合 题意 思路 Code(44MS) 传送门: https://ac.nowcoder.com/acm/contest/9985/B 题意 思路 考 ...

  7. 【2021牛客寒假第五场】C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和

    [2021牛客寒假第五场]C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和 前置技能 题意 思路 Code(715MS) 传送门: https://ac.nowcoder.com/ac ...

  8. 2021牛客寒假算法基础集训营4

    九峰与签到题 链接:https://ac.nowcoder.com/acm/contest/9984/A 来源:牛客网 题目描述 九峰正在准备一场毒瘤比赛,他是如此毒瘤以致于他想方设法降低通过率,他认 ...

  9. 牛客寒假训练营4-爆炸的符卡洋洋洒洒 (dp变形)

    题意: 链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 小红正在研究如何把符卡组合出尽可能大威力的组合魔法. 小红共有 n 种符卡可以选择,每种符卡最多只能选择一次,每个符卡的魔力消耗为 ...

最新文章

  1. Spring学习的切入点
  2. jQuery命名空间,插件开发
  3. 谋定国家5G战略的基石-工信部韦乐平:经信研究网络领先
  4. .NETStandard FreeSql v0.0.9 功能预览
  5. (三)深入浅出TCPIP之再识TCP,理解TCP四次挥手(上)
  6. 7-4 堆栈模拟队列 (25 分)
  7. vfp报表纸张设置_VFP 9.0中实现多种自定义纸张格式的报表打印
  8. 你的广告能打几分?Kaggle需求预测挑战赛冠军方案这样做丨教程
  9. 自定义RecyclerView.ItemDecoration,实现RecyclerView的分割线效果
  10. 信号与系统(一) 能量信号和功率信号
  11. 新建一个C#控制台应用程序
  12. “罪魁祸首”已找到,微软回应修改 MIT 开源项目作者版权声明
  13. 行业观察(一)| 从渠道为王到数据为王——浅谈服装零售企业的数字化转型
  14. Retrofit2 详解和使用(一)
  15. 服务器 sn 作用,命令查看服务器SN号
  16. MATLAB 汉化补丁下载
  17. Git合并两个分支的步骤
  18. 下雨天,走一段路,是走淋雨少还是跑
  19. 发表16篇Nature、14篇Science!这位顶尖学者告诉你论文十大诀窍
  20. 表格的计算机在哪个文件夹,如何查看当前打开的Excel表格文件在电脑中的保存位置...

热门文章

  1. Eigen::常用操作[转]
  2. zero eclipse_全球首款真无孔机!魅族zero亮相:支持屏幕发声和18W无线快充
  3. 正点原子STM32F103精英版学习笔记(二)
  4. 如何使用伦敦金画出支撑阻力线
  5. ipconfig ipconfig /all
  6. H5网页判断是否安装APP并调起APP
  7. c++ abs 取绝对值函数
  8. 面试题-渗透测试实习生
  9. jn-社团申请必须要上传图片
  10. 量子时刻 奇妙的不确定性