本來以為是個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無聊的時候會給佇列的每個元素加一玩。但是為了使...