HDU 6205:card card card
来源:互联网 发布:大学生网络诈骗统计图 编辑:程序博客网 时间:2024/05/16 05:25
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6205
题目意思:
给出N堆牌的数量以及该堆牌对应的权值。
WYJ可以在游戏开始前将第一堆牌放到最后的位置上,它可以执行这样的操作任意多次。
游戏开始后:WYJ按照顺序拿起每堆牌,每一次他把当前这堆牌全拿在手里然后牌面面对自己。
然后让牌面面对自己的牌翻过去和当前这堆牌对应权值相等的张数,如果某一时刻它手里的朝向
自己的牌少于当前这堆牌要求翻过去的张数,游戏就结束了,否则它就把当前这堆牌都拿走无论
这些牌是朝向自己还是背对自己。求WYJ在游戏结束时获得最多的牌数时,它在游戏开始前应该
执行多少次将第一堆牌放到最后的这个操作。
测试数据:
5
4 6 2 8 4
1 5 7 9 2
如果游戏开始前不做操作:
4-1 + 6-5 + 2-7 拿到第3堆的时候游戏结束,获得牌数4+6+2 = 12
如果游戏开始前将第一堆牌放到最后:
5
6 2 8 4 4
5 7 9 2 1
6-5 + 2-7 拿到第2堆的时候游戏结束,获得牌数:6 + 2 = 8
在上述基础上再把第一堆牌放到最后:
5
2 8 4 4 6
7 9 2 1 5
2-7 拿到第1堆的时候游戏就结束,获得排数:2
在上述基础上再把第一堆牌放到最后:
8 4 4 6 2
9 2 1 5 7
8-9 = -1 拿到第一堆牌的时候游戏结束,获得牌数: 8
在上述基础上再把第一堆牌放到最后:
4 4 6 2 8
2 1 5 7 9
4-2 + 4-1 + 6-5 + 2- 7 + 8-9 > 0.则牌全拿完了。
继续这样下去:
可以知道在游戏开始前执行四次操作。可以使游戏时获得最大牌数。
题目就是个纯模拟的过程:
AC代码:
#include <iostream>#include <stdio.h>#define inf 0x3f3f3f3fusing namespace std;const int maxn = 1e6;int num[maxn];int value[maxn];int a[maxn];int main(){ int n; while(~scanf("%d",&n)) { for(int i = 1; i <= n; i++) scanf("%d",&num[i]); for(int i = 1; i <= n; i++) { scanf("%d",&value[i]); a[i] = num[i]-value[i]; } int Max = -1; ///获得的最大卡片数 int total_cards = 0; ///当前总卡片数 int sum = 0; ///求和 int ans = 0; ///答案 int start = 1; ///第几堆牌是开始 for(int i = start; i <= n; i++) { sum += a[i]; total_cards += num[i]; if(sum < 0) ///游戏结束 { if(total_cards > Max) ///更新答案 { Max = total_cards; ans = start; } start = i+1; ///下一次开始的位置是i+1,这个很容易明白的 sum = 0; total_cards = 0; } } ///从start ~ n 还要再加上从1~start,因为他们开始前被挪到了后边 for(int i = 1; i < start; i++) { sum += a[i]; total_cards += num[i]; if(sum < 0) { if(total_cards > Max) { Max = total_cards; ans = start; } break; } } if(total_cards > Max) { Max = total_cards; ans = start; } printf("%d\n",ans-1); ///从第ans开始,执行操作ans-1次 } return 0;}
- 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
- 【HDU 6205】 card card card 【尺取】
- HDU 6205 card card card(尺取)
- card
- Card
- 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 (2017沈阳网赛
- hdu 6205 card card card (尺取法)
- 1012 card card card
- HDU6205 card card card
- 软考之探路:大纲
- leetcode 673. Number of Longest Increasing Subsequence
- HashMap实现原理及源码分析
- maven 构建项目时,modules子模块,module对应name中的字段
- 二叉树中出现的错误
- HDU 6205:card card card
- 计蒜客16 爬楼梯 动态规划入门
- Hdu6197 array array array
- Hexo next主题搭建静态博客埋坑记录
- JAVA工具类(13)---图片上传工具类
- maven与tomcat
- 阶乘
- 深入理解javascript原型和闭包(9)——简述【执行上下文】下
- 距离的总和