hdu 6205 card card card
https://vjudge.net/contest/184514#problem/L
题意:
排成一行的一堆牌,每堆牌都有一定数量的牌,然后每堆牌对应有一个惩罚值。一开始所有的牌都是正面向下的,并且在游戏开始之前可以把第一堆牌移到最后,这个操作可以进行若干次。在那之后,一个人开始依次拿起一堆牌,并且把它们全部正面朝上,之后需要把某些牌翻转到正面向下,翻转的数量就是这堆牌的惩罚值,之后把正面向上的牌翻转加到下一堆进行操作。当遇到当前的正面向上的牌小于当前的牌的惩罚值的时候,游戏结束,可以得到这堆牌以及之前的所有牌。
问需要挪多少堆到后面可以得到最大数量的牌。
思路:
一开始被题解误导,wa了6发。首先这题由于要挪到后面,而且有顺序,所以很自然的想到复制一份加到后面,形成一个环,这样方便许多。之后我们设置3个变量,一个表示当前取得的牌数num,一个表示当前减去惩罚值之后剩下的牌sum,一个记录当前取得堆的数量cnt。当cnt >= n的时候,就说明我们可以取到全部,也就是取到最多的了,记录位置并跳出。当sum < 0 的时候,就说明不能再取了,此时就更新num的值并记录此时的位置,将cnt和sum重置为0.循环完之后所求的num就是最大值。
当我们记录的位置ans最后要减去n,因为我们是讲题中所给的线拼成了一个环,所以位置会有偏移。
代码:
#include <stdio.h>
#include <string.h> int a[];
int b[]; int main()
{
int n; while (scanf("%d",&n) != EOF)
{
for (int i = ;i <= n;i++)
{
scanf("%d",&a[i]);
a[i+n] = a[i];
} for (int i = ;i <= n;i++)
{
scanf("%d",&b[i]);
b[i+n] = b[i];
} long long pre = ;
long long sum = ;
long long num = ;
long long maxx = -1e12;
int ans = ;
int cnt = ; for (int i = ;i < * n;i++)
{
num += a[i]; sum = (pre + a[i] - b[i]); if (sum >= )
{
cnt++;
pre = sum;
}
else
{
if (num > maxx)
{
maxx = num;
ans = i;
} pre = ;
cnt = ;
} if (cnt >= n)
{
ans = i;
break;
}
} if (ans == n) printf("%d\n",);
else printf("%d\n",ans - n);
} return ;
}
hdu 6205 card card card的更多相关文章
- 【BZOJ4391】[Usaco2015 dec]High Card Low Card(贪心)
[BZOJ4391][Usaco2015 dec]High Card Low Card(贪心) 题面 BZOJ 题解 预处理前缀后缀的结果,中间找个地方合并就好了. #include<iostr ...
- 【题解】P3129高低卡(白金)High Card Low Card
[题解][P3129 USACO15DEC]高低卡(白金)High Card Low Card (Platinum) 考虑贪心. 枚举在第几局改变规则,在改变规则之前,尽量出比它大的最小的牌,在改变规 ...
- hdu 6205 card card card 尺取法
card card card Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 2017ICPC沈阳网络赛 HDU 6205 -- card card card(最大子段和)
card card card Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- card card card HDU - 6205
As a fan of Doudizhu, WYJ likes collecting playing cards very much. One day, MJF takes a stack of ca ...
- HDU 6205 (模拟) card card card
题目链接 Problem Description As a fan of Doudizhu, WYJ likes collecting playing cards very much. One day ...
- hdu 6205 card card card 最大子段和
#include<iostream> #include<deque> #include<memory.h> #include<stdio.h> #inc ...
- HDU 6205 card card card ( 思维 )
题意 : 给定两个序列 a 和 b ,保证 a 数列的和 == b数列的和,从头到尾考虑 (a[i] - b[i]) 的前缀和,直到前缀和为负数则无法进行下去,所得的便是a[1~i]的和,现在有一个操 ...
- hdu 6205: card card card【输入挂】
题目链接 感谢 http://blog.csdn.net/txgang/article/details/77568491 以下供参考 getchar读入法 2683MS FastIO法 MX=1e2 ...
随机推荐
- Office远程代码执行漏洞(CVE-2017-11882)复现
昨晚看到的有复现的文章,一直到今天才去自己复现了一遍,还是例行记录一下. POC: https://github.com/Ridter/CVE-2017-11882/ 一.简单的生成弹计算器的doc文 ...
- eclipse异常解决:Errors occurred during the build.........
在MyEclipse下编辑文件保存时,编译java工程,出现以下弹出提示.每次保存都会弹出,不堪其扰. "Errors occurred during the build.......... ...
- vue小demo易错点总结
1.在使用<transiton>添加过渡效果时,对应的标签需使用<router-link>,否则,transition不会达到应有的效果. 2.在路由文件里获取根实例时,需通过 ...
- [Noip2003 PJ] 数字游戏
Description & Range 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有 ...
- [模拟赛] T3 Exploit
Description 4X概念体系,是指在PC战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以"EX"为开头的英语单词. eXplore(探索) eXpand(拓张与发展 ...
- 通过漫画轻松掌握HDFS工作原理
- JVM学习五:JVM之类加载器之编译常量和主动使用
在学习了前面几节的内容后,相信大家已经对JAVA 虚拟机 加载类的过程有了一个认识和了解,那么本节,我们就继续进一步巩固前面所学知识和特殊点. 一.类的初始化回顾 类在初始化的时候,静态变量的声明语句 ...
- 网络通信 --> CRC校验
CRC校验 一.什么是CRC校验 循环校验码(Jyclic Redundancy Check,简称CRC码): 是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意 ...
- Kaggle竞赛 —— 房价预测 (House Prices)
完整代码见kaggle kernel 或 Github 比赛页面:https://www.kaggle.com/c/house-prices-advanced-regression-technique ...
- 一个非常标准的连接Mysql数据库的示例代码
一.About Mysql 1.Mysql 优点 体积小.速度快.开放源码.免费 一般中小型网站的开发都选择 MySQL ,最流行的关系型数据库 LAMP / LNMP Linux作为操作系统 Apa ...