hdu6205

来源:互联网 发布:苹果笔记本知乎 编辑:程序博客网 时间:2024/05/21 21:50

题目

题解:题目满足一定能拿走全部的卡片(貌似),然后就是看挪多少次满足。复制一遍序列在后面,看在哪个位置全部拿走就好了。(数据好水)

#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;int a[2*maxn],b[2*maxn];int main(){    int n;    while(~scanf("%d",&n))    {        memset(a,0,sizeof a);        memset(b,0,sizeof b);        for(int i=0; i<n; i++)        {            scanf("%d",&a[i]);            a[i+n]=a[i];        }        int temp;        for(int i=0; i<n; i++)        {            scanf("%d",&b[i]);            b[i+n]=b[i];        }        int ans=0,sum=0,num=0,m=0,l=0;        for(int i=0; i<2*n; i++)        {            //num+=a[i];            sum+=(a[i]-b[i]);            l++;            if(l>=n)            {                ans=i-l+1;                break;            }            if(sum<0)            {                /*if(num>m)                {                    m=num;                    ans=i;                }*/                if(i>n)                    break;                num=0;sum=0;l=0;            }        }        printf("%d\n",ans);    }}
原创粉丝点击