GDOI 2016 Day1 T2 最長公共子串

2021-08-19 21:49:12 字數 792 閱讀 4903

給出兩個字串a和b,求最長公共子串。

其中b串中有k個區間的字元可以任意調換。

|a|,|b|<=2000,k<=100000

乙個顯然的性質就是,如果兩個區間有交集,那是可以並成乙個的

然後我們就來考慮怎麼做。。

乙個十分樸素的想法,是列舉兩個的起點,然後暴力往後匹配

這樣做是o(

n3) o(n

3)

的,不滿足要求

但是我們考慮一下,列舉兩個起點會怎麼樣?

其實就是確定了兩個串的匹配位置是那兩個,也就是相當於列舉了乙個偏移量

於是,我們就考慮直接列舉偏移量

這樣,我們列舉了乙個偏移量之後

我們就可以dp了 f[

i]f [i

]表示b串i往後的最優代價,然後根據若干段區間連續的轉移就可以了。。

胡亂討論一下。。因為區間是不相交的。。這個的話顯然是o(

n)o (n

)的

然後就可以o(

n2) o(n

2)

了 當然我們也可以直接dp f[

i][j

]表示i

,j結尾

的答案 f[i

][j]

表示i,

j結尾的

答案

這個的話

轉移分兩種

就是i可以匹配,那麼直接搞。。

否則,就看一下從前面挖乙個這個字母過來

然後就可以了

後者寫起來比較簡單

我是來口胡做法的

GDKOI2016 Day2 T1 染色大戰

給出乙個n m的格點圖,每個點有黑色和白色兩種狀態。有a,b兩個人輪流操作,a先手。每一次操作可以把乙個白點染成黑點。若這次染色產生了新的簡單黑色正方形 即最小的正方形,四個頂點都為黑色 則獲得其得分,並獎勵多一次染色。求兩人都在最優策略的情況下,a的得分 b的得分的值。簡單博弈。只要會博弈就會做。...

2016國慶清北Day2T1

pa 題目描述 漢諾塔公升級了 現在我們有n個圓盤和n個柱子,每個圓盤大小都不一樣,大的圓盤不能放在小的圓盤上面,n個柱子從左到右排成一排。每次你可以將一 個柱子上的最上面的圓盤移動到右邊或者左邊的柱子上 如果移動之後是合法的 話 現在告訴你初始時的狀態,你希望用最少的步數將第i 大的盤子移動到第i...

組合數問題 NOIP 2016 Day2 T1

題目描述 組合數 表示的是從n個物品中選出m個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定 義,我們可以給出計算組合數的一般公式 cm n n m n m 其中n 1 2 n 小蔥想知道如果給定n,m和k,對於所有的0 ...