codeforces 1183H 動態規劃

2021-09-25 05:39:08 字數 1241 閱讀 5050

傳送門:

給你一串長度為n的字串,你需要尋找出他的最長的前k個子串,問你得到這些子串需要減少的字元個數之和是多少,easy版本的k是100,hard版本的k是1e12。

hard版本題解:

dp[i][j]表示前i個字元中選擇了j個的子串數目

如果前面有出現過的字元呢?比如 aba 算到第二個a的時候 把ab 刪掉 和 把 ba刪掉 得到同一種結果

因此,對於xyyx 這種形式的我們把第乙個x之前出現過的種數去掉,就可以避免多算的情況了

這裡我們用乙個pre陣列來記錄第乙個x出現的位置

#include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

typedef pairpii;

typedef unsigned long long ull;

#define ls rt<<1

#define rs rt<<1|1

#define lson l,mid,rt<<1

#define rson mid+1,r,rt<<1|1

#define bug printf("*********\n")

#define fin freopen("input.txt","r",stdin);

#define fon freopen("output.txt","w+",stdout);

#define io ios::sync_with_stdio(false),cin.tie(0)

#define debug1(x) cout<<"["<<#x<<" "<<(x)<<"]\n"

#define debug2(x,y) cout<<"["<<#x<<" "<<(x)<<" "<<#y<<" "<<(y)<<"]\n"

#define debug3(x,y,z) cout<<"["<<#x<<" "<<(x)<<" "<<#y<<" "<<(y)<<" "<<#z<<" "}

pre[a[i] - 'a'] = i;

}ll ans = 0;

for(int i = n; i >= 0; i--)

if(k > 0) printf("-1\n");

else printf("%lld\n", ans);

return 0;

}

codeforces 245H 區間DP 好題

方法一 先暴力求出每個字串是否是回文 列舉每個回文串的中間字元 儲存在dp i j 中 再從以求的小區間滾成大區間 view code include include char s 5005 int dp 5005 5005 int main for i 1 i len i 固定i,滾動j for ...

h5學習筆記 gsap動效庫

今天正好趕上用這個庫的時候,之前使用as3,後面greensock已經公升級到3.0版本,發現更加簡化使用。進入官網可以看到裡面有一些教程使用,greensock 基本上和as3介面類似。js版本可以針對div做效果。gasp 尺寸還可以支援單位,px 和rem轉換,效果還十分不錯。也可以不帶單位。...

H5動效的常見製作方法

動效製作手法1 gif 優勢 節省成本 製作效率高。動效製作手法2 逐幀動畫 動效製作手法3 css3 動效製作手法4 svg 缺點不支援低版本的瀏覽器ie8及以下 知識普及 svg,可縮放向量圖形 scalable vector graphics 是被存成了 xml 格式的影象,特徵 1,可被多種...