USACO1 4 The Clocks 解題報告

2021-06-03 10:38:23 字數 1271 閱讀 3412

第一次用bfs,以前只是會用遞迴的dfs搜尋,這次對照著書,硬生生的把bfs打出來了,終於明白什麼叫做複雜度了。

先上程式(很明顯這題的bfs會很痛苦,因為第一層9個,第二層9×9,第三層9×9×9,大約到了8層的時候,無論是什麼樣的佇列,還是堆疊都不崩潰了)

很悲慘,到了第三組資料的時候完全不可能通過了,佇列溢位了。實在無法達到35億的儲存效果。希望和我一樣遇到這個問題的小白注意一下子。

#include#include#include#includeusing namespace std;

char means[10][6]= ;

int clockx[10],t[11];

int queue[3000000][11];

long long int qs=0,qe=0;

int stack[1000],sp=0;

int p;

int inthequeue(int t)

int check(int t[10])

int main()

if(inthequeue(t));

else

if(check(t))

qe++;

}if(!flag) break;

qs++;

}j=queue[qe][0];

stack[sp]=queue[qe][10];

sp++;

while(j!=0)

for(j=sp-1; j>0; j--)

cout《然後呢,難以剪枝的bfs最終還是被我放棄了,參考了一下網上各位大牛的思路。

貌似這一題是90年代ioi上的題目,還是poj上的原題,寫出解題報告的大牛真不少。

一位大牛所說,需要使用高斯消去定理(我汗。這個真不會),還有一位大牛說,需要用到線性代數裡面的矩陣(想想也是啊,可是。。線代我也不會。。),最後一位oi同學提到了可以直接列舉就可以解決問題,我也仔細一想,果然,僅僅是3^9的複雜度,每次旋轉九十度,只與次數(0.1.2.3次)有關,不和順序有關。所以我就有了這樣很娛樂的方法。。如此做來相當飄逸。。

#include#include#includeusing namespace std;

char means[10][6]= ;

int clocks[10],t[11];

int x[10];

int check(int t[10])

int main()

if(check(t))

{i=1;

while(x[i]==0) i++;

cout<

USACO1 4 解題報告

本章主要考的是貪心和一些比較麻煩的模擬。難度相比上一章有很明顯的提公升。但是稍微想一下還是可以想出來的 第五題除外,看了一下題解的思路 usaco 思路 很明顯是一道貪心基礎題。肯定是要先買每單位價錢最便宜的,然後再依次買貴的。這個不用證明了吧。id ssl zyc2 task milk lang ...

USACO 修理牛棚

同樣是一道貪心題,我的思路是用乙個陣列存下所有的空擋,對空擋進行排序,然後再在總長度中減去前m 1 大的空檔長度。關鍵還是理解題意。貌似洛谷 oj不支援 int min 之類的。還有要對初始資料排一次序,害我 wa了一次。include include includeusing namespace ...

USACO 奶牛電信

題目鏈結 洛谷1345 題目大意 給出乙個 n 個點 m條邊的無向圖,與 s,t 問至少刪去多少個點,使 s,t 不連通。n 100,m 600 分析 1.對於這種分離s,t 的題,考慮最大流 最小割的方法。2.然而題目要求割點,而不是割邊,怎麼辦?這就是一種經典的拆點題。3.把每個點 i 拆成兩個...