竹園論壇

標題: MemSQL Start[c]UP 2.0 - Round 1 B. 4-point polyline [打印本頁]

作者: domen111    時間: 2014-7-29 21:59
標題: MemSQL Start[c]UP 2.0 - Round 1 B. 4-point polyline
本帖最後由 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;
}





歡迎光臨 竹園論壇 (http://forum.tfcis.org/) Powered by Discuz! X3.2