趕快加入我們來參與討論吧!
您需要 登錄 才可以下載或查看,沒有帳號?加入我們
x
本帖最後由 domen111 於 2014-7-29 22:03 編輯
http://codeforces.com/problemset/problem/452/B
自己寫(競賽中+賽後)的時候想了一大堆做法,想東想西總是會有漏洞。
後來上網查別人的作法,居然輕輕鬆鬆就暴力AC,我居然沒想到!!!
(學上一篇jd3的文,用大字體)
輕易AC的code:
[C++] 純文本查看 復制代碼 #include<iostream>
#include<set>
using namespace std;
typedef pair<int,int> PII;
int n,m;
set<PII> ns;
void add(int x,int y)
{
if(x>=0 && x<=n && y>=0 && y<=m)
ns.insert(make_pair(x,y));
}
inline double dis(PII a,PII b)
{
double x=a.first-b.first;
double y=a.second-b.second;
return x*x+y*y;
}
int main()
{
cin>>n>>m;
//lower-left
add(0,0);
add(0,1);
add(1,0);
//lower-right
add(n,0);
add(n-1,0);
add(n,1);
//upper-left
add(0,m);
add(0,m-1);
add(1,m);
//upper-right
add(n,m);
add(n-1,m);
add(n,m-1);
//brute forces
double best=0;
PII p1,p2,p3,p4;
set<PII>::iterator i1,i2,i3,i4;
for(i1=ns.begin();i1!=ns.end();i1++)
for(i2=ns.begin();i2!=ns.end();i2++)
for(i3=ns.begin();i3!=ns.end();i3++)
for(i4=ns.begin();i4!=ns.end();i4++)
{
if(i1==i2 || i1==i3 || i1==i4 || i2==i3 || i2==i4 || i3==i4)
continue;
double len=dis(*i1,*i2)+dis(*i2,*i3)+dis(*i3,*i4);
if(len>best)
{
best=len;
p1=*i1;
p2=*i2;
p3=*i3;
p4=*i4;
}
}
cout<<p1.first<<" "<<p1.second<<endl;
cout<<p2.first<<" "<<p2.second<<endl;
cout<<p3.first<<" "<<p3.second<<endl;
cout<<p4.first<<" "<<p4.second<<endl;
} |