Codeforces Round #600 (Div. 2)

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。

上一篇:linux免密登录配置出现缺少authorized_keys文件


下一篇:ORA-600 [kjxmgmb_nreq:!bat]