傳送門:
給你一串長度為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,可被多種...