【NOIP2016提高A组模拟9.17】序列
2016-09-19 20:38
501 查看
题目
分析
首先用ai表示达到目标的步数Bi−Ai(mod4)根据粉刷栅栏,先不管mod 4的情况,答案就是∑max(ai−ai+1,0)
那我们刚才做个差分ai−=ai+1
当我们给i增加高度,
那么ai−4,ai+1+4
当我们给区间增加高度,那么因为中间的+4-4抵消了,所以
al−4,ar+4
那么我们考虑
al为1、2、3的情况,
就读者私下讨论。
#include <cmath> #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <queue> const int maxlongint=2147483647; const int mo=1000000007; const int N=100005; using namespace std; int a ,n,q; int main() { scanf("%d",&q); while(q--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) { int x; scanf("%d",&x); a[i]=(x-a[i]+4)%4; } int t2=0,t3=0,ans=0; for(int i=1;i<=n;i++) { a[i]-=a[i+1]; ans+=max(a[i],0); } for(int i=1;i<=n;i++) { if(a[i]==3) t3++; else if(a[i]==2) t2++; else if(a[i]==-2) { if(t3) { t3--; t2++; ans--; } } else if(a[i]==-3) { if(t3) { t3--; ans-=2; } else if(t2) { t2--; ans--; } } } cout<<ans<<endl; } }
相关文章推荐
- 【NOIP2016提高A组模拟9.17】序列
- 【JZOJ4788】【NOIP2016提高A组模拟9.17】序列
- 【NOIP2016提高A组模拟9.17】小a的强迫症
- 【NOIP2016提高A组模拟9.17】小a的强迫症
- JZOJ 4786. 【NOIP2016提高A组模拟9.17】小a的强迫症
- JZOJ 4786 【NOIP2016提高A组模拟9.17】小a的强迫症
- JZOJ 4787 【NOIP2016提高A组模拟9.17】数格子
- 【JZOJ4786】【NOIP2016提高A组模拟9.17】小a的强迫症
- 【JZOJ4787】【NOIP2016提高A组模拟9.17】数格子
- 【NOIP2016提高A组模拟9.17】数格子
- NOIP2016提高A组模拟9.17总结
- {题解}[jzoj4787]【NOIP2016提高A组模拟9.17】数格子
- JZOJ.4714【NOIP2016提高A组模拟8.19】公约数
- 【NOIP2016提高A组模拟7.15】修路 题解+代码
- 【NOIP2016提高A组模拟10.15】算循环
- 【NOIP2016提高组模拟】单峰