特點:
一輪搜尋完成後,清空標記陣列的問題
在搜尋的過程中,需要借助標記陣列,來防止重複的訪問。
之前採取的方法是,通過標記為1,表示該值被訪問過。
但是這樣做不適合多輪的搜尋,因為每輪搜尋結束後,都需要重新把標記陣列清零。
解決:每輪搜尋都設定乙個唯一的值(不再侷限於1和0)
標記陣列的本質是通過設定不同的數字,來區分兩塊資料。
乙個區域裡面的所有的點的答案值相同,如何賦值的問題
通過搜尋該區域裡面所有的點,得到乙個答案。同時,根據題意,這個答案也是同區域裡面其他點的答案。因此,希望採用記憶化的思想,當查詢其他點時,直接輸出答案。
聯想到上乙個問題中提到的標記陣列,恰好,標記陣列具有這樣的特性,因為每輪搜尋都相當於完成乙個區域的查詢,因此 通過查詢該點的 標記陣列所代表的值 ,來判斷是否需要重新搜尋。
無向圖存邊的陣列容量開二倍的問題
雖然題目只給出了一條邊,但是因為是無向圖,所以要正反處理兩次,因此存邊的陣列容量應該開二倍。
背景因為題目要求玩家只要最後可以安全到達最後一列即可,設共有n列,根據題目規則,因為玩家只能走值為「.」的格,且玩家到達第n列,第n+1列,第n+2列都輸出「yes」。 因此,如果不對第n+1列,第n+2列做預處理的話,前後條件就發生了衝突。
教訓題目
有顏色分別為a b c d的四種顏色塊,他們之間通過互相交融,使得每種顏色都能有特定數量的聯通塊。
解題思想
由小及大
發現四個顏色的組合,其實也可以用這種思想。
這段時間做搜尋做的,光想著怎麼搜尋來找到全部平行四邊形的個數,忘記了可以直接用數學方法來計算。
發現問題的關鍵,即乙個點刪除的條件是 到達該點的最長距離是否大於該點的權值,因此應當維護這麼乙個陣列con,con[i]代表到達點i的最長路徑的長度。
//樹型結構,已知結點數求完全k叉樹的深度
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const double pi=acos(-1.0);
const double e=exp(1);
//const int maxn =2e5+10;
const int n =332748118;
int main()
else
else if(head > n) // ceng-1層滿的k叉樹
else
break;
}mid *= k; // k的ceng次冪
head += mid;}}
printf("%lld\n",ans);
}return 0;
}
集訓日記(暑期第一周) 6 22始
從公元2020年6月22日開始,在不平凡的疫情環境下,我開始了集訓生活。day1總是忘記找老師要 今天就是集訓第二天了,第一天的晚上真是個讓人難忘的晚上,這是我在衡中第二次睡眠時間低於三小時 第一次因為發燒 昨晚由於沒聽老姚的話,放棄了蚊帳的保護,開始覺得沒什麼,可是好景不長,嗡嗡的聲音擾得人睡不著...
第一周小結
匯入檔案的順序 1.標準庫的匯入 2.第三方庫的匯入 3.應用程式指定匯入 import foo from foo import bar from foo.bar import baz from foo.bar import quux from foob import ar 這周主要是以python...
第一周小結
暑期訓練 day7 趙景樂今天反思了一下這乙個星期的學習,我覺得像比於手動打 我還是比較喜歡看書思考 為什麼那樣寫,因為在大模板的時候並沒有做題的時候的那種感覺,因此興趣也不是很大。我想在 實現上不如去做例題的原題,這樣有錯誤了也好檢查,能更好的了解這些 我想這種學習方式更適合我。這週是訓練的第一周...