【jzoj4788】【序列】
来源:互联网 发布:室内位置大数据 编辑:程序博客网 时间:2024/06/05 21:02
题目大意
解题思路
显然没有模的时候,后一个减前一个差分,正值加起来即为答案。考虑将一个区间加4,左端点的差分值加4,后端点的后一个的差分值减4,而只有正值对答案有贡献。将前面的差分值用桶存起来,枚举右端点,如果是正值则查找前面的差分值,看是否能通过操作使答案减少。
code
#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define max(a,b) ((a>b)?a:b)#define min(a,b) ((a>b)?b:a)#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;int const maxn=100000,inf=2147483647;int t,n,a[maxn+10],b[maxn+10],c[10];int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); scanf("%d",&t); fo(cas,1,t){ scanf("%d",&n);int ans=0; fo(i,1,n)scanf("%d",&a[i]); fo(i,1,n)scanf("%d",&b[i]); fo(i,0,3)c[i]=0; fo(i,1,n){ a[i]=(b[i]+4-a[i])%4; b[i]=a[i]-a[i-1]; if(b[i]<=0)c[-b[i]]++; else{ fd(j,3,0) if(c[j]&&(4-j<b[i])){ ans+=4-j; c[j]--; b[i]=b[i]-4; c[-b[i]]++; break; } if(b[i]>0)ans+=b[i]; } } printf("%d\n",ans); } return 0;}
0 0
- 【jzoj4788】【序列】
- jzoj4788 序列
- 【JZOJ4788】序列
- JZOJ4788. 序列
- Jzoj4788 序列
- NOIP提高组【JZOJ4788】序列
- JZOJ4788. 【NOIP2016提高A组模拟9.17】序列
- 【JZOJ4788】【NOIP2016提高A组模拟9.17】序列
- 序列
- 序列
- 序列
- 序列
- 序列
- 序列
- 序列
- 序列
- 序列
- 序列
- AC220转DC5V输出
- Big Barn_usaco5.3_dp
- Activity详解(生命周期,启动方式,数据传递,任务栈等)
- 2017滴滴校招编程
- 从使用到原理学习Java线程池
- 【jzoj4788】【序列】
- 安卓中view、activity、fragment之间的相互跳转
- 阿里云CentOS Linux服务器上用postfix搭建邮件服务器
- 去除gvim编辑后的自动备份
- SAP IDoc
- 还是喜欢画画 一动不动
- PHP Switch 语句
- 两个不相关界面之间跳转
- 导航栏随着tablview的上下拉动开始隐藏