原创 USACO2014JanuarySilver Cross Country Skiing

【分析】 算是一道簡單的搜索題,這個最小疲勞值顯然是越大越好,符合單調性,所以用二分來枚舉他的最小疲勞值,再隨便從一個“1”開始走,看最後是否走完了所有的“1”。 【代碼】 #include<cmath> #include<ve

原创 SRM 531 SutTheBumbers

【分析】 一開始是直接想到用貪心的,因爲樣例是完全可以過的(要麼全是橫的,要麼全是豎的)。不過在用大數據跑的時候就發現了問題。貪心不行,難道我們真的要模擬怎麼分割這個矩形嗎?不說複雜度,關鍵是不會模擬啊。最後將目

原创 NOIP2016換教室

【題目分析】 距離我的第一次noip已經4、5個月了,最近學了概率dp,知道概率dp中的期望值是什麼。便準備重新寫一下這題,發現這一題只是一個普通dp,沒有用到之前練的概率dp那些整體消係數和高斯消元之類的,這道題目其實和概率

原创 USACO2014FebruaryGold Cow Decathlon

【分析】 既然他的數據範圍(n<=20)都這麼明顯了,要麼是暴搜,要麼是二進制枚舉,要麼是狀壓。 經過一番簡單的考慮(實驗證明,暴力只有30分),這應該是狀壓了。 關鍵是這個狀壓的狀態該怎麼定義? 我們將dp[]定義爲使用

原创 SRM573 Div1Medium Ski Resorts

【分析】 修改,我比較討厭這個詞。 有沒有什麼貪心的做法?不知道啊。 要改成什麼? 問題好像走進了死衚衕。我們唯一知道的就是這個點原來的特徵值。枚舉一下改成它們?試一試吧! 定義dis[i][j]爲將i的特徵值改成j的特

原创 USACO2014JanuaryGold Building a Ski Course

從終態考慮 【分析】 首先,我們應該得出一個性質:如果當前的正方形的邊長b能夠完成工作的話,那麼(b-1)一定也能完成這項工作,說明這個邊長是具有單調性的。 那我們就想到了二分(可能吧),先停一下。 關鍵是對於原始的一幅圖,

原创 USACO2014MarchGold The Lazy Cow

【分析】 我們首先可以看出這裏的距離k是曼哈頓距離,也就是座標的絕對值相加。 可是我們腦子裏並沒有關於這類距離的算法。 首先,我們將一個點所能覆蓋到的面積畫出來,不難發現,這是一個豎着的正方形。之後的所有操作必須建立在一個傾斜

原创 2017.3.18 NOIP訓練賽賽後總結

Task 1: 這種關於數學的題目還是比較慌的,就連題目都看了十多分鐘。先是什麼都不想,將O(n!) 的30分先拿到,然後看了接下來的特殊的30分,發覺也是可以用類似O(n!) 也可以解決。隨便先推了下公式感覺接下來的40分應該沒

原创 NOIP2016憤怒的小鳥

憤怒的小鳥 【題目分析】 比賽的時候,覺得這是近年來noip的常規套路,又是暴搜?可是自己估一下複雜度,就感覺藥丸。但是沒有辦法啊,只會敲一個50分的暴力。 後來大神跟我說,這個是狀態壓縮…沒有學過… 後來在網上自學了一下狀

原创 USACO2014FebruarySilver Auto-Complete

【分析】 首先我們知道以str爲前綴的字符串會在排序後連在一起,那麼我們直接用lower_bound就可以解決了。 之後,小c以這道題教了我們一個Trie樹的寫法。 【代碼1】 #include<cstdio> #includ

原创 USACO2014FebruarySilver Secret Code

【分析】 拿到這道題的時候,就直接想到了記憶化搜索。 不過將原字符串拆分一共有4種方法,所以要注意不要遺漏掉。 我這裏採用的是string,因爲它的函數比較多,用起來也比較方便,然而它的速度也有一些慢。 【代碼】 #incl

原创 USACO2014JanuarySilver Bessie Slows Down

【分析】 這完全就是一道水題,只需要將兩種事件放在兩個隊列裏,用當前的時間和速度去判斷下一個事件應該是哪個,就做那個,然後彈掉。 可是遭天殺的翻譯卻沒有將結果四捨五入保留整數,從而導致了放在A題的位置,卻出現了10個人只有幾個

原创 USACO2014MarchGold Counting Friends

【分析】 我們先模擬一下樣例,找到一個自認爲是對的規律。如果這個序列是對的,先從大到小排序,那麼當前的操作是將序列中最大的變成0,然後順次每個減一。經過多次的檢驗,這個規律好像是對的。 然而每次操作後,序列就變得不太有序了,也

原创 敲題模板

#include <map> #include <set> #include <ctime> #include <queue> #include <cmath> #include <vector> #include <cstdio

原创 SRM 514 MagicalGirlLevelThreeDivTwo

【分析】 這樣的題目其實已經做過好幾遍了。因爲隨便來一下,如果用string相加,那就真的沒救了。題目雖然是叫我們求一段區間中有多少個‘1’,但是我們注意到R-L≤1000,所以我們可以單獨求每一個點的情況。大體