原创 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