2018雅禮1 2 串 結論題

2021-08-14 07:10:49 字數 1173 閱讀 8037

題面

首先答案只有−1

,1,2

三種。 若s

不為回文串,答案顯然為1。

若s為回文串,假設答案

>

2,那麼從任意地方切開該串分成的兩個串中至少有乙個回文串。

假設一二位相等,第乙個出現的與第一位不同的字母不在正中間,即aa

...b

...b

...a

a ,那麼因為字首aa

...b

不回文,那麼後面一定回文,導致兩個

b 中無論怎麼放

a都無法滿足條件。

假設一二位不等,即ab

...b

a ,因為字首ab

不回文,所以導致必須是ab

ab..

.ba ,一直推下去就是ab

aba.

....

.aba

ba。

所以只要不是形如aa

a...

aaa (全相同),aa

...b

...a

a (除正中間全相同),ab

aba.

....

.aba

ba(交替出現),答案均為2,否則為-1。

**:

#include

#include

#include

using

namespace

std;

const

int maxn=100010;

int n,ans,len[12];

char s[maxn],t[maxn],st[12][12];

bool check(char *s,int l,int r)

int spc2()

for(int i=n-n/2+1;i<=n;i++)

if(s[i]!=s[1])

if(flag) return -1;

if(n&1)

}else

if(s[i]!=s[2])

}if(flag) return -1;

}return

2;

}int main()

printf("%d\n",spc2());

}return

0;}

2018雅禮 折射

雅禮題好難啊。這個dp題思路好強。這個東西首先一眼就知道按y排的dp怎麼寫,大概就是設 f i,j,k 表示考慮到y座標從大到小排名為i的點,這線上一次轉是j,上上次轉是k的數量,直接二維限制轉移就行了。考慮這東西怎麼優化。字首和能搞時間,woc空間也被卡了?打出來表看一看?這個dp陣列有好多都是空...

雅禮集訓 1 2 取石子遊戲

題目描述 有 n 堆石子,第 i 堆有 xi 個。alice 和 bob 輪流取石子 先後手未定 alice 每次從一堆中取走 a 個,bob 每次從一堆中取走 b 個,無法操作者輸。不難發現只會有四種情況 alice 必勝 bob 必勝 先手必勝 後手必勝。你需要選定若干堆石子 共有 2 n 種方...

雅禮集訓 2018 Day4 Magic

傳送門本部分 於 這位大佬 題中要求本質不同的序列數量,不太好搞。我們考慮給相同顏色的牌加上編號,這樣所有牌都不相同。那麼如果我們求出了答案,只需要將答案除以 prod a i 就好了。恰好有 k 對 不能直接求,考慮容斥,如果我們求出了 g x 表示至少有 x 對的方案數,那麼答案即為 sum l...