假髮通過了不懈的努力,得到了將軍家門鎖的密碼(一串小寫英文本母)。但是假髮被十四和猩猩他們盯上了,所以假髮需要把密碼傳遞出去。因為假髮不想十四他們發現幾松門前貼的小紙條就是將軍家的密碼,所以他加密了密碼(新八:聽起來有點詭異)。加密方法如下:隨機地,在密碼中任意位置插入隨機長度的小寫字串。
不過,假髮相信銀桑和他那麼多年小學同學,一定能猜中密碼是什麼的(新八:銀桑什麼時候成攮夷志士了!!!)。可是,寫完了小紙條之後,假髮覺得有點長,就想截去頭和尾各一段(可以為空),讓剩下的中間那一段依然包含真~密碼。想著想著,假髮就想知道有多少種可行方案。結果在沉迷於稿紙之際,假髮被投進了獄門島(新八:……)。於是,就由你計算了。
兩行非空字串,純小寫英文本母,第一行是加密後的密碼,第二行是原密碼。
第一行長度不超過300000,第二行不超過200。
一行,有多少種方案。注意:不剪也是一種方案。
data constraint
30%的資料滿足第一行長度不超過1000。
ypx實際上每次只需要找到最短的滿足條件的字串然後統計兩頭可用的方案數就可以了
但是直接做會重複計算,那麼我們記錄上一次第一位的位置a,這一次第一位位置b,最後一位c,每次對答案的貢獻就是(b-a)*c
#include
#include
#include
#include
#include
#include
#define rep(i, st, ed) for (int i = st; i <= ed; i += 1)
#define drp(i, st, ed) for (int i = st; i >= ed; i -= 1)
#define erg(i, st) for (int i = ls[st]; i; i = e[i].next)
#define fill(x, t) memset(x, t, sizeof(x))
#define max(x, y) ((x)>(y)?(x):(y))
#define min(x, y) ((x)<(y)?(x):(y))
#define abs(x) (x)<(0)?(-(x)):(x)
#define ll long long
#define inf 0x3f3f3f3f
#define n 400001
#define e 1001
char str[n], ptr[n];
int lens, lenp;
int main(void)
if (i >= lens)
if (j == 0)
i += 1;
j += 1;
if (j >= lenp)
}std:: cout << ans << std:: endl;
return
0;}
2023年8月10日提高組T1 數學
description 小a得到了乙個數列a,他告訴你這個數列中所有的a i 都是1到n的自然數,並且告訴你對於一些a i 不能取哪些值。無聊的你想要知道所有可能的數列的積的和。定義乙個數列的積為這個數列所有數的乘機。由於答案太大,只要模10 9 7輸出即可。input 第一行三個整數n,m,k,分...
2023年8月8日提高組T1 作業
小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其中的一項作業,請你告訴小...
2023年8月8日提高組T1 作業
description 小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其...