原创 codevs 1288 埃及分數

題目大意:給出一個分數,要求求出最少的x分之1的形式,如果個數相同,要求最小的數字最大。 考慮搜索,因爲總個數不確定,使用IDDFS,每次確定一個長度,對於每一個位置從可以成立的最小值開始枚舉。 對於最終情況:如果這次的a爲1,並且b比前

原创 bzoj 2938 病毒

首先trie圖建圖,我們發現滿足條件的方案就是在trie圖跳的過程中不會找到標記過的字符串,就是有一個環就可以了。注意剪枝, 就是這個點搜過失敗,就不再搜了。 #include<cstdio> #include<cmath> #incl

原创 bzoj 1014 [JSOI2008]火星人prefix

填一波坑。。當初懶得挑這題。。(還是我太弱。。寫的時候腦子不好使)。 這題很裸。。但我的錯誤太傻了。。 首先不要相信什麼長度一定小於100000,不開二倍會死的。。。 然後每次增加點的時候要把全長+1.。。。(我就錯這了。。調了1h)。

原创 bzoj 1042: [HAOI2008]硬幣購物

因爲有了個數的限制,我們可以考慮容斥原理,首先對於整體求完全揹包,dp值代表值爲i的選擇方式。 那麼有一個超過限制的情況就是選擇這個面值的多了一個,那麼貢獻就是c[i]*(d[i]+1),所以應該減去dp[s-(c[i]*(d[i]+1)

原创 bzoj 1222 產品加工

感覺是很套路的題,對於兩個或者多個狀態的更新時,可以把一個設爲維度,本題設dp爲dp[i][j]表示第i個產品A加工時間爲j時, B的加工時間是多少,對於轉移有三種情況 1.由A來做, 2.由B來做, 3.一起做, 對於沒有的情況要賦成正

原创 codeforces939F Cutlet

題目大意:有2*n的時間去煎一片肉,其中有k個不相交區間,在這些區間裏可以翻面,求最後每面都煎n分鐘的最小翻面次數。 有一個顯而易見(exm???)的思路,設dp狀態爲dp[i][j]表示在第i分鐘朝上的面煎了j分鐘, 那麼轉移就是dp[

原创 差分約束介紹及應用

差分約束解決的是給出一系列不等式,求出最大/最小值的問題。 首先對於式子進行轉化,轉化爲統一的小於等於或者大於等於,如果不帶等號可以加減1轉化爲帶等號的情況。 如果式子爲小於等於,則求最短路,答案爲最大值。 爲大於等於,則求最長路,答案爲

原创 bzoj 3055 禮物運送

首先處理出兩點之間最短路,設狀態f[i][j]表示j狀態下結尾爲i的最短路,所以有轉移f[i][j]=f[k][j|(1<<(k-1))]+dis[i][k]; 初狀態就是f[i][(1<<(i-1))]=dis[1][i],因爲忽略了第

原创 bzoj 2081 [Poi2010]Beads

hash裸題,有一些優化的方式,比如吧正序和逆序乘起來作爲比較的值,我用的map,(而且我自帶大常數) 所以在落谷過了之後,bzoj怎麼都不過。。 不要站代碼,思路一樣自己寫就好了 #include<cstdio> #include<c

原创 bzoj 2330: [SCOI2011]糖果

差分約束裸題,對於給出的信息進行建圖。 對於查分約束可以看這裏:https://blog.csdn.net/zzk_233/article/details/83789271 #include<cstdio> #include<algor

原创 codeforces 1042F Leaf Sets

題目大意:給定一棵n個點的樹,將葉子節點分爲數個集合,使集合裏點對最長距離不超過k,求最少集合數。 貪心,考慮一個非葉節點,它的下面的葉子結點對當前點之間的距離排序之後,當這個葉子結點和比它小的一個的和大於k的 時候,代表後面的每一個葉子

原创 codeforces 1051F The Shortest Statement

給出n個點,m條邊求兩點之間的最短路(m-n≤20)。 看起來很難其實挺好寫的,先dfs一遍,把所有跟環有關的邊(也就是沒遍歷的邊)的相關點存出來,然後求出全圖到他們每個 點的最短路,最後求兩點間距離的時候可以當做求兩點到開始的dfs樹上

原创 codeforces 985C3 Encryption (hard)

跟前面的兩道題不同的就是數據變大了,並且變成了求最小值,首先考慮dp 設f[i][j]表示前i個位置裏分了j份的最小值。sum[i]表示到i爲止val[i]的和 mod p的值。 但是這樣會超時,所以考慮優化掉一維,對於式子分析,可以發

原创 codeforces 1005F Berland and the Shortest Paths

題目大意:給出n個點,m條邊,和一個k,要求構成一棵樹,每個點到1的距離都是原圖中的最短路,輸出有多少種。邊權爲1 如果小於等於k種,就輸出所有情況,以字符串的形式表示每條邊是否選擇,邊的編號按照讀入順序。大於k種就隨便輸出k種。 據說這

原创 bzoj 1951 [Sdoi2010]古代豬文

這是一道數論集合題 求式子,首先可以先用歐拉定理將式子降冪爲指數mod (999911659-1)。 而對於指數可以在根號n的時間內枚舉每個約數,對於每個約數求相應的組合數,可以用lucas定理來求解, 但是因爲這個模數不是指數,所以把這