原创 最長上升和下降子序列好題
http://www.myexception.cn/program/1928123.html
原创 hdu4628枚舉子集狀壓dp
題目大意: 給一個字符串,每次可以刪除一個可不連續迴文子串,問最少刪幾次可以全部刪完。 思路: 因爲字符串長度最大16,所以可用二進制狀態表示, 1表示選取這個字符,0不選,組成一個子串。 先預處理出所有狀態,看這個狀態是不
原创 hdu5755
與poj1681類似的一道題,不同的是這裏使用的是除法而不是異或 #include <iostream> #include <vector> #include <cstdio> #include <cstring> #include <c
原创 hdu5875 二分加st
題意:給你一個n,n個數 m個詢問,每次詢問你 l,r,, a[l] % a[l+1] % a[l+2] %……a[r] 結果是多少 思路: 每次有效的取模會使結果減半,因此只有log次有效取模,每次往右找一個不大於結果的最靠左的
原创 hdu5726
題目大概說給一個包含n個數的序列,多次詢問有多少個區間GCD值等於某個區間的gcd值。 任何一個區間不同的GCD個數是log級別的,因爲隨着右端點向右延伸GCD是單調不增的,而每次遞減GCD至少除以2。 考慮固定左端點,最多就nlogn種
原创 poj1681 高斯消元
題目大意: 一個n*n 的方格 ,我們對它進行染色,每個格子都 可以 染成 白色和黃色,( 一旦我們對這個格子染色 ,他的上下左右 都將改變顏色);給定一個初始狀態 , 求將 所有的 格子 染成黃色 最少需要染幾次? 若 不能 染成
原创 hdu5890 bitset 優化dp
題意:50個數,10W個詢問,每次問刪掉第i,j,k個數後,是否存在一種選10個數和爲87的方案,只需要輸出 ’Yes’ 或者 ’No’ 題解:暴力:不同的詢問大概2W個,每個暴力bitset DP,摳一摳能卡着過。優化1:先求出一組解,
原创 ccf地鐵修建
題意:無向圖,從1到n的所有路徑中取路徑中最長的那條 比較, 然後輸出值最小的那條。 當時想的是直接深搜, 記錄當前路徑最大值, 到n比較即可。 這樣會出問題,就是從別的地方搜過來就會破壞掉原有的順序,那麼記錄路徑的最大值就會出現問題
原创 快速冪小trick
快速冪底大於1e9時需要mod一下,才行, 不然快速冪裏面就會乘爆了 #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; long long a
原创 hdu5898數位dp
題意:給出一個區間[l, r],問其中數位中連續的奇數長度爲偶數並且連續的偶數長度爲奇數的個數。(1<=L<=R<= 9*10^18) 例如 12223333 就不滿足條件,因爲存在奇數個奇數(1個1) #include<bits/st
原创 leetcode 385 Mini Parser
C++ Clean and Elegant Code with Clear logic class Solution { NestedInteger parse(const string &s, int & pos) {
原创 ccf模板生成系統
這題目string處理的還是蠻不錯的,用到了getline, substr, find,+ 等函數~~ #include<iostream> #include<string> using namespace std; int main()
原创 hdu 5802 搜索加貪心
題目大意 調節音量s到t,上升音量每秒只能上升1,下降音量每秒爲2*x,x爲上一次下降的音量,如果下降時休息或者上升音量則x置爲1,音量最低爲0 思路就是貪心的去選,每次下降到終點上的最近一點,或者終點下的一點,取得一個最小值就好。
原创 whu1608 遍歷子集dp
題目大意:給你n個數和s,問最多將n分爲多少組,使每組通過加減操作能得到s的組數最多,輸出組數 #include <iostream> #include <cstdio> #include <cstring> #include
原创 hdu5833 異或版高斯消元
300個最大質因數小於2000的數,選若干個它們的乘積爲完全平方數有多少種方案。 合法方案的每個數的質因數的個數的奇偶值異或起來爲0。 比如12=2^2*3,對應的奇偶值爲01(2的個數是偶數爲0,3的個數是奇數爲1),3的對應奇偶值爲0