HDU 6205 card card card【最长连续子串+尺取法】
来源:互联网 发布:js二维映射 编辑:程序博客网 时间:2024/05/20 02:54
题目链接
题意:n堆牌,每堆牌有个penalty value,刚开始可以把第一堆牌移到最后面,这个操作可以进行任意多次。然后从第一堆牌开始,每次加上这堆牌的数目减去这堆牌的penalty value,如果这个值小于0则取走到现在为止的所有牌,游戏结束。求刚开始时移第一堆的这个操作进行几次的时候可以拿走的牌最多。
其实就是一个变形版的最长连续子串,保证子串中每个前缀和都大于等于0,如果有一个小于0,这串就直接结束。此外,要保证子串的长度小于等于n。然后如果当前子串长度为n,就减去最开始那个看后面的加上后是否能满足,就是尺取法的思想。
#include <bits/stdc++.h>using namespace std;typedef long long ll;int n;int num[2000000+10];int cha[2000000+10];int main(){ // freopen("1.txt","r",stdin); while (scanf("%d",&n)!=EOF){ for (int i=1;i<=n;i++){ scanf("%d",&num[i]); } for (int i=1;i<=n;i++){ int x; scanf("%d",&x); cha[i]=num[i]-x; } for (int i=n+1;i<=2*n;i++){ num[i]=num[i-n]; cha[i]=cha[i-n]; } ll begin=1,len=0,sum=0; ll tmp=0; int i=1; int index=0; ll MAX=0; while (i<=2*n){ tmp+=cha[i]; sum+=num[i]; len++; // printf("%d %lld %lld %lld\n",i,tmp,sum,len); if (tmp<0){ if (sum>MAX){ MAX=sum; index=begin; } begin=i+1; sum=0; len=0; tmp=0; i++; continue; } else{ if (len==n){ if (sum>MAX){ MAX=sum; index=begin; } sum-=num[begin]; tmp-=cha[begin]; len--; begin++; } else{ if (sum>MAX){ MAX=sum; index=begin; } } i++; } } if (index>n){ index-=n; } index--; printf("%d\n",index); }}
阅读全文
0 0
- HDU 6205 card card card【最长连续子串+尺取法】
- HDU 6205 card card card(尺取法)
- hdu 6205 card card card (尺取法)
- 【HDU 6205】 card card card 【尺取】
- HDU 6205 card card card(尺取)
- HDU-6052 card card card(尺取法)
- hdu 6205 card card card
- HDU 6205:card card card
- HDU 6205 card card card
- hdu 6205 card card card
- card card card HDU-6205
- HDU 6205 card card card
- hdu6205 card card card 尺取法
- HDU 6205 card card card && 沈阳网络赛1012 (尺取法)
- hdu 6205 card card card(最大子段和)
- card
- Card
- HDU 6205 card card card(展开字符串思想+思维)
- Android从系统调用相册OkHttp上传到服务器(activity数据传递)
- php单引号和双引号的区别
- 德意志民族与大和民族的比较研究(转载)
- Android中 的HAL层简析
- 进程调度
- HDU 6205 card card card【最长连续子串+尺取法】
- Spring基础特性总结二 --- 核心组件Core以及Resource的设计
- 最新|TensorFlow开源的序列到序列框架
- 环信android SDK 音频文件接收
- 爱奇艺校招笔试17.09.10查缺补漏
- 单链表反转java代码
- javascript初学笔记——好玩的类库。
- 关于从gethub下载的源码在Roboware显示无法打开工作空间的解决
- linux iic驱动编程之二 向总线注册设备(1)