zoukankan      html  css  js  c++  java
  • hdu 5375 Gray code 【 dp 】

    dp[i][j]表示第i位取j的时候取得的最大的分数

    然后分s[i]是不是问号,s[i-1]是不是问号这大的四种情况讨论

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 const int maxn = 200005;
     8 int dp[maxn][3];
     9 int a[maxn];
    10 char s[maxn];
    11 int n;
    12 
    13 int main(){
    14     int T;
    15     scanf("%d",&T);
    16     int kase = 0;
    17     while(T--){
    18         cin >> (s+1);
    19         n = strlen(s+1);
    20         for(int i = 1;i <= n;i++) scanf("%d",&a[i]);
    21         
    22         s[0] = '0';
    23         memset(dp,0,sizeof(dp));
    24         
    25         for(int i = 1;i <= n;i++){
    26             if(s[i] == '?'){
    27                 if(s[i-1] == '?'){
    28                     dp[i][0] = max(dp[i-1][1] + a[i],dp[i-1][0]);
    29                     dp[i][1] = max(dp[i-1][0] + a[i],dp[i-1][1]);
    30                 }
    31                 else{
    32                     if(s[i-1] == '0') dp[i][0] = dp[i-1][0],dp[i][1] = dp[i-1][0] + a[i];
    33                     else dp[i][0] = dp[i-1][1] + a[i],dp[i][1] = dp[i-1][1];
    34                 }
    35             }
    36             else{
    37                 if(s[i-1] == '?'){
    38                     if(s[i] == '0') dp[i][0] = max(dp[i-1][0],dp[i-1][1] + a[i]);
    39                     else dp[i][1] = max(dp[i-1][0] + a[i],dp[i-1][1]);
    40                 }
    41                 else{
    42                     if(s[i] == s[i-1]) dp[i][s[i]-'0'] = dp[i-1][s[i-1]-'0'];
    43                     else dp[i][s[i]-'0'] = dp[i-1][s[i-1]-'0'] + a[i];
    44                 }
    45             }
    46         //    printf("dp[%d][0] = %d   dp[%d][1] = %d
    ",i,dp[i][0],i,dp[i][1]);
    47         }
    48         printf("Case #%d: ",++kase);
    49         if(s[n] == '?') printf("%d
    ",max(dp[n][0],dp[n][1]));
    50         else printf("%d
    ",dp[n][s[n]-'0']);
    51     }
    52     return 0;
    53 }
    View Code

    话说比赛的时候,题目的意思都没有读懂------

    诶---

    加油啊---goooooo---

  • 相关阅读:
    C#中WinForm程序退出方法技巧(转载)
    webbrowser访问网站禁止弹窗
    (转载)ASP.NET三大核心对象及基础功能解析
    webBrowser调用外部js文件和js函数(转载)
    java IO流
    java线程状态,优先级
    java线程
    Collection接口,Map接口
    序列化和反序列化
    JsonUtil自定义
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4726122.html
Copyright © 2011-2022 走看看