时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

齐齐和司机正在玩剪刀石头布,不过他俩有些玩腻了,所以思考了一个全新的“剪刀石头布”的游戏。
全新的“剪刀石头布“”的胜负规则和剪刀石头布一样,每人有3种手势,分别为剪刀(scissors)、石头(rock)、布(paper)。剪刀胜于布,布胜于石头,石头胜于剪刀,当手势相同时为平局。
齐齐可以在司机出手势后再出自己的手势,但是不能连续两局出同一种手势。
他们一共进行n盘对局。每一盘中,胜者+1分,败者-1分,平局两人都不扣分。
已知司机的n局的出手势情况,求齐齐进行n盘对局后获得的最高分数。

输入描述:

第1行输入一个整数n,代表进行n盘对局。
第2-n+1行,每行输入一个字符串,为“scissors”、“rock”、“paper”之一,代表司机第i盘对局的手势情况。
数据保证:1≤n≤106

输出描述:

输出一行结果,代表齐齐进行n盘对局后获得的最高分数。
示例1

输入

3
rock
paper
scissors

输出

3

说明

齐齐可以第1盘出“paper”,第2盘出“scissors”,第3盘出“rock”,最高分数3分。
示例2

输入

2
rock
rock

输出

1

说明

齐齐可以第1盘出“paper”,第2盘出“rock”,最高分数1分。

【分析】:

【代码】:
#include<iostream>
#include<cstdio>
#include<cstring> using namespace std; int dp[][] = {};
int n = ;
int s[] = {}; inline int getScole(int a,int b)
{
if(a==&&b==) return ;
if(a==&&b==) return -;
if(a==&&b==) return ;
if(a==&&b==) return -;
if(a==&&b==) return ;
if(a==&&b==) return -;
return ;
} int main()
{
cin>>n;
for(int i=;i<=n;i++)
{
char ss[];
cin>>ss;
if(strcmp(ss,"scissors") == )
{
s[i]=;
}
else if(strcmp(ss,"paper") == )
{
s[i]=;
}
else if(strcmp(ss,"rock") == )
{
s[i]=;
}
}
dp[][]=getScole(,s[]);
dp[][]=getScole(,s[]);
dp[][]=getScole(,s[]);
for(int i=;i<=n;i++)
{
for(int j=;j<;j++)
{
dp[i][j]=max(dp[i-][(j+)%],dp[i-][(j+)%])+getScole(j,s[i]);
}
}
cout<<max(max(dp[n][],dp[n][]),dp[n][])<<endl;
return ;
}
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<fstream>//石头1 剪刀2 布3
#include<cmath>
#include<algorithm>//while(r<l)
using namespace std;
int a[];
int dp1[];
int dp2[];
int dp3[];
char s[];
int main()
{
int n;
int ans=;
cin>>n;
memset(dp1,,sizeof(dp1));
memset(dp2,,sizeof(dp2));
memset(dp3,,sizeof(dp3));
for(int i=;i<n;i++)
{
cin>>s;
if(s[]=='r') a[i]=;
if(s[]=='s') a[i]=;
if(s[]=='p') a[i]=;
if(a[i]==)
{
dp3[i]+=;
dp2[i]-=;
if(i!=)
{
dp3[i]+=max(dp2[i-],dp1[i-]);
dp2[i]+=max(dp3[i-],dp1[i-]);
dp1[i]+=max(dp2[i-],dp3[i-]);
}
}
if(a[i]==)
{
dp1[i]+=;
dp3[i]-=;
if(i!=)
{
dp3[i]+=max(dp2[i-],dp1[i-]);
dp2[i]+=max(dp3[i-],dp1[i-]);
dp1[i]+=max(dp2[i-],dp3[i-]);
}
}
if(a[i]==)
{
dp2[i]+=;
dp1[i]-=;
if(i!=)
{
dp3[i]+=max(dp2[i-],dp1[i-]);
dp2[i]+=max(dp3[i-],dp1[i-]);
dp1[i]+=max(dp2[i-],dp3[i-]);
}
} }
cout<<max(max(dp1[n-],dp2[n-]),dp3[n-]);
return ;
}

2

