【HDU 6620】[2019 HDU 多校第四場] Just an Old Puzzle(思維,逆序對)

題目

原題傳送門
由於某種不可告人的原因,沒法複製原題,一複製就說我非原創……
哎╮(╯▽╰)╭
在這裏插入圖片描述

思路

誒,和八數碼好像!
這題那麼多人過!
bfsbfs大法好!
輕鬆bfs水過
由於限制爲120120步,完美超時。
想來想去,又用了AA*搜索。
嘿嘿嘿,好像沒得問題
輕鬆A*水過
再次因爲120120步,完美超時。


120步這個老東西。
於是,萬般無奈,試了試純判斷YesYesNoNo
15宮格,是個奇數。
那麼我們累加每個數的逆序對數目,加上0到終態的曼哈頓距離,奇數則有解,偶數無解。
不可能過的
過了……


好吧,120120步是迷惑人的。

一個1515數碼問題,最多走8080步,不需要想120120步。 來自:沃茨基 dls晚上講題。

好吧,上代碼。

代碼

#include <bits/stdc++.h>

using namespace std;
int a[101010];

int main() {
    int T; scanf("%d", &T);
    while (T--) {
        int ans = 0;
        for (int i = 0; i < 16; i++) {
            scanf("%d", &a[i]);
            if (!a[i]) ans += 6 - i/4 - i%4;
            for (int j = 0; j < i; j++)
                if (a[j] > a[i]) ans++;
        }         
		if (ans & 1) puts("Yes");
		else puts("No");
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章