ZOJ 3706 Break Standard Weight (模拟题)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3706

题意:

给你两个标准重量的物体(质量为整数),你可以选择将其中一个分成两块(整数),求用这三个物体最多可以称出多少种重量。

其实一共就13种情况,数据量又比较小,用set排除一下重复的,注意下0就好。

代码:

#include <iostream>
#include <cstdio>
#include <set>
#include <cmath>
#include <algorithm>
using namespace std;
int cal(int a,int b,int c)
{
	set <int> cnt;
	cnt.insert(abs(a));
	cnt.insert(abs(b));
	cnt.insert(abs(c));
	cnt.insert(abs(a+b));
	cnt.insert(abs(a+c));
	cnt.insert(abs(b+c));
	cnt.insert(abs(a-b));
	cnt.insert(abs(a-c));
	cnt.insert(abs(b-c));
	cnt.insert(abs(a+b+c));
	cnt.insert(abs(a+b-c));
	cnt.insert(abs(a+c-b));
	cnt.insert(abs(b+c-a));
	cnt.erase(0);
	return cnt.size();
}
int main()
{
	int t,a,b,maxx;
	scanf("%d",&t);
	while(t--)
	{
		maxx=0;
		scanf("%d%d",&a,&b);
		for(int i=1;i<=a/2;i++)
		{
			maxx=max(cal(i,a-i,b),maxx);
		}
		for(int i=1;i<=b/2;i++)
		{
			maxx=max(cal(i,b-i,a),maxx);
		}
		printf("%d\n",maxx);
	}
	return 0;
}
时间: 2024-10-11 13:11:38

ZOJ 3706 Break Standard Weight (模拟题)的相关文章

ZOJ 3706 Break Standard Weight 解题报告

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5009 题目意思:给出两个mass:x 和 y,问如何将其中一个 mass 一分为二(当然分完之后它们的和要等于原来的mass,或x 或 y),使得利用这三个mass 可称的数量最大.输出这个最大数量. 网上参考别人用STL中的set来写,太厉害了!!!考虑到set对于重复的元素只存储一个,那么当三个mass组合的过程中有重复的,它都会自动舍弃有重复的,不需要用if来

zoj 3706 Break Standard Weight(dp)

Break Standard Weight Time Limit: 2 Seconds                                     Memory Limit: 65536 KB The balance was the first mass measuring instrument invented. In its traditional form, it consists of a pivoted horizontal lever of equal length ar

zoj 3706 Break Standard Weight

分治的思想,比较水,但题很好 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int t,n,m; int vis[50010]; void v(int a,int b) { vis[a]=1;vis[b]=1; vis[a+b]=1;vis[abs(a-b)]=1; } int rmax(int a,int b,int c) { int rcount=0; mems

OCJP(1Z0-851) 模拟题分析(八)

Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有疏漏,还请大家对我的分析提出质疑. QUESTION 235Given:5. class Payload {6. private int weight;7. public Payload (int w) { weight = w; }8. public void setWeight(int w) {

OCJP(1Z0-851) 模拟题分析(五)

Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有疏漏,还请大家对我的分析提出质疑. QUESTION 134 Given:11. class Snoochy {12. Boochy booch;13. public Snoochy() { booch = new Boochy(this); }14. }15.16. class Boochy {1

OCJP(1Z0-851) 模拟题分析(六)

Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有疏漏,还请大家对我的分析提出质疑. QUESTION 167Given:1. import java.util.*;2. public class WrappedString {3. private String s;4. public WrappedString(String s) { this.

OCJP(1Z0-851) 模拟题分析(二)

Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有疏漏,还请大家对我的分析提出质疑. QUESTION 31 Given:1. interface A { public void aMethod(); }2. interface B { public void bMethod(); }3. interface C extends A,B { pub

HDU 4028 The time of a day STL 模拟题

暴力出奇迹.. #include<stdio.h> #include<iostream> #include<algorithm> #include<vector> #include<cmath> #include<queue> #include<set> #include<map> using namespace std; #define ll __int64 #define N 42 ll n,m,ans;

cf428c 模拟题

这题说的是给了 n个数然后又 k次 的交换任意位置的 数字的机会  计算最长的连续子序列的和 这要撸  模拟整个 过程 并不能就是算最长的递增序列 如果只是 找最长的 和序列的 话 会存在 很多问题 在替换的时候 每一个决策 都影响着 下一个决策  这样 存在谁与谁替换 这样的状态有 200!种    那就枚举每个区间这样就可以使得 我们所用替换方法得当  因为在替换中我们进行替换是对不同区间的 操作 比如 在替换序列之内的 数字的时候 其实操作的就是不同的区间 与外面的序列进行替换的时候 操作