原创 bzoj2201彩色圓環 期望DP

做了辣麼多dp題,只有期望題是我一點想法也沒有的題/噴血。。 設f[i][0/1]表示做到第i個位置,與第一個位置顏色是否相同的期望值。 那麼轉移的時候枚舉最後一段的長度來轉移,預處理p[i]表示(1/m)^(i-1)。 統計

原创 JZOJ5442【NOIP2017提高A組衝刺11.1】荒誕 三進制狀壓+歐拉序

題意:我有一個n個點,m條邊的無向圖,第i個點建立一個旅遊站點的費用是c_i。特別地,這張圖中的任意兩點間不存在節點數超過10的簡單路徑。 爲了把一切都做得完善,爲了使我感到不那麼孤獨,我想要建造一些旅遊站點使得每個點要麼建立了

原创 JZOJ5436. 【NOIP2017提高A組集訓10.30】Group DP

題意:把n個數分成若干組,要求每組的極差和不超過k的方案數。 初看的時候很熟悉,應該做過(flag)但是不記得了。 一個很顯然的想法是設f[i][j][k]表示做完前i-1個,分了j組,和爲k,發現無法轉移,因爲沒有記錄每組的

原创 JZOJ5439. 【NOIP2017提高A組集訓10.31】Calculate 亂搞

嚴格來說這題確實就是亂搞。。 明顯來說,有式子都要你化掉。 這題也是一樣的,設一個數x,假如有Ac1,Ac2....Ack=x 那麼原來的式子就變成了 那麼我們考慮設g[i]=b[i]%x,即按照a[i]來分組,在設在

原创 bzoj1567[JSOI2008]Blue Mary的戰役地圖 二分+矩陣hash

題意:給出兩個矩陣,求最大重合。 做出兩個矩陣的hash以後二分最大正方形的邊長,基礎hash。 模數不好設,用自然溢出就好。 #include<cstdio> #include<algorithm> #include<cst

原创 JZOJ5441. 【NOIP2017提高A組衝刺11.1】序列 啓發式搜索+迭代深搜

題意:給定一個1~n的排列x,每次你可以將x1~xi翻轉。你需要求出將序列變爲升序的最小操作次數。有多組數據。 n<=25 吃了搜索的虧,表示估價函數這玩意兒碰都沒碰過,A*也是好久以前才做過的。。考試的時候打了個搜索還錯了,

原创 bzoj1097[POI2007]旅遊景點atr spfa+狀壓DP

題意:給出一個圖,要求一定經過一些點,而且經過順序有要求,點的範圍是2到k+1,問最短路徑。 這題卡常卡的我蛋都碎了都沒卡過,最後懶得卡了。 其實很簡單的一道題目如果不卡常的話,先對於1..k+1跑spfa以後,把題目要求的遍歷

原创 JZOJ5429. 【NOIP2017提高A組集訓10.27】排列 DP+容斥

Description 有兩個長度爲n的排列A和B,定義排列的價值f(A,B)爲所有滿足A[i]>B[i]的位置i的數量。 現給出n,A,B和S,其中A和B中有一些位置的數未知,問有多少種可能的填數的方案使得f(A,B)=S I

原创 JZOJ5457. 【NOIP2017提高A組衝刺11.6】項鍊

題意: nodgd的粉絲太多了,每天都會有很多人排隊要簽名。 今天有n個人排隊,每個人的身高都是一個整數,且互不相同。很不巧,nodgd今天去忙別的事情去了,就只好讓這些粉絲們明天再來。同時nodgd提出了一個要求,每個人都要記住

原创 bzoj2083 [POI2004]PRZ 狀壓DP

題意: 一隻隊伍在爬山時碰到了雪崩,他們在逃跑時遇到了一座橋,他們要儘快的過橋. 橋已經很舊了, 所以它不能承受太重的東西. 任何時候隊伍在橋上的人都不能超過一定的限制. 所以這隻隊伍過橋時只能分批過,當一組全部過去時,下一組才

原创 bzoj1555KD之死 貪心+堆

題意:有一些箱子,有承重和重量,最底下有一個車,有承重限制。 要求最多能放多少個箱子。 不能說水,也不能說難的一道題。。 首先肯定知道如果bt-aw>at-bw那麼a肯定要在b上面更加優秀,那麼按照這個排序以後來貪心做。 如

原创 BZOJ1072[SCOI2007]排列perm 狀壓Dp

題意:給一個數字串s和正整數d, 統計s有多少種不同的排列能被d整除(可以有前導0)。例如123434有90種排列能 被2整除,其中末位爲2的有30種,末位爲4的有60種。 一開始看見s小於10秒想狀壓,然後在dp式子卡了一下才

原创 bzoj1093[ZJOI2007]最大半連通子圖 tarjan+拓補排序

這是一個看懂題目就能切的題。 題意:給你個圖,求最長路。 怎麼樣,是不是被震驚到了。。。其實就這麼簡單。。 由於原圖可能有scc,我們需要tarjan處理掉,然後就是最長路了,由於並不固定起點,我們拓補排序的同時去更新最長路

原创 bzoj3198 [Sdoi2013]spring 哈希表+容斥

題意:有n個六元組,給出一個數k,要求這n個組中有多少對之間有k元是相同的。/ 這種玩意兒一眼容斥啊。 首先2^6枚舉是哪k位,然後用hash求出在這種情況下有多少對是相同的,設爲f[i]. 那麼答案就是f[k]∗Ckk−f[

原创 bzoj1226 [SDOI2009]學校食堂Dining 狀壓DP

題意:一個學生序列,每一個人有一個想吃的菜t和忍受程度x,如果先讓緊跟他後面的人吃,不能超過x個,問最小的進餐時間。如果先做j,在做k,時間是(t[j]|t[k])-(t[j]&t[k]) = =一開始沒看見那個緊跟,導致我寫了