原创 CodeForces - 1156B (爆搜)

題目鏈接:https://vjudge.net/contest/349864#problem/B   思路: 數據小,暴力一下就好了,構造情況太複雜沒想出來。   代碼: #include <bits/stdc++.h> using n

原创 P1279 字串距離(dp匹配)

題目鏈接:https://www.luogu.com.cn/problem/P1279   思路: 確定狀態dp(i,j)表示字符串s1是1~i,s2是1~j,所以可以要更新dp(i,j)有三種狀態, dp(i,j) = dp(i-1,j

原创 CodeForces - 1174D (思維 + 數學 + 構造)

題目鏈接:https://vjudge.net/contest/349653#problem/B   題目: 給出一個n,一個x,要求構造除一個序列ai,(1<= ai < 2^n)。 要求這個序列的任意一段子序列bi~bj的區間和sum

原创 P1006 傳紙條 & P1004 方格取數(四維dp)

四維dp:狀態太多就多開數組。   P1004 題目鏈接:https://www.luogu.com.cn/problem/P1004   思路: 因爲有兩條路徑,他們之間相互影響,如果走到相同的地點只算一次aij。 狀態轉移方程:dp(

原创 P1040 加分二叉樹(記憶化搜索 或 樹型dp)

題目鏈接:https://www.luogu.com.cn/problem/P1040   思路一:記憶化搜索 要尋找區間之間的關係,尋找誰是誰的子樹,誰是根節點。 dp(l,r)表示區間l,r區間所能湊出的最大值是多少,然後不停的遞歸下

原创 P1439 【模板】最長公共子序列(LIS)

題目連接:https://www.luogu.com.cn/problem/P1439   思路: 因爲題目數據較大,不能用一般的最長相同子序列來求,所以可以將序列1中的編號放到序列2中,在兩個序列中都遞增的子序列就是最長相同的子序列,所

原创 P1133 教主的花園(多維dp)

題目鏈接:https://www.luogu.com.cn/problem/P1133   思路: 從題目中可知,有三種類型的狀態 (1)1~n棵樹 (2)每個位置上可能有3種不同的高度 (3)可能是高於兩邊,可能低於兩邊 所以分類討論狀

原创 CodeForces - 1157E(思維 + STL)

題目鏈接:https://vjudge.net/contest/349801#problem/B   思路:一開始想直接用鏈表,後來超時了,參考別人的做法,發現STL真的好用。 只要multiset 維護一下,能自動排序,支持log(n)

原创 P1112 波浪數(構造)

題目鏈接:https://www.luogu.com.cn/problem/P1112   思路: 如果暴力跑肯定不行,不妨想一下這些數字的特點。 首先肯定是某個進制下的波浪數,所以枚舉每位的0~p-1(p進制),然後統計出所有l,r範圍

原创 P1290 歐幾里德的遊戲(博弈+思維)

題目鏈接:https://www.luogu.com.cn/problem/P1290 參考文章:https://www.luogu.com.cn/problemnew/solution/P1290   思路: 博弈主要要找到贏的狀態和輸

原创 CodeForces - 1168B(字符串 + 思維)

題目鏈接:https://vjudge.net/contest/349730#problem/B   題目: 給出一個01字符串,要求求出多少個區間滿足區間內存在si = si+k,且si+k = si+k×2。 輸出所有滿足條件的區間的

原创 CodeForces - 1148D(思維+規律)

題目鏈接:https://vjudge.net/contest/350168#problem/B   思路: 只要考慮最值+排序就好了。   代碼: #include <bits/stdc++.h> using namespace st

原创 hdu 6669(貪心+思維)

題目連接:http://acm.hdu.edu.cn/showproblem.php?pid=6669   思路: 考慮每相鄰區間之間是否有交集,如果有交集,就不用計算貢獻更新交集後跳過;否則,計算最少的步數,每次走左邊或者走右邊最近的一

原创 CodeForces - 1153D(樹型dp + 傳遞名次)

題目鏈接:https://www.cnblogs.com/FrankChen831X/p/10706038.html   思路: 正着想不太好想,因爲我們不知道要在那個位置上放座標能得到最小的值。顯然是要將樹根上的信息不斷向上傳遞, 傳到

原创 CodeForces - 1137B (kmp)

題目鏈接:https://vjudge.net/contest/350917#problem/B   思路: 因爲要包含最多的字符串,所以在匹配到s2最後一個位置時利用kmp的pre數組找到前面的最大匹配位置就好了。   代碼: #in