原创 HDOJ 5255 魔法因子 (數學)

題意 給出一個x,求有多少個長度小於等於10位的數,乘以x之後最高位和最低位互換其他不變。 思路 因爲只有兩位是動的其他不動,所以我們令高位爲high,低位爲low,中間位是mid,那麼我們能得到 (high∗10len−1+m

原创 Codeforces 672D Robin Hood (二分)

題意 有一個數列,有k天,每天可以讓最大值減一最小值加一,求k天后最大值和最小值的差值。 思路 剛開始一直想着用什麼東西維護一下,其實這個應該算是個模擬吧。 因爲是把大的加到小的上面,所以我們只要看一下這個k最多能給最小值提高到

原创 Codeforces 675D Tree Construction (splay)

題意 往一個根爲a[0]的二叉搜索樹裏面插數,每插一個數就輸出他的父節點。 思路 根據二叉搜索樹的性質,我們插進去一個數,他的父節點肯定是比他小的最大的和比他大的最小的數裏面的兩個,然後這兩個節點找最深的那個就是他的父節點,我們可

原创 HDOJ 1573 X問題 (餘數不互質的中國剩餘定理)

題意 求n以內有多少個數滿足x%a[i]=b[i]。 思路 能發現我們可以用不互質的中國剩餘定理求出來最小的x,然後(n-x)/lcm+1求個數 然後我就WA了好幾發。。。注意求出的x爲0且不是無解的時候最後的個數是(n-x)/

原创 HDOJ 5763 Another Meaning

題意 給兩個字符串a和b,b有兩義性,求a一共有多少種可能的意思。 思路 首先KMP預處理出所有b是a子串的末尾位置,然後基礎dp就可以了。 如果i位置是子串末尾則dp[i] = dp[i-1] + dp[i-lenb] + 1否則直接

原创 Codeforces 571B Minimization (DP)

題意 有一個n個數的序列,給出一個k,可以通過對序列重排讓∑n−ki=1|Ai−Ai+k| 最小,求最小值。 思路 題目相當於分成k組,使得{0,k,2k…},{1,k+1,2k+1…}等這些序列分別的序列更小。 顯然對於每一個鏈就是排

原创 HDU 5787 K-wolf Number

題意 求區間[l,r]中有多少個數不存在連續k位含有相同的數位。 思路 比較裸的數位DP,但是因爲剛開始沒有想好思路就開始寫後來調試挺長的時間。 因爲K比較小,所以我們直接加4維狀態分別表示前面取的四個數,每次加下一個的時候根據K判斷一

原创 Codeforces Gym 100513

前面這些題都是一些模擬貪心= =描述還都很長。。。 100513I - Sale in GameStore 可以買任意一個遊戲,然後可以選任意個加起來價值小於這個遊戲的求最多能有幾個。 #include <iostream> #inclu

原创 POJ 1743 Musical Theme (二分後綴數組LCP)

題意 給出一段長度小於2e4的序列,如果有兩個不重疊子段的一一相鄰兩個數之間變化情況相同就可以說這兩段的是相同的theme。小於5視爲0。 思路 首先我們先對序列進行處理,a[i] = a[i+1] - a[i],新序列即爲變化情況的數列

原创 HDOJ 5769 Substring

題意 求一個字符串有多少個不同的子串,要求這些子串都包含至少一次x字符。 思路 如果不考慮包含x字符的話,求不同子串個數是一個後綴數組經典問題(spoj 694)。考慮那個問題的做法:∑leni=1len−sa[i]−lcp[i] ,le

原创 HDU 5781 ATM Mechine

題意 取款機裏面有0-K不確定的錢數,如果查詢的錢數超過餘額就會警告一次,否則不警告,求警告W次內猜到確定錢數的期望是多少。 思路 dp[i][j]表示還剩0~i的錢數時還可以被警告j次的期望。 那麼得到 dp[i][j]=dp[k−

原创 HDOJ 3537 Daizhenyang's Coin

題意 給出一些正面朝上的硬幣的位置,每次可以將一個或者兩個或者三個硬幣翻面。最右邊一個硬幣必須是正面的,最後不能操作的人輸。 思路 SG打出表,然後能發現SG(n)是有規律的,當2n的二進制位的1的個數是奇數時SG(n)=2*n,否則是2

原创 HDOJ 1811 Rank of Tetris (並查集+topo)

題意 給出一些人之間的rating高低或等於關係,判斷給出的關係是否衝突,能不能通過這些排出所有人。 思路 如果沒有等於的話這個題是個比較經典的拓撲排序,加上等於之後我們每次相等的兩邊的關係需要合併,所以用並查集專門維護一下相等時的關係集

原创 LightOJ 1051 Good or Bad (遞推DP)

題意 如果一個字符串含有連續的3個元音或者連續的5個輔音那麼他就是bad的,否則他就是good的,字符串中含有’?’,’?’有可能是任何字母,如果因爲問號不確定的話就是mix。 思路 因爲數據很小所以剛開始直接考慮模擬,但是問號的處理很麻

原创 HDOJ 5745 La Vie en rose (bitset優化DP)

題意 字符串s和p,p可以交換相鄰兩個字符的位置但是隻能交換一次。求每個s[i]到s[i+len(p)-1]是否能由p變化得到。 思路 dp[i][j][0/1/2]分別表示在s的i位置和p的j位置時p[j]與p[j-1]交換、不交換、與