G诺亚方舟 (GDUTACM——2015新生杯初赛重现)
2015-12-03 20:09
363 查看
题目链接:http://gdutcode.sinaapp.com/problem.php?cid=1025&pid=6
2096年11月8日,世界末日终于还是来临了。
而此时,世界上最后一个“神”——sytrakl 也已经苏醒。他按照《圣经》的指引,找到了唯一能解救人类的“诺亚方舟”,并向全世界宣布任何人都可以进入方舟避难。
所有的人类知道消息后都疯狂了,他们纷纷赶来。由于怕触怒“神”,他们老老实实的在诺亚方舟的门前排起了队(方舟在队伍的最右边)。
sytrakl在英国的圣保罗大教堂沉睡了几百年,即使已经苏醒,却还保留着英国的“绅士风度”。所以虽然方舟的体积足够大,但他还是决定让女人先行(即所有女人都在队伍右边)。于是他规定:
每一秒时间里,队伍里所有右边有男人的女人跟右边的男人调换位置。
sytrakl希望知道需要多少时间才能实现目的。然而sytrakl无所不能,但偏偏不懂编程。所以他找到了你(高兴吧!Excited!),希望你能帮他完成这个工作。
Ps:如果做不到,那你肯定药丸。
WWM
MMWWW
2
0
Problem G: 诺亚方舟
Description
“终有一天,耶和华的光会普照大地,旧的世界将会毁灭,新的世界将会产生。”——《启示录·天启》2096年11月8日,世界末日终于还是来临了。
而此时,世界上最后一个“神”——sytrakl 也已经苏醒。他按照《圣经》的指引,找到了唯一能解救人类的“诺亚方舟”,并向全世界宣布任何人都可以进入方舟避难。
所有的人类知道消息后都疯狂了,他们纷纷赶来。由于怕触怒“神”,他们老老实实的在诺亚方舟的门前排起了队(方舟在队伍的最右边)。
sytrakl在英国的圣保罗大教堂沉睡了几百年,即使已经苏醒,却还保留着英国的“绅士风度”。所以虽然方舟的体积足够大,但他还是决定让女人先行(即所有女人都在队伍右边)。于是他规定:
每一秒时间里,队伍里所有右边有男人的女人跟右边的男人调换位置。
sytrakl希望知道需要多少时间才能实现目的。然而sytrakl无所不能,但偏偏不懂编程。所以他找到了你(高兴吧!Excited!),希望你能帮他完成这个工作。
Ps:如果做不到,那你肯定药丸。
Input
题目有多组输入。每组将给出一串长度为n的字符串(1<=n<=1000000),有两种字符,‘M’表示这是一个男人,‘W’表示这是一个女人。Output
输出总共需要多少时间。Sample Input
WWMMMWWM
MMWWW
Sample Output
42
0
HINT
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<queue> #include<vector> #include<map> using namespace std; typedef long long LL; const int INF = 1e9+7; const int MAXN = 1000005; char str[MAXN]; int dp[MAXN], wait[MAXN]; int main() { while(scanf("%s", str) != EOF) { int Pre = 0, cost = 0, ans = 0, flag = 0; int len = strlen(str); memset(dp, 0, sizeof(dp)); memset(wait, 0, sizeof(wait)); for(int i=0; i<len; i++) { if(str[i] == 'W') { flag = 1; cost ++; } else if(flag) { if(Pre == 0) { dp[Pre] = cost; wait[Pre] = 0; } else { if(wait[Pre-1] - cost >= 0) wait[Pre] = wait[Pre-1] - cost + 1; dp[Pre] = dp[Pre-1] - wait[Pre-1] + cost + wait[Pre]; } cost = 0; ans = max(ans, dp[Pre]); Pre ++; } } printf("%d\n", ans); } return 0; }
相关文章推荐
- Dev控件用法 aspxTreeList 无刷新 aspxGridView 数据
- 第14周—项目1(3)二叉排序树
- 《Go语言入门》第一个Go语言Web程序——简单的Web服务器
- JAVA_SE ----- 基础知识总结-----反射
- sed笔记2
- C#实现简体繁体之间转换
- OC基础(18)
- 如何在JavaWeb程序中使用自定义标签(tag、tld两种)
- UIScrollView的setContentOffset方法
- UVa 10935 卡片游戏
- 【前端开发】 5分钟创建 Mock Server
- 浅析iOS的@property属性
- asp.net 子应用程序/虚拟目录 session共享
- P53第三题
- DevExpress Asp.net ASPxTreeList的基本使用之一
- 什么是阶乘
- [置顶] Html.fromHtml忽视\n符号问题
- httpClient使用文档整理
- 一种简单的奇偶分类
- 计算机专业推荐国际会议