HDU 5375 Gray code(2015年多校联合 动态规划)
题目连接 : 传送门
题意:
给定一个长度为的二进制串和一个长度为n的序列a[],我们能够依据这个二进制串得到它的Gray code。
Gray code中假设第i项为1的话那么我们就能够得到a[i]的值,在原来的二进制串中有一些位置为?
表示能够为0,
也能够为1求最后所能得到的最大的值。
已知二进制码怎样得到Gray code请看:传送门
分析:
我们能够通过动态规划来解决问题,状态转移也很好找 ,dp[i][j]表示到第i个位置。第i个位置
取j所能得到的最大值。非常明显这个题的j仅仅能有两种取值0,1.
详细的状态转移看代码。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std; const int maxn = 2e5+10; typedef long long LL; char str[maxn]; LL dp[maxn][2]; int a[maxn]; int main()
{
int n,t,cas=1;
scanf("%d",&t);
while(t--){
scanf("%s",str);
n=strlen(str);
for(int i=0;i<n;i++) scanf("%d",a+i);
memset(dp,0,sizeof(dp));
if(str[0]=='1'||str[0]=='? ') dp[0][1]= a[0];
for(int i=1;i<n;i++){
if(str[i]=='? '){
if(str[i-1]=='0')dp[i][1] = dp[i-1][0]+a[i],dp[i][0]=dp[i-1][0];
if(str[i-1]=='1') dp[i][0] = dp[i-1][1]+a[i],dp[i][1]=dp[i-1][1];
if(str[i-1]=='?'){
dp[i][0] = max(dp[i-1][0],dp[i-1][1]+a[i]);
dp[i][1] = max(dp[i-1][1],dp[i-1][0]+a[i]);
}
}
else{
if(str[i]=='1'&&str[i-1]=='?') dp[i][1] = max(dp[i-1][0]+a[i],dp[i-1][1]);
if(str[i]=='1'&&str[i-1]=='1') dp[i][1] =dp[i-1][1];
if(str[i]=='1'&&str[i-1]=='0') dp[i][1] =dp[i-1][0]+a[i];
if(str[i]=='0'&&str[i-1]=='1') dp[i][0] = dp[i-1][1]+a[i];
if(str[i]=='0'&&str[i-1]=='?') dp[i][0] = max(dp[i-1][1]+a[i],dp[i-1][0]);
if(str[i]=='0'&&str[i-1]=='0') dp[i][0] =dp[i-1][0];
}
}
printf("Case #%d: ",cas++);
if(str[n-1]=='?') printf("%I64d\n",max(dp[n-1][0],dp[n-1][1]));
if(str[n-1]=='0') printf("%I64d\n",dp[n-1][0]);
if(str[n-1]=='1') printf("%I64d\n",dp[n-1][1]);
}
return 0;
}
HDU 5375 Gray code(2015年多校联合 动态规划)的更多相关文章
- 2015 Multi-University Training Contest 7 hdu 5375 Gray code
Gray code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- HDU 5375 Gray code (简单dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5375 题面: Gray code Time Limit: 2000/1000 MS (Java/Oth ...
- HDU 5375——Gray code——————【dp||讨论】
Gray code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- hdu 5375 - Gray code(dp) 解题报告
Gray code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- HDU 5375 Gray code 格雷码(水题)
题意:给一个二进制数(包含3种符号:'0' '1' '?' ,问号可随意 ),要求将其转成格雷码,给一个序列a,若转成的格雷码第i位为1,则得分+a[i].求填充问号使得得分最多. 思路:如果了 ...
- HDU 5375 Gray code
题意:给出一个二进制数,其中有些位的数字不确定,对于所有对应的格雷码,与一个序列a对应,第i位数字为1时得分a[i],求最大的得分. 解法:一个二进制数x对应的格雷码为x ^ (x >> ...
- hdu 5375 Gray code 【 dp 】
dp[i][j]表示第i位取j的时候取得的最大的分数 然后分s[i]是不是问号,s[i-1]是不是问号这大的四种情况讨论 #include<cstdio> #include<cstr ...
- HDU 5375 Gray Code 动归
题意:给你一串不确定的二进制码,其对应的格雷码的每一位有对应的权值,问转换成的格雷码的能取到的最大权值是多少. 思路:没有思路,乱搞也AC #pragma comment(linker, " ...
- HDU 5375 Gray code(DP)
题意:给一串字符串,里面可能出现0,1,?,当中问号可能为0或1,将这个二进制转换为格雷码后,格雷码的每位有一个权值,当格雷码位取1时.加上该位权值,求最大权值和为多少. 分析:比赛的时候愚了.竟然以 ...
随机推荐
- TCO 2015 2D
250分题:给一段仅仅有'0','1'构成的字符串,然后给出串上平衡点的定义:在串上找到某个点(位置是p),这个点将串分成左右两部分(能够为空),左右分别计算字符的值的和,假设左边有字符是'1',那么 ...
- POJ 2771 最大独立集 匈牙利算法
(为什么最大独立集的背景都是严打搞对象的( _ _)ノ|壁) 思路:匈牙利算法 没什么可说的-- // by SiriusRen #include <cstdio> #include &l ...
- ubuntu DNS 出错,用以下命令可以解决
具体的错误为:DNS_PROBE_FINISHED_BAD_CONFIG 命令为: sudo rm /etc/resolv.conf sudo ln -s ../run/resolvconf/reso ...
- Excel—— [导入到数据库] or 将数据 [导入到Excel]
将Excel导入到数据库实现如下: 前台代码: @model IEnumerable<Model.Student> @{ Layout = null; } <!DOCTYPE htm ...
- OpenGL编程(八)3D数学与坐标变换
笛卡尔坐标 一维坐标系 以一个点为原点,选定一个方向为正方向(相反的方向为反方向),以一定的距离为标尺建立一维坐标系.一维坐标系一般应用于描述在一维空间中的距离. 举个例子:一维坐标系好比一条拉直的电 ...
- CorelDRAW X6+PhotoZoom这组合,无敌了啊!
520就这样毫无察觉的过去了,对于额这种单身狗,额表示,什么520,什么情人节,统统略过,,可是,可是,即便这样,还是硬生生的吃了一把来势凶猛的远在天际的狗粮,当我看到CorelDRAW X6和Pho ...
- Kattis - Eight Queens
Eight Queens In the game of chess, the queen is a powerful piece. It can attack by moving any number ...
- struts中请求数据自动封装
实现原理 参数拦截器 第一:jsp表单数据填充到action中的属性 必须实现set方法,get方法可以不需要实现,jsp页面name名字保持一致 第二:jsp表单填充到action的对象的属性 js ...
- 执行python manage.py makemigrations时报错TypeError: __init__() missing 1 required positional argument: 'on_delete'
在执行python manage.py makemigrations时报错: TypeError: __init__() missing 1 required positional argument: ...
- Python笔记(28)-----继承
来自https://blog.csdn.net/sunwukong_hadoop/article/details/80175292 1.Python的继承以及调用父类成员 python子类调用父类成员 ...