2015 北京區域賽現場賽1C 裸的BFS

2021-07-22 17:52:05 字數 951 閱讀 4467

本來以為是個dp,想這怎麼轉移,一直不會做,後來看了題解發現好簡單

1.對於兩種操作的這類問題,要想好操作的順序會不會影響,這題而言,如果你是操作1和操作2間歇著做的話,一定不如把操作二都做完之後再對那些做過操作一的做一次操作

(想一想就知道了,當時也想找到操作之間的關係,可是沒發現,好題啊!)

2. 考慮做完操作2之後的情況,同一種顏色一定會變成同一種顏色,所以狀態數最多就6^6種,然後用bfs列舉出 123456到每種狀態的最小步數

每次只要列舉每種做完操作2之後的情況,然後模擬操作一,就可以求出最優值了

1a

#include#include#include#include#includeusing namespace std;

const int inf = 1 << 30;

int step[1000000];

void init()

for(int i = 1; i <= 6; i++)

for(int j = 1; j <= 6; j++)

for(int k = 0; k <= 5; k++)

}/*for(int k = 0; k <= 5; k++)

*/int next = a[0];

for(int k = 1; k <= 5; k++)

// printf("%d\n",next);

if (step[next] == -1)

for(int k = 0; k <= 5; k++)

a[k] = tmp1[k];

} }return;

}int main()

//if (cur == 6) printf("%d\n",next);

ans = min(ans,cur);

} printf("%d\n",ans);

} return 0;

}

2015acm區域賽北京

a.xiongnu s land 二分答案 題意 r r的平面上給你n個矩形,你要找到一條豎直的直線x k,使得直線左邊的矩形面積和大於等於右邊的矩形面積和,而且它們的差值要盡量小,並且k要盡量大 題目保證矩形不會相交 資料範圍 r 1000000,n 10000 思路 二分答案,判定條件是差值小於...

ACM 2015 亞洲區域賽北京賽區A題(二分)

該題方法就是二分,二分r,然後在判斷函式中判斷在列舉點左邊的綠洲面積。這樣做的複雜度是o nlogr 但是一開始wa了一發,後來才發現原來是因為有這樣的資料 一塊很大的沙漠中只有乙個邊長為1的小正方形綠洲。這樣的資料答案是r。所以我二分出來之後再向右推一下,直到不符合條件為止。下面是我ac 二分求的...

牛客練習賽1 C 圈圈題解

演算法分析 解題 巧妙點 shy有乙個佇列a 1 a 2 a n 現在我們不停地把頭上的元素放到尾巴上。在這過程中我們會得到n個不同的佇列,每個佇列都是a k a k 1 a n a 1 a k 1 的形式。在這些佇列中,我們可以找到字典序最小的。shy無聊的時候會給佇列的每個元素加一玩。但是為了使...