中矿大 C 石头剪刀布【决策DP*待看/codeforces原题】的更多相关文章

  1. LibreOJ #516. 「LibreOJ β Round #2」DP 一般看规律

    二次联通门 : LibreOJ #516. 「LibreOJ β Round #2」DP 一般看规律 /* LibreOJ #516. 「LibreOJ β Round #2」DP 一般看规律 set ...

  2. 前端自学vs跟大神系统学?你看着办

    前端自学vs跟大神系统学?你看着办 一名广告专业学生,在大三的时候对于广告行业的前景不是很看好,转而自学web前端,刚开始接触的前端语言是html(html应该不算编程语言),上手很容易,在w3csh ...

  3. BZOJ_1827_[Usaco2010 Mar]gather 奶牛大集会_树形DP

    BZOJ_1827_[Usaco2010 Mar]gather 奶牛大集会_树形DP 题意:Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来 ...

  4. [LOJ#516]「LibreOJ β Round #2」DP 一般看规律

    [LOJ#516]「LibreOJ β Round #2」DP 一般看规律 试题描述 给定一个长度为 \(n\) 的序列 \(a\),一共有 \(m\) 个操作. 每次操作的内容为:给定 \(x,y\ ...

  5. [原题复现][极客大挑战 2019]BuyFlag

    简介  原题复现:[极客大挑战 2019]BuyFlag  考察知识点:php函数特性(is_numeric().strcmp函数())  线上平台:https://buuoj.cn(北京联合大学公开 ...

  6. [原题复现][极客大挑战 2019]HardSQL(updatexml报错注入)

    简介  原题复现:  考察知识点:SQL注入(报错注入,绕过过滤)  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台 特别感谢!) 榆林学院内可使用信安协会内部的CTF训练平 ...

  7. P1373 小a和uim之大逃离 二维dp

    题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...

  8. 【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集会(树形dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1827 仔细想想就好了,, 每个点维护两个值,一个是子树的费用,一个是除了子树和自己的费用.都可以用d ...

  9. 洛谷 P1373 小a和uim之大逃离 Label:dp 不会

    题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...

随机推荐

  1. Yapi的坑

    前一段时间,研究WEB Api相关的工具. YApi 可以内网部署,内心十分的欢喜啊.而且gitHub上推荐超过4000星,成绩很优异嘛.然而通过最终的尝试,我还是打算放弃他,投入Postman的怀抱 ...

  2. 珍藏版 Python 开发工程师面试试题

    珍藏版 Python 开发工程师面试试题 说明:不拿到几家公司的offer,那就是卑鄙的浪费 一.Python_基础语法 1.可变与不可变类型: 2.浅拷贝与深拷贝的实现方式.区别:deepcopy如 ...

  3. 一个初学者的辛酸路程-继续Django

    问题1:HTTP请求过来会先到Django的那个地方? 先到urls.py  ,里面写的是对应关系,1个URL对应1个函数名. 如果发URL请求过来,到达这里,然后帮你去执行指定的函数,函数要做哪些事 ...

  4. [译]8-spring bean的作用域

    在spring中使用<bean/>标签定义bean的时候,可以使用scope属性来定义bean的作用域.如果想要每次 从spring容器得到一个新创建的bean实例,可以指定scope=& ...

  5. glance上传镜像

    glance image-create --name "centos68-test" --file centos68.dsk \ --disk-format raw --conta ...

  6. [0] OpenCV_Notes - 琐碎

    CV_8UC1,CV_8UC2,CV_8UC3等意思 一般的图像文件格式使用的是 Unsigned 8bits,CvMat矩阵对应的参数类型就是CV_8UC1,CV_8UC2,CV_8UC3.最后的C ...

  7. CodeForces-757B Bash's Big Day

    题目链接 https://vjudge.net/problem/CodeForces-757B 题目 Description Bash has set out on a journey to beco ...

  8. win10&hyper上装Ubuntu出现没有找到dev fd0, sector 0 错误

    win10 hyper装 ubuntu blk_update_request:I/O error,dev sr0,sector0 错误 配置好安装重启后出现 blk_update_request: I ...

  9. web浏览器中的javascript -- 2

    在html里嵌入javascript: 在html文档里嵌入客户端javascript代码有4种方式: 1.内联,放置在<script>和</script>标签对之间; 2.放 ...

  10. swagger-ui enum select

    swagger-ui enum select Array[string] https://dejanstojanovic.net/aspnet/2018/march/displaying-multip ...