标签:至多 600 一个 是否 方波 Codeforces 数组 作差 Div
A - Single Push
题意:给数组a和数组b,可以选择一段连续的区间[l,r]使得ai全部加k(k>0)至多一次。求能不能从a变成b。
题解:一开始作差排序去重,然后判断差是不是只有1个(且>=0)或只有两个(且c1=0,c2>0),但这样是错的,比如下面的样例。
1
5
1 1 1 1 1
2 1 2 2 2
因为虽然差都是1但不是连续的区间。
做法是作差,然后判断是否有至多一个正的方波。可以用两个变量,一个记录是否进入了方波,且方波的高是多少。另一个记录是否离开了方波。
但第二天早上发现方波其实是什么?数列后面加上一个0,那么一个方波的差分就一定只有一个+a和一个-a。
标签:至多,600,一个,是否,方波,Codeforces,数组,作差,Div 来源: https://www.cnblogs.com/KisekiPurin2019/p/11875868.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。