清華集訓2017模擬12 09 塔

2021-08-13 13:51:48 字數 1238 閱讀 3611

有乙個塔,他的名字叫做粽粑,粽粑的每一層都有乙個顏色 .

粽粑非常厲害,它在吸收天地精華之後會長高.粽粑的長高方式有兩種:

1.在塔頂長出一層.

2.在塔底長出一層,即原來的第一層變成第二層,第二層變成第三層,以此類推,新長出來的是第一層.

粽粑有可能在某個時刻不是很開心,這個時候它會撤銷它的前若干次長高.

你現在想知道粽粑長高的奧秘,於是找到了粽粑,發現它的入口上寫著這麼一句話:要進入粽粑,請找出一段最長的塔的區間,滿足翻轉後顏色不變.

粽粑會不斷的長高(或撤銷),所以它每次長高後你都要回答.為了你的方便,粽粑一開始的高度為0.

我發現我的字串學傻了⊙﹏⊙‖∣

回文樹模板題,但是卡不過。

假設上一次的答案為ans,

對於頭尾,我們分別維護長度為ans的字串的兩個雜湊值(這個長度為ans的字串的雜湊值高位分別在前或後),

看雜湊值是否一樣就能判斷是否為回文串。每次長高只會讓ans+1或+2,判斷一下。

#pragma gcc optimize(3)

#include

#include

#include

#include

#include

#include

#include

#include

const int maxlongint=2147483647;

const long

long mo=1e9+7;

const int n=10000005;

using namespace std;

int n,m,ans[n],top;

long

long

sum[n][4];

char t[n];

short

int num[n*3];

long

long mi[n],ny,val;

long

long pow1(long

long x,int y)

int main()

if(r-l+1>=len+2)}}

else

if(c=='2')

if(r-l+1>=len+2)

}

}else

}val+=1ll*ans[top];

}printf("%lld\n",val);

}

清華集訓2017模擬12 09 塔

有乙個塔,他的名字叫做粽粑,粽粑的每一層都有乙個顏色 粽粑非常厲害,它在吸收天地精華之後會長高.粽粑的長高方式有兩種 1.在塔頂長出一層.2.在塔底長出一層,即原來的第一層變成第二層,第二層變成第三層,以此類推,新長出來的是第一層.粽粑有可能在某個時刻不是很開心,這個時候它會撤銷它的前若干次長高.你...

清華集訓2017模擬 ces

首先把用tajan把橋邊全部找出來,橋邊會把圖分成若干個雙聯通分量。把每個雙聯通分量並成乙個點,橋邊作為邊,這會構成一棵樹。顯然,對於每個詢問加k條邊最多能去掉多少條橋邊,就是用k條簡單路徑去覆蓋這棵樹,最多能覆蓋多少條邊。有乙個很優的貪心,把k按1 q做,每次找到樹的直徑,答案加上直徑的長度,把直...

清華集訓2017模擬12 10 大佬的難題

1 n 2e6,時限 2.5s 容斥原理瞎搞。設a,b,c分別為滿足三個條件的集合。根據容斥原理,有 a b c a b c a b a c b c a b c 而a b c同時會等同於總數n n 1 都大於的個數 即都小於的個數a b c 所以 n n 1 a b c a b c a b a c ...