ZOJ-3706-Break Standard Weight
来源:互联网 发布:虎贲万岁 知乎 编辑:程序博客网 时间:2024/06/05 06:50
Break Standard Weight
With some standard weights, we can measure several special masses object exactly, whose weight are also positive integers in mass units. For example, with two standard weights 1 and 5, we can measure the object with mass 1, 4, 5 or 6 exactly.
In the beginning of this problem, there are 2 standard weights, which masses are x and y. You have to choose a standard weight to break it into 2 parts, whose weights are also positive integers in mass units. We assume that there is no mass lost. For example, the origin standard weights are 4 and 9, if you break the second one into 4 and 5, you could measure 7 special masses, which are 1, 3, 4, 5, 8, 9, 13. While if you break the first one into 1 and 3, you could measure 13 special masses, which are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13! Your task is to find out the maximum number of possible special masses.
Input
There are multiple test cases. The first line of input is an integer T < 500 indicating the number of test cases. Each test case contains 2 integers x and y. 2 ≤ x, y ≤ 100
Output
For each test case, output the maximum number of possible special masses.
Sample Input
2
4 9
13
Time Limit: 2 Seconds Memory Limit: 65536 KB
With some standard weights, we can measure several special masses object exactly, whose weight are also positive integers in mass units. For example, with two standard weights 1 and 5, we can measure the object with mass 1, 4, 5 or 6 exactly.
In the beginning of this problem, there are 2 standard weights, which masses are x and y. You have to choose a standard weight to break it into 2 parts, whose weights are also positive integers in mass units. We assume that there is no mass lost. For example, the origin standard weights are 4 and 9, if you break the second one into 4 and 5, you could measure 7 special masses, which are 1, 3, 4, 5, 8, 9, 13. While if you break the first one into 1 and 3, you could measure 13 special masses, which are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13! Your task is to find out the maximum number of possible special masses.
Input
There are multiple test cases. The first line of input is an integer T < 500 indicating the number of test cases. Each test case contains 2 integers x and y. 2 ≤ x, y ≤ 100
Output
For each test case, output the maximum number of possible special masses.
Sample Input
2
4 9
10 10
13
9
题目链接:Break Standard Weight
题意:给定两个数,你可以把其中一个数拆成两个数(总和不变),然后将这三个数进行加减操作,问可以得到多少种不同的正整数值。
思路:每个数都有选与不选,被+或者被-,三个数也就是(2^2)^3种状态,然后分别枚举x,y可以拆成的两个数。
这里我将一个6位的2进制数,后面3位表示这3个数选与不选,前3位分别表示这3个数是+还是-。
代码:
#include <iostream>#include <cstdio>#include <cmath>#include <cstdlib>#include <queue>#include <stack>#include <map>#include <set>#include <cstring>#include <string>#include <algorithm>#define lson l, m, rt<<1#define rson m+1, r, rt<<1 |1#define lowbit(x) x&(-x)#define LL long longusing namespace std;set<int> sat;int a[5];void fun(int x){ int num = 0; if(x & 1) { num += ((x&32)?1:-1 ) * a[0]; } if(x & 2) { num += ((x&16)?1:-1 ) * a[1]; } if(x & 4) { num += ((x&8)?1:-1 ) * a[2]; } if(num > 0 && !sat.count(num)) { sat.insert(num); }}int main(){ int T, t[3], ans; scanf("%d", &T); while(T--) { scanf("%d%d", &t[0], &t[1]); ans = 0; for(int k = 0;k <= 1;k++) { a[0] = t[k]; for(int i = 1;i < t[k^1];i++) { a[1] = i; a[2] = t[k^1]-i; sat.clear(); for(int j = 0;j < (1<<6);j++) { fun(j); } ans = max(ans,(int) sat.size()); } } printf("%d\n", ans); } return 0;}
0 0
- zoj 3706 Break Standard Weight
- zoj 3706 Break Standard Weight
- zoj 3706 Break Standard Weight
- Break Standard Weight zoj 3706
- ZOJ 3706 Break Standard Weight
- zoj 3706 Break Standard Weight
- ZOJ 3706 Break Standard Weight
- ZOJ 3706Break Standard Weight
- ZOJ-3706-Break Standard Weight
- ZOJ-BREAK STANDARD WEIGHT
- ZOJ 3706 Break Standard Weight 解题报告
- zoj 3706 Break Standard Weight(数学题)
- ZOJ 3706 Break Standard Weight(暴力)
- ZOJ 3706 Break Standard Weight (模拟题)
- ZOJ 3706 Break Standard Weight(深搜处理)
- ZOJ-3706-Break Standard Weight【10th浙江省赛】【暴力】
- ZOJ Problem Set - 3706 Break Standard Weight(暴力)
- ZOJ 3706 Break Standard Weight(暴力思维)
- 苏嵌 17.03.26
- Linux入门:多线程编程之线程控制
- JSP自定义select标签中取值
- spring applicationContext.xml 配置文件 详解
- JS中数组的比较
- ZOJ-3706-Break Standard Weight
- Java学习笔记_03
- js获取一个元素距离浏览器顶部的高度?
- JVM运行机制
- 回溯法--深度优先搜索
- vi 编辑器的使用
- SQLSERVER分页查询
- ReactNative系列之二FlexBox布局
- 数字在排序数组中出现的次数