2016.12.03【初中部 NOIP提高C組】模擬賽
4855. 【NOIP2016提高A組集訓第6場11.3】荷花池塘
·題目大意:從一個給定位置到達一個給定位置,只可以走馬步,有些位置走不到,需要放荷葉,但岩石出不能放,讓你放最少的荷葉走到給定位置並輸出步數
·題意顯然
·bfs
·記錄到一個位置需放的最少荷葉,記憶化
4841. 【NOIP2016提高A組集訓第4場11.1】平衡的子集
·題目大意:給你n個數,讓你在其中任選一堆數並使得這堆數一定能被分成完全相等的兩組
·暴力的方法顯然,但只能水大概50分
·更加優美的暴力也不過80分
·可以想折半操作
·先把這n個數分成|n/2|和n-|n/2|兩堆,然後對於第一堆處理出它所能構造的所有狀態,也就是到底怎麼放這一堆的數,如果放到左邊那麼就是加上它,放到右邊就是減去它,哪邊都不放就是0,對於第二堆亦然
·處理出好怎麼放後,我們對於放在左邊的值於右邊的值相互匹配,注意優化和判重就行了(優化:排序後建立頭尾指標,表示相等的一段)
·判重可以用or位運算一下,或者雜湊
4886. 【NOIP2016提高A組集訓第13場11.11】字串
·題目大意:讓你求一個長度為n的串,不包含給定的危險串的個數
·很明顯可以暴力,水個40分
·想想dp
·可設fi,j表示當前構造一個長度為i的,後面j位為所給定危險串的前j位的方案數
·很明顯可以列舉第i+1位的長度,並跟新fi+1,_的值
·再設一狀態Ai,ch表示當前在危險串裡的第i位改為ch所能在危險串裡匹配的最右位置
·很明顯fi+1,a[i,ch]+=
·那怎麼求Ai,ch呢?
·可以用kmp
{
這裡簡單的講講怎麼kmp
其實就是優化了暴力
求出kmp的next陣列後(怎麼求自己百度一下),在原串中,假設第i位放ch這個字元,而如果與原串不符的話,則直接把i賦值為next[i],可以提高效率,至於為什麼,自己想想吧,當然,也可以不用。
純粹的暴力的話那更不用說了,直接O(26n²)的暴力即可
}