您的位置:首页 > 其它

ZOJ 3706 Break Standard Weight

2016-02-28 18:05 411 查看
枚举所有情况

#include<iostream>
#include<cstdio>
#include<set>
#include<string>
#include<string.h>
#include<cstring>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<cctype>
#include<algorithm>
#include<sstream>
#include<utility>
#define mt(a) memset(a,0,sizeof (a))
#define fl(a,b,c) fill(a,b,c)
#define SWAP(a,b,t) (t=a,a=b,b=t)

#define inf 1000000000+7

using namespace std;
typedef long long ll;

int main()
{
int T;
cin >> T;
while (T--)
{
int x, y;

cin >> x >> y;
int maxx = 0;
for (int i = 1; i < x; i++)
{
set<int>s;
s.insert(i);
s.insert(x - i);
s.insert(x);
if (abs(x - 2 * i)!=0)s.insert(abs(x - 2 * i));
if (abs(i - x + i) != 0)s.insert(abs(i - x + i));
if(y!=0)s.insert(y);
s.insert(abs(i + y));
if(abs(y-i)!=0)s.insert(abs(y - i));
if(abs(y-x+i)!=0)s.insert(abs(y - x + i));
if(abs(y+x-i)!=0)s.insert(abs(y + x - i));
if(abs(y+x-2*i)!=0)s.insert(abs(y + x - 2 * i));
if (abs(y + i - x + i)!=0)s.insert(abs(y + i - x + i));
s.insert(x + y);
if(abs(y-x)!=0)s.insert(abs(y - x));
maxx = maxx > s.size() ? maxx : s.size();
}
int t;
SWAP(x, y, t);
for (int i = 1; i < x; i++)
{
set<int>s;
s.insert(i);
s.insert(x - i);
s.insert(x);
if (abs(x - 2 * i) != 0)s.insert(abs(x - 2 * i));
if (abs(i - x + i) != 0)s.insert(abs(i - x + i));
if (y != 0)s.insert(y);
s.insert(abs(i + y));
if (abs(y - i) != 0)s.insert(abs(y - i));
if (abs(y - x + i) != 0)s.insert(abs(y - x + i));
if (abs(y + x - i) != 0)s.insert(abs(y + x - i));
if (abs(y + x - 2 * i) != 0)s.insert(abs(y + x - 2 * i));
if (abs(y + i - x + i) != 0)s.insert(abs(y + i - x + i));
s.insert(x + y);
if (abs(y - x) != 0)s.insert(abs(y - x));
maxx = maxx > s.size() ? maxx : s.size();
}

cout << maxx << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: