ACM-ICPC 2014 WF problem a

ACM-ICPC 2014 WF problem a

構造,需要有3,4,5,6,7的特例,然後n就可以轉化爲n-4的解

6,7 的解湊了好久,然後3 也湊了好久,最後編程窮舉算出來。。。

直接上代碼吧

#include <iostream>
using namespace std;


void out(int a, int b)
{
    cout << a << " to " << b << endl;
}

int fuck(int s,int n)
{
    if (n == 3)
    {
        int s0 = s-1;
        out(s0 + 2, s0 - 1);
        out(s0 + 5, s0 + 2);
        out(s0 + 3, s0 - 3);
        return 0;
    }
    if (n == 4)
    {
        int s0 = s - 1;
        out(s0 + 6, s0 - 1);
        out(s0 + 3, s0 + 6);
        out(s0 + 0, s0 + 3);
        out(s0 + 7, s0 + 0);
        return 0;
    }
    if (n == 5)
    {
        int s0 = s - 1;
        out(s0 + 8, s0 - 1);
        out(s0 + 3, s0 + 8);
        out(s0 + 6, s0 + 3);
        out(s0 + 0, s0 + 6);
        out(s0 + 9, s0 + 0);
        return 0;
    }
    if (n == 6)
    {
        int s0 = s - 1;
        out(s0 + 10, s0 - 1);
        out(s0 + 7, s0 + 10);
        out(s0 + 2, s0 + 7);
        out(s0 + 6, s0 + 2);
        out(s0 + 0, s0 + 6);
        out(s0 + 11, s0 + 0);

        return 0;
    }
    if (n == 7)
    {
        int s0 = s - 1;
        out(s0 + 12, s0 - 1);
        out(s0 + 5, s0 + 12);
        out(s0 + 8, s0 + 5);
        out(s0 + 3, s0 + 8);
        out(s0 + 9, s0 + 3);
        out(s0 + 0, s0 + 9);
        out(s0 + 13, s0 + 0);
        return 0;
    }
    int s0 = s - 1;
    int end = 2 * n+s0;
    out(end - 2, s0 - 1);
    out(s0 + 3, end - 2);
    fuck(s+4,n-4);
    out(s0 + 0, end - 5);
    out(end - 1, s0 + 0);
    return 0;
}

int main()
{
    int n;
    while (cin >> n) {
        fuck(1, n);
        cout << endl;
    }   
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章