Wannafly挑戰賽14 B 字典樹

2022-03-04 04:37:50 字數 2021 閱讀 6713

題目描述

在乙個 minecraft 村莊中,村長有這一本小寫字母構成的名冊(字串的表),

每個名字旁邊都記錄著這位村民的聲望值,而且有的村民還和別人同名。

隨著時間的推移,因為沒有村民死亡,這個名冊變得十分大。

現在需要您來幫忙維護這個名冊,支援下列 4 種操作:

插入新人名 si,聲望為 ai

給定名字字首 pi 的所有人的聲望值變化 di

查詢名字為 sj 村民們的聲望值的和(因為會有重名的)

查詢名字字首為 pj 的聲望值的和

輸入描述:

第一行為兩個整數 0 ≤ n ≤ 105,表示接下來有 n 個操作;

接下來 n 行,每行輸入乙個操作,行首為乙個整數 1 ≤ oi ≤ 4,表示這一行的操作的種類,

那麼這一行的操作和格式為:

插入人名,這一行的格式為 1 si ai,其中 |ai| ≤ 103

字首修改聲望,這一行的格式為 2 pi di,其中 |di| ≤ 103

查詢名字的聲望和,這一行的格式為 3 sj

查詢字首的聲望和,這一行的格式為 4 pj

輸入保證插入人名的字串的長度和小於或等於 105,總的字串的長度和小於或等於 106。

輸出描述:

對於每一次詢問操作,在一行裡面輸出答案。

示例1輸入

201 a -10

1 abcba -9

1 abcbacd 5

4 a2 a 9

3 aadaa

3 abcbacd

4 a3 a

2 a 10

3 a2 a -2

2 d -8

1 ab -2

2 ab -7

1 aadaa -3

4 a3 abcba

4 a4 c

輸出-14014

13-1911

1110tags:

裸裸的字典樹,然後加個lazy 標記。

//

#includeusing namespace std;

#pragma comment(linker, "/stack:102400000,102400000")

#define rep(i,a,b) for (int i=a; i<=b; ++i)

#define per(i,b,a) for (int i=b; i>=a; --i)

#define mes(a,b) memset(a,b,sizeof(a))

#define inf 0x3f3f3f3f

#define mp make_pair

#define pb push_back

#define fi first

#define se second

typedef long long ll;

const int n = 2000005;

struct item p[n*3];

int tr[n][27], index;

char s[n];

void pushdown(int now)

p[now].lazy = 0;

}void insert(ll x)

p[now].val2 += x, ++p[now].cnt2;

}void update(ll x)

int tnow = now; now = 0;

for(int i=1; i<=len; ++i)

p[now].lazy += x;

p[now].val2 += x*p[now].cnt2;

}ll query1()

return p[now].val2;

}ll query2()

return p[now].val1;

}int main()

else if(type==2)

else if(type==3)

else

}return 0;

}

Wannafly挑戰賽14 F 細胞

題解 ntt 二項式定理 再逆fft求出係數ans i 本題即可解了 另 採用fft的話,複數既不方便,誤差也很大。從fft到ntt 由費馬小定理可知 gp 1 p 1 p為質數 所以利用這個性質來對應單位複數根乘方的週期性,即 includeusing namespace std typedef ...

Wannafly挑戰賽14 E 線性基

題目描述 給乙個1 base陣列,有n次操作,每次操作會使乙個位置無效。乙個區間的權值定義為這個區間裡選出一些數的異或和的最大值。求在每次操作前,所有不包含無效位置的區間的權值的最大值。輸入描述 第一行讀入乙個正整數 1 n 105 第二行讀入n個正整數,第i個表示a i 0 a i 109 第三行...

Wannafly挑戰賽5 B 數學規律

題目描述 這個比賽,歸根結底就是控制乙個虛擬的小拖拉機跑完整個賽道。一般一場比賽會有 9 個到 13 個賽道,最後看能跑完多少個賽道。通常在一場可程式設計拖拉機比賽中,分別會有實際參賽隊伍數 10 20 30 向下取整的隊伍獲得金 銀 銅牌,其餘隊伍獲得榮譽提名,俗稱 鐵牌 但是主辦方往往會多準備一...