Sample Input
2
00?0
1 2 4 8
????
1 2 4 8
 
Sample Output
Case #1: 12
Case #2: 15

?部分可以是0  or  1,将二进制转化成格雷码后,哪里是 1 就可以取相应的数,求得到数的最大值

①:判断连续的?的个数奇偶不同,两边是否相等。在有时会去掉一个最小值。(感觉写着很麻烦)

#include <iostream>
#include <cstdio>
#include <vector>
#include<cstring>
using namespace std;
char s[200010];
int a[200010];
int main()
{
int k=1;
int case0;
scanf("%d",&case0);
while(case0--)
{
scanf("%s",s);
int leng=strlen(s);
int i,j;
for(i=0; i<leng; i++)
scanf("%d",&a[i]);
long long int ssum,sum;
ssum=0; for(i=0;i<leng; i++)
{
if(s[i]=='?')
{
sum=0;
int min1=0x3f3f3f3f;
for(j=i; s[j]=='?'; j++)
{
sum+=a[j];
if(min1>a[j])
min1=a[j];
}
if(s[j]!='\0')
{
sum+=a[j];
if(min1>a[j])
min1=a[j];
}
if(i==0&&((s[j]=='1'&&(j-i)%2==1)||(s[j]=='0'&&(j-i)%2==0)))
sum-=min1;
if(i!=0&&s[j]!='\0')
{
if(s[i-1]==s[j]&&(j-i)%2==0)
sum-=min1;
if(s[i-1]!=s[j]&&(j-i)%2==1)
sum-=min1;
}
ssum+=sum;
i=j; }
else if(i==0&&s[i]=='1')
ssum+=a[i];
else if(s[i]!=s[i-1]&&i!=0)
ssum+=a[i];
}
printf("Case #%d: ",k++);
cout<<ssum<<endl;
}
return 0;
}

  

②dp

dp[i][0]表示第i个位置上取0.

dp[i][0] = max(dp[i-1][0],dp[i-1][1]+a[i]);

既然能够得到 i 与 i - 1 的关系,自然推出。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MAXN 100010
using namespace std;
const int INF = 0x3f3f3f3f;
char s[200050];
int a[200050];
int dp[200050][2];
int main()
{
int T;
int cas = 1;
scanf("%d",&T);
while(T--)
{
scanf("%s",s);
int len = strlen(s);
for(int i = 0; i < len; i++)
scanf("%d",&a[i]);
dp[0][0] = dp[0][1] = -INF; if(s[0] == '0' || s[0] == '?')
dp[0][0] = 0;
if(s[0] == '1' || s[0] == '?')
dp[0][1] = a[0]; for(int i = 1;i < len;i++)
{
dp[i][0] = dp[i][1] = -INF;
if(s[i] == '0' || s[i] == '?')
dp[i][0] = max(dp[i-1][0],dp[i-1][1]+a[i]);
if(s[i] == '1' || s[i] == '?')
dp[i][1] = max(dp[i-1][0]+a[i],dp[i-1][1]);
} printf("Case #%d: %d\n",cas++,max(dp[len-1][0],dp[len-1][1]));
}
return 0;
}

  

2015 多校联赛 ——HDU5375(dp)的更多相关文章

  1. 2015 多校联赛 ——HDU5410(dp)

    Sample Input 1 100 2 10 2 1 20 1 1   Sample Output 21 题意:共有m元钱和n种东西,求每种单价p,而且你买x个该种物品可以得到Ax+B个,求m元钱最 ...

  2. 2015 多校联赛 ——HDU5389(dp)

    Sample Input 4 3 9 1 1 2 6 3 9 1 2 3 3 5 2 3 1 1 1 1 1 9 9 9 1 2 3 4 5 6 7 8 9   Sample Output 1 0 1 ...

  3. 2015多校.Zero Escape (dp减枝 && 滚动数组)

    Zero Escape Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  4. 2015 多校联赛 ——HDU5334(构造)

    Virtual Participation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  5. 2015 多校联赛 ——HDU5302(构造)

    Connect the Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  6. 2015 多校联赛 ——HDU5294(最短路,最小切割)

    Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  7. 2015 多校联赛 ——HDU5325(DFS)

    Crazy Bobo Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Tota ...

  8. 2015 多校联赛 ——HDU5316(线段树)

    Fantasy magicians usually gain their ability through one of three usual methods: possessing it as an ...

  9. 2015 多校联赛 ——HDU5323(搜索)

    Solve this interesting problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

随机推荐

  1. 高校学生征信系统Postmortem结果

    Postmortem结果 设想和目标 1 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件需要解决的问题是当前高校学生征信系统建设薄弱的问题,我们试图建立 ...

  2. 201621123040《Java程序设计》第六周学习总结

    1.本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结 2.书面作业 2.1clone方法 2.1.1在te ...

  3. NetFPGA-1G-CML点亮 LED

    前言 用vivado建立工程的时候选择的型号为:XC7K325tffg676-1 在以下代码文件中,仿真与设计都没有问题.在xdc文件中的时钟约束与锁相环配置中还存在问题,没有寻找到解决办法 使用手册 ...

  4. New UWP Community Toolkit - AdaptiveGridView

    概述 UWP Community Toolkit  中有一个自适应的 GridView 控件 - AdaptiveGridView,本篇我们结合代码详细讲解  AdaptiveGridView 的实现 ...

  5. EasyUI中Tabs添加远程数据的方法。

    tabs加载远程数据: $(function () { $("#btnquery").click(function () { if (!$("#tcontent" ...

  6. 完美解决ubuntu Desktop 16.04 中文版firefox在非root用户不能正常启动的问题

    ubuntu安装好后,默认安装有firefox浏览器,不过,非root的账户登录,双击firefox图标,居然出现如下提示:Your Firefox profile cannot be loaded. ...

  7. Docker1.12.6+CentOS7.3 的安装

    安装旧版的docker-engine-1.12.6 kubeadm init --api-advertise-addresses=172.16.160.211命令的时候,提示docker版本太新了 一 ...

  8. vmvare入门(1)使用移动,不要使用复制

    1.复制虚拟机会产生新的自动网卡,原来的 System Eth0废了? 2.xftp链接的时候,要选择sftp方式连接,utf8编码.

  9. OAuth2.0学习(1-6)授权方式3-密码模式(Resource Owner Password Credentials Grant)

    授权方式3-密码模式(Resource Owner Password Credentials Grant) 密码模式(Resource Owner Password Credentials Grant ...

  10. Java:日期类Date与Calendar

    Timestamp类型与日期类型之间的转化? Timestamp timestamp = Timestamp.valueOf("2017-03-17 07:00:00"); Dat ...