2015 Multi-University Training Contest 7 1007
2015-08-11 20:46
218 查看
Gray code
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 208 Accepted Submission(s): 117
[align=left]Problem Description[/align]
The reflected binary code, also known as Gray code after Frank Gray, is a binary numeral system where two successive values differ in only onebit (binary digit). The reflected binary code was originally designed to prevent spurious output from electromechanical switches. Today, Gray codes are widely used to facilitate error correction in digital communications such as digital terrestrial television and some cable TV systems.
#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<string> #include<iostream> #include<cstring> #include<cmath> #include<stack> #include<queue> #include<vector> #include<map> #include<stdlib.h> #include<algorithm> #define LL __int64 using namespace std; const int MAXN=200000+5; int dp[MAXN][2],a[MAXN]; char str[MAXN]; int kase,len; int main() { //freopen("in.txt","r",stdin); int Case=0; scanf("%d",&kase); while(kase--) { memset(str,0,sizeof(str)); memset(a,0,sizeof(a)); memset(dp,0,sizeof(dp)); scanf("%s",str); len=strlen(str); for(int i=0;i<len;i++) scanf("%d",&a[i]); dp[0][0]=0; dp[0][1]=a[0]; for(int i=1;i<len;i++) { if(str[i]=='?') { if(str[i-1]=='?') { dp[i][0]=max(dp[i-1][0],dp[i-1][1]+a[i]);//假设当前位为0,前一位为0则转换后还是0,前一位为1则转换后为1 dp[i][1]=max(dp[i-1][0]+a[i],dp[i-1][1]); } else { dp[i][0]=dp[i-1][str[i-1]-'0']+a[i]*(0^(str[i-1]-'0')); dp[i][1]=dp[i-1][str[i-1]-'0']+a[i]*(1^(str[i-1]-'0')); } } else { if(str[i-1]=='?') dp[i][str[i]-'0']=max(dp[i-1][0]+a[i]*(0^(str[i]-'0')),dp[i-1][1]+a[i]*(1^(str[i]-'0'))); else dp[i][str[i]-'0']=dp[i-1][str[i-1]-'0']+a[i]*((str[i-1]-'0')^(str[i]-'0'));//注意运算符的优先级 } } printf("Case #%d: ",++Case); if(str[len-1]=='?') printf("%d\n",max(dp[len-1][0],dp[len-1][1])); else printf("%d\n",dp[len-1][str[len-1]-'0']); } return 0; }
View Code
相关文章推荐
- Add Custom Tab in Detail screen for MIGO Transaction
- 2015 Multi-University Training Contest 7 hdu 5373 The shortest problem
- abap chain endchain
- hdu 5319 - Painter(模拟题)解题报告
- 2015 2015 Multi-University Training Contest 7 hdu 5375
- Rain on your Parade---hdu2389(HK求最大匹配)
- ubuntu 突然不能 sudo成功,报错su: Authentication failure
- No identities are available for signing的解决方法
- socket bind failed解决方案
- 2015 Multi-University Training Contest 7 hdu 5375 Gray code
- Matrix Chain Multiplication
- hdu 4630 No Pain No Game(树状数组)
- 2015 Multi-University Training Contest 7
- [AIR] AS3读取本地文件夹中的文件
- [AIR] AS3读取txt文档
- Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport e
- Container with most water
- main函数中通过使用Person类和AddressBook类,创建对象、调用方法,实现以下8个功能
- Ubuntu下编译运行Kamailio
- AIX开启telnet服务