• [BZOJ4760][Usaco2017 Jan]Hoof, Paper, Scissors dp


    4760: [Usaco2017 Jan]Hoof, Paper, Scissors

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 136  Solved: 100
    [Submit][Status][Discuss]

    Description

    You have probably heard of the game "Rock, Paper, Scissors". The cows like to play a similar game th
    ey call "Hoof, Paper, Scissors"
    你可能玩过石头剪刀布这个游戏,奶牛们也喜欢玩类似的游戏,叫做“蹄子剪刀布”
    The rules of "Hoof, Paper, Scissors" are simple. Two cows play against each-other. They both count t
    o three and then each simultaneously makes a gesture that represents either a hoof, a piece of paper
    , or a pair of scissors. Hoof beats scissors (since a hoof can smash a pair of scissors), scissors b
    eats paper (since scissors can cut paper), and paper beats hoof (since the hoof can get a papercut).
     For example, if the first cow makes a "hoof" gesture and the second a "paper" gesture, then the sec
    ond cow wins. Of course, it is also possible to tie, if both cows make the same gesture.
     
    蹄子剪刀布的规则和石头剪刀布的规则是一样的,蹄子踩碎剪刀,剪刀剪布,布包蹄子
     
    Farmer John wants to play against his prize cow, Bessie, at N games of "Hoof, Paper, Scissors" (1≤N
    ≤100,000). Bessie, being an expert at the game, can predict each of FJ's gestures before he makes i
    t. Unfortunately, Bessie, being a cow, is also very lazy. As a result, she tends to play the same ge
    sture multiple times in a row. In fact, she is only willing to switch gestures at most KK times over
     the entire set of games (0≤K≤20). For example, if K=2, she might play "hoof" for the first few ga
    mes, then switch to "paper" for a while, then finish the remaining games playing "hoof".
     
    现在FJ想要和他的最机智的奶牛Bessie玩蹄子剪刀布(我也不知道FJ为什么有蹄子),一共进行了N轮(N<=1e5),B
    essie,作为一个奶牛,非常的怠惰,无论她出什么,都喜欢连续的出,最多变化K次(K<=20),也就是说,对于她
    所出的,记为序列f(i),记sum=有多少个i满足f(i)!=f(i-1)(i>1),而她的sum一定不会超过k
    Given the sequence of gestures FJ will be playing, please determine the maximum number of games that
     Bessiecan win.
     
    现在FJ已经给出了他出的东西,你要告诉Bessie,在不确定她出的东西的情况下,她最多能赢多少次
     

    Input

    The first line of the input file contains N and K.
    输入数据第一行为N,K
    The remaining N lines contains FJ's gestures, each either H, P, or S
    接下来N行表示FJ所出的东西,H表示hoof,P表示paper,S表示Scissors
     

    Output

     
    Print the maximum number of games Bessie can win, given that she can only change gestures at most KK times.
    输出在变化不超过K次的前提下,最多能赢多少次
     

    Sample Input

    5 1
    P
    P
    H
    P
    S

    Sample Output

    4

    HINT

     

    Source

    Gold

    sbdp题。

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdlib>
     4 #include<cmath>
     5 #include<algorithm>
     6 #include<cstdio>
     7 using namespace std;
     8 int n,K;
     9 char s[2];
    10 int c[100005];
    11 int f[100005][25][3];//1->0 0->2 2->1
    12 int main() {
    13     scanf("%d%d",&n,&K);
    14     for(int i=1;i<=n;i++) {
    15         scanf("%s",s);
    16         if(s[0]=='H') c[i]=0;
    17         if(s[0]=='P') c[i]=1;
    18         if(s[0]=='S') c[i]=2;
    19     }
    20     f[1][0][c[1]]=1;
    21     for(int i=2;i<=n;i++) {
    22         for(int j=0;j<=min(K,i);j++) {
    23             for(int k=0;k<3;k++) {
    24                 if(k==c[i]) f[i][j][k]=max(f[i][j][k],f[i-1][j][k]+1);
    25                 else {
    26                     f[i][j][k]=f[i-1][j][k];
    27                     f[i][j][c[i]]=max(f[i][j][c[i]],f[i-1][j-1][k]+1);
    28                 }
    29             }
    30         }
    31     }
    32     int ans=0;
    33     for(int i=0;i<=K;i++) 
    34         for(int j=0;j<3;j++) ans=max(ans,f[n][i][j]);
    35     printf("%d",ans);
    36 }
    View Code
    O(∩_∩)O~ (*^__^*) 嘻嘻…… O(∩_∩)O哈哈~
  • 相关阅读:
    《代码大全2》读书笔记 Week3
    华莱士 勇敢的心 值得一看的电影
    验证sqlserver 不区分大小写
    sql 分割函数
    子报表设置数据源 指定子报表数据 可以预防报表显示错误的问题
    linq 实现 tsql里的 in 和not in的功能
    水晶报表参数构建和数据传入显示函数
    .net 发邮件带附件源码
    将C#的dll文件反编译成il文件工具
    sp_executesql介绍和使用
  • 原文地址:https://www.cnblogs.com/wls001/p/7805679.html
Copyright © 2020-2023  润新知