洛谷P1633 二进制
P1633 二进制
题目描述
有三个整数A、B、C,以下用N(2)表示N的二进制(没有前导0)。
设A(2)、B(2)、C(2)的最大长度为L,你需要构造三个正整数X、Y、Z,满足以下条件:
(1) X(2)、Y(2)、Z(2)的长度都不超过L。
(2) A(2)与X(2)中1的个数相同。
(3) B(2)与Y(2)中1的个数相同。
(4) C(2)与Z(2)中1的个数相同。
(5) X+Y=Z.。
输入输出格式
输入格式:
第一行包含一个正整数T,表示有T组测试数据。
接下来T行,每行三个正整数A、B、C。
【数据规模】
对于30%的数据中,满足1<=A、B、C<=100;
对于100%的数据中,满足1<=T<=10,1<=A、B、C<=2^30。
输出格式:
输出共T行,每行一个答案。
输出最小的Z。如果没有z则输出-1
输入输出样例
4
7 6 9
1 1 1
1 1 4
3 3 9
10
-1
2
6
/*
我们考虑三个长度为l的串;
显然如果这3个串符合条件的话;
我们就只要保证增加2^l级别的值满足加法原则就好了;
所以我们大力dp;
f[i][a][b][c][0/1]
i表示位数
a表示x串前i-1个字符所有的1的数量;
b,c同理;
0/1表示c串在第i位是1还是0;
预处理
f[1][0][0][0][0]=0;其他都是inf;
转移就是考虑当前第i位a,b要不要放1;
然后对应的计算c新增的值;
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 35
long long f[N][N][N][N][],a1,b1,c1;
int T,n;
int l(long long x){
int cnt1=,cnt2=;
while(x){
cnt1++;
if(x&)cnt2++;
x>>=;
}
n=max(n,cnt1);
return cnt2;
}
int main(){
scanf("%d",&T);
while(T--){
cin>>a1>>b1>>c1;n=;
int A=l(a1),B=l(b1),C=l(c1);
memset(f,/,sizeof(f));
f[][][][][]=;
for(int i=;i<=n;i++){
for(int a=;a<=A;a++)
for(int b=;b<=B;b++)
for(int c=;c<=C;c++){
long long v=f[i][a][b][c][];
f[i+][a][b][c][]=min(f[i+][a][b][c][],v);
f[i+][a+][b+][c][]=min(f[i+][a+][b+][c][],v+(<<i));
f[i+][a+][b][c+][]=min(f[i+][a+][b][c+][],v+(<<(i-)));
f[i+][a][b+][c+][]=min(f[i+][a][b+][c+][],v+(<<(i-)));
v=f[i][a][b][c][];
f[i+][a][b][c+][]=min(f[i+][a][b][c+][],v);
f[i+][a+][b+][c+][]=min(f[i+][a+][b+][c+][],v+(<<i));
f[i+][a+][b][c][]=min(f[i+][a+][b][c][],v+(<<(i-)));
f[i+][a][b+][c][]=min(f[i+][a][b+][c][],v+(<<(i-)));
}
}
if(f[n+][A][B][C][]>(<<))printf("-1\n");
else cout<<f[n+][A][B][C][]<<endl;
}
}
洛谷P1633 二进制的更多相关文章
- 洛谷P4428二进制 [BJOI2018] 线段树
正解:线段树 解题报告: 传送门! 话说开始看到这题的时候我想得hin简单 因为关于%3有个性质就是说一个数的各个位数之和%3=这个数%3嘛,小学基础知识? 我就想着,就直接建一棵树,只是这棵树要用个 ...
- 洛谷 P2104 二进制
P2104 二进制 题目描述 小Z最近学会了二进制数,他觉得太小的二进制数太没意思,于是他想对一个巨大二进制数做以下 4 种基础运算: 运算 1:将整个二进制数加 1 运算 2:将整个二进制数减 1 ...
- 洛谷P2456 二进制方程
题目 字符串模拟+并查集 建立两个并查集分别存放每个变量的每一位数的祖先,一个是1一个是2 考虑每个字母的每一位的数都是唯一的,先模拟,记录每一个变量的每一位. 一一映射到方程中去,最后将两个方程进行 ...
- 「洛谷5300」「GXOI/GZOI2019」与或和【单调栈+二进制转化】
题目链接 [洛谷传送门] 题解 按位处理. 把每一位对应的图都处理出来 然后单调栈处理一下就好了. \(and\)操作处理全\(1\). \(or\)操作处理全\(0\). 代码 #include & ...
- Bzoj5294/洛谷P4428 [Bjoi2018]二进制(线段树)
题面 Bzoj 洛谷 题解 考虑一个什么样的区间满足重组之后可以变成\(3\)的倍数.不妨设\(tot\)为一个区间内\(1\)的个数.如果\(tot\)是个偶数,则这个区间一定是\(3\)的倍数,接 ...
- 洛谷P1017 进制转换
洛谷P1017 进制转换 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 \(1*10 ...
- 洛谷P1117 棋盘游戏
洛谷1117 棋盘游戏 题目描述 在一个4*4的棋盘上有8个黑棋和8个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的.移动棋子的规则是交换相邻两个棋子.现在给出一个初始棋盘和一个最终棋盘,要 ...
- 洛谷1377 M国王 (SCOI2005互不侵犯King)
洛谷1377 M国王 (SCOI2005互不侵犯King) 本题地址:http://www.luogu.org/problem/show?pid=1377 题目描述 天天都是n皇后,多么无聊啊.我们来 ...
- 洛谷 P1017 进制转换
推荐洛谷 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*10^2+2*10^1+ ...
随机推荐
- Map总结--HashMap/HashTable/TreeMap/WeakHashMap使用场景分析(转)
首先看下Map的框架图 1.Map概述 1.Map是键值对映射的抽象接口 2.AbstractMap实现了Map中绝大部分的函数接口,它减少了“Map实现类”的重复编码 3.SortedMap有序的“ ...
- 安装pymysqlpool并使用(待补充)
pip3 install PyMysqlPool 第一个错,提示没有装c++ 14.0,下载安装报下一个错 error: Setup script exited with error: Microso ...
- java 解析excle
jjava解析excle或者csv文件并导出到web界面: 创建ExcelShower.java package com.ssm.controller; import java.io.File; im ...
- poj 1469 COURSES (二分图模板应用 【*模板】 )
COURSES Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18454 Accepted: 7275 Descript ...
- HDU 1032 The 3n + 1 problem (这个题必须写博客)
The 3n + 1 problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- Android窗口系统第一篇---Window的类型与Z-Order确定
Android的窗口系统是UI架构很重要的一部分,数据结构比较多,细节比较多.本篇文章主要介绍窗口相关数据结构和抽象概念理解,关于[窗口部分的博客]计划如下. 1.窗口Z-Order的管理 2.应用程 ...
- Promise 入门与使用
Tags: ECMAScript6 参考资料 promises-book Promise对象 we-have-a-problem-with-promises Promise最初被提出是在 E语言中, ...
- 集训Day5
生活还得继续 bzoj3771 题面让我笑了很长时间 给出 n个物品,价值为别为Xi且各不相同,现在可以取1个.2个或3个,问每种价值和有几种情况? *顺序不同算一种 很傻逼的一个母函数+容斥,用A( ...
- CHAKRA3 UART2
APP下: 配置BD文件: #define PADS_TCON_CONFIG Unknown_pad_mux #define PADS_UART2_MODE Unknown_pad_mux #defi ...
- Windows下Anaconda安装 python + tensorflow
下载安装Anaconda 首先下载Anaconda,可以从清华大学的镜像网站进行下载. 安装Anaconda,注意安装时不要将添加环境变量的选项取消掉. 安装完成之后,在安装目录下cmd,输入 con ...