hdu5375 Gray code(DP)
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5375
题目大意:给你一个二进制串,带’?’的位置能够由你来决定填’1’还是’0’,补充完整之后转换成格雷码表示,每个位置都有一个权值a[i],仅仅有格雷码为’1’的位能够加上权值,问你终于权值之和最大为多少。
格雷码表示能够百度一下,在这里能够通俗一点讲:对于这么一个串,假设i位置是1,那么他后面的数就会变化(0变1、1变0),注意仅仅是看初始串。
比如:初始串为110,那么改变以后则为101,而不是100。
思路:考虑用dp解决,dp[i][j]表示对于第i个位置取j时的最大分数(j取0或者1)。
那么就有dp[i][0]=max(dp[i-1][0],dp[i-1][1]+a[i]);
dp[i][1]=max(dp[i-1][0]+a[i],dp[i-1][1]);
当j为?时,表明j可能为0或者1。那么久两者都考虑处理一遍。
注意初始化。
#include<stdio.h>
#include<math.h>
#include<string.h>
#define max(a,b) a>b? a:b
int dp[200005][2],a[200005];
int main()
{
int T,i,j,l,k,t=0;
char s[200005],c[200005];
scanf("%d",&T);
while(T--)
{
t++;
scanf("%s",s);
l=strlen(s);
for(i=0;i<l;i++)
c[i+1]=s[i];
for(i=1;i<=l;i++)
scanf("%d",&a[i]);
for(i=0;i<200005;i++)
{
dp[i][0]=-999999;
dp[i][1]=-999999;
}
if(c[1]=='0')dp[1][0]=0;
if(c[1]=='1')dp[1][1]=a[1];
if(c[1]=='?'){
dp[1][0]=0;
dp[1][1]=a[1];
}
for(i=2;i<=l;i++)
{
if(c[i]=='0'){
dp[i][0]=max(dp[i-1][0],dp[i-1][1]+a[i]);
}
if(c[i]=='1'){
dp[i][1]=max(dp[i-1][0]+a[i],dp[i-1][1]);
}
if(c[i]=='? '){
dp[i][0]=max(dp[i-1][0],dp[i-1][1]+a[i]);
dp[i][1]=max(dp[i-1][0]+a[i],dp[i-1][1]);
}
}
printf("Case #%d: ",t);
if(c[l]=='0')printf("%d\n",dp[l][0]);
else if(c[l]=='1')printf("%d\n",dp[l][1]);
else printf("%d\n",max(dp[l][0],dp[l][1]));
}
return 0;
}
hdu5375 Gray code(DP)的更多相关文章
- HDU 5375 Gray code(DP)
题意:给一串字符串,里面可能出现0,1,?,当中问号可能为0或1,将这个二进制转换为格雷码后,格雷码的每位有一个权值,当格雷码位取1时.加上该位权值,求最大权值和为多少. 分析:比赛的时候愚了.竟然以 ...
- hdu 5375 - Gray code(dp) 解题报告
Gray code Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- ZOJ 2745 01-K Code(DP)(转)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1745 题目大意:一个串由N个字符组成,每个字符是‘0’或者是‘1’, ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
- visual studio code(vscode) 调试php(转)
原文链接:http://www.cnblogs.com/CLR010/p/5276077.html visual studio code(vscode) 调试php 1.下载vscode (vis ...
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- Visual Studio Code(VSCODE)语言设置
Visual Studio Code(VSCODE)语言设置 语言设置 1.快捷键 Windows.Linux 快捷键是:ctrl+shift+p macOS 快捷键是:command + shift ...
随机推荐
- JAVA编程不得不看的几本经典书籍
为了帮助对java编程感兴趣的同学更好.更快的提高编程技术,武汉北大青鸟光谷校区专业老师在此推荐几本学习编程非常有用的书籍,以供大家参考. 入门类 1.<java从入门到精通>(第3版) ...
- 多线程下单例模式的实现_ThreadLocal_ReentrantLock
package threadStudy; public class MultiThreadSingleInstance { // volatile 防止指令重排 private static vola ...
- caffe这个c++工程的目录结构
目录结构 caffe文件夹下主要文件: data 用于存放下载的训练数据 docs 帮助文档 example 一些代码样例 matlab MATLAB接口文件 python Python接口文件 mo ...
- 【JavaScript从入门到精通】第一课
第一课 初探JavaScript魅力-01 JavaScript是什么 如今我们打开一个大型的网站,都会有很多JS效果的功能和应用.对于学过CSS+HTML的同学,即使是像淘宝那样的网站,用一两天时间 ...
- weblogic启动 web应用ssh关闭 nohup命令
平时我们操作linux服务器的时候,都是通过ssh远程连接,然后启动服务器上的服务的,所以有时候启动weblogic,我们关闭ssh,weblogic 服务也相应的关闭了,那么我们就只能用nohup这 ...
- webpack4前端工程化教程(一)
-本文作为webpack小白入门文章,会详细地介绍webpack的用途.具体的安装步骤.注意事项.一些基本的配置项,并且会以一个具体的项目实例来介绍如何使用webpack.另外,本文会简单地介绍一些最 ...
- 跨平台字符编码转换GBK、UTF8
#if (defined _WIN32 || defined _WIN64) # include <windows.h> # include <stdio.h> # inclu ...
- 集训第六周 数学概念与方法 计数 排列 L题
Description 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样. 话 ...
- 集训第四周(高效算法设计)K题 (滑窗问题)
UVA 11572 唯一的雪花 题意:给你从1到n的数组,要求求得其中的最长连续不重复子序列,经典的滑窗问题,方法是维护一个窗口,设置左框和右框,然后不断的进行维护和更新 方法一: #include& ...
- Mvc Action可以通过jsonp方式调取
jsonp其实是一种特殊的数据获取格式,所以在Aicton直接调取的时候肯定会出现问题,下面代码是对于jsonp调取做的处理 protected virtual ActionResult Create ...