BZOJ3107: [cqoi2013]二进制a+b
来源:互联网 发布:usb数据传输线 编辑:程序博客网 时间:2024/06/06 08:54
可以把问题转换成在
然后可以DP,从
后记:这题原来可以构造的,Orz PoPoQQQ
code:
#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<complex>#include<iostream>#include<algorithm>using namespace std;const int maxn = 35;int f[maxn][maxn][maxn][maxn][2];int n,a,b,c;int an,bn,cn;void up(int &x,int y){if(y>x)x=y;}void down(int &x,int y){if(y<x)x=y;}int main(){ an=bn=cn=0; scanf("%d%d%d",&a,&b,&c); int tmp=0; n=0; while(a) { if(a&1)an++; a>>=1; tmp++; } up(n,tmp); tmp=0; while(b) { if(b&1)bn++; b>>=1; tmp++; } up(n,tmp); tmp=0; while(c) { if(c&1)cn++; c>>=1; tmp++; } up(n,tmp); tmp=0; for(int i=0;i<=n;i++) for(int j=0;j<=n;j++) for(int l=0;l<=n;l++) for(int k=0;k<=n;k++) f[i][j][l][k][0]=f[i][j][l][k][1]=INT_MAX; for(int i=0;i<=min(an,1);i++) { for(int j=0;j<=min(bn,1);j++) { f[0][i][j][i^j][i&j]=i+j; //printf("0 %d %d %d %d %d\n",i,j,i^j,i&j,i+j); } } for(int i=1;i<n;i++) { int ap=min(i,an),bp=min(i,bn); for(int j=0;j<=ap;j++) for(int l=0;l<=bp;l++) { for(int k=0;k<=cn;k++) { if(f[i-1][j][l][k][0]!=INT_MAX) { int temp=f[i-1][j][l][k][0]; // 0 0 down(f[i][j][l][k][0],temp); // 0 1 if(l<bn) down(f[i][j][l+1][k+1][0],temp+(1<<i)); // 1 0 if(j<an) down(f[i][j+1][l][k+1][0],temp+(1<<i)); // 1 1 if(j<an&&l<bn) down(f[i][j+1][l+1][k][1],temp+(1<<i+1)); } if(f[i-1][j][l][k][1]!=INT_MAX) { int temp=f[i-1][j][l][k][1]; //0 0 down(f[i][j][l][k+1][0],temp); //0 1 if(l<bn) down(f[i][j][l+1][k][1],temp+(1<<i)); //1 0 if(j<an) down(f[i][j+1][l][k][1],temp+(1<<i)); //1 1 if(j<an&&l<bn) down(f[i][j+1][l+1][k+1][1],temp+(1<<i+1)); } //printf("%d %d %d %d %d %d\n",i,j,l,k,0,f[i][j][l][k][0]); //printf("%d %d %d %d %d %d\n",i,j,l,k,1,f[i][j][l][k][1]); } } } int ret=f[n-1][an][bn][cn][0]; if(ret==INT_MAX) printf("-1\n"); else printf("%d\n",ret); return 0;}
0 0
- [bzoj3107][CQOI2013]二进制a+b
- BZOJ3107: [cqoi2013]二进制a+b
- 【BZOJ3107】【cqoi2013】二进制a+b
- bzoj3107: [cqoi2013]二进制a+b DP
- [BZOJ3107][CQOI2013]二进制a+b(DP)
- 【BZOJ3107】二进制a+b,DP
- [CQOI2013]二进制a+b
- BZOJ 3107 CQOI2013 二进制a+b 构造
- bzoj 3107: [cqoi2013]二进制a+b 构造
- 【CQOI2013】二进制a+b 动态规划
- [二进制构造 || DP] BZOJ 3107 [cqoi2013]二进制a+b
- BZOJ 3107 [cqoi2013]二进制a+b 分类讨论
- bzoj 3107: [cqoi2013]二进制a+b 数位dp
- SGU 112 a^b - b^a 大数+二进制优化
- A+B的和的二进制
- 【BZOJ 3107】【CQOI 2013】二进制a+b
- 二进制数a,b有多少位不同.
- 哈理工 2084 A+B(二进制加法)
- 实现分享到QQ空间 新浪微博等等
- Ashampoo.Snap.9.v9.0.5-AMPED
- Ashampoo.ZIP.Pro.2.v2.0.0-AMPED
- 感谢CSDN网管员,多数科普博文已经恢复搜索访问
- leetcode 485
- BZOJ3107: [cqoi2013]二进制a+b
- RPL(4):RFC6550翻译(4)---RPL的通信流支持&RPL实例
- 【LeetCode】 215. Kth Largest Element in an Array
- SSH配置的步骤以及配置过程应该注意的问题
- 个人学习资料汇总(持续更新)
- 2016年回顾及2017年规划
- Leetcode Count of Smaller Numbers After Self
- .gitignore 比较完善的写法
- JAVA编程风格