YNOI2017 由乃的商場之旅 莫隊

2021-08-28 06:59:10 字數 1782 閱讀 9179

description

給你乙個字串,每次給乙個詢問,問這個區間內有多少個子串經過重新排序後可以變成乙個回文串。

sample input

6 6zzqzzq

1 62 4

3 42 3

4 51 1

sample output164

2231

考慮莫隊,因為字元只有26個考慮把他壓成二進位制。

那麼你就可以列舉每個位不一樣,統計答案。

然後其實狀態數是有限的,於是你預處理一下即可。。。

#include

#include

#include

#include

using

namespace std;

intread()

while

(ch >=

'0'&& ch <=

'9') s = s *

10+ ch -

'0', ch =

getchar()

;return s * f;

}struct hh s[

61000];

struct node q[

61000];

int m;

int sl[

61000

], sr[

61000];

int sum, ans[

61000

], s[

61000

], oo[

61000

], hg[

61000][

27];char ss[

61000];

bool

cmp(node a, node b)

bool

cmp1

(hh a, hh b)

void

jiar

(int x)

void

jianr

(int x)

void

jial

(int x)

void

jianl

(int x)

intmain()

s[n +1]

.x =

0; s[n +1]

.id =0;

sort

(s +

1, s + n +

2, cmp1)

;int tp =0;

for(

int i =

1; i <= n +

1; i++

)for

(int i =

0; i <= n; i++)if

(s[ans]

.x == yy) hg[i]

[++hg[i][0

]]= s[s[ans]

.id];}

}for

(int i =

1; i <= m; i++

)sort

(q +

1, q + m +

1, cmp)

;int ll =

1, rr =

0; sum =0;

for(

int i =

1; i <= m; i++

)for

(int i =

1; i <= m; i++

)printf

("%d\n"

, ans[i]);

return0;

}

4866 Ynoi2017 由乃的商場之旅

4866 ynoi2017 由乃的商場之旅 time limit 20 sec memory limit 164 mb submit 192 solved 47 submit status discuss description 第一行兩個數n,m 之後一行乙個長為n的字串,代表每個人的編號 之後m...

Ynoi2017 舌尖上的由乃

維護區間加和區間第k小。n 100000 分塊,設塊大小為k相信大家都會o n k log 2 n 的查詢和o k 的修改。什麼你不會o k 的修改?歸併啊歸併啊。那麼平衡規劃一下k n logn 總複雜度o nn l ogn include include include define fo i,...

BZOJ4810 Ynoi2017 由乃的玉公尺田

對每個區間維護一下這個區間每個數有沒有,用bitset壓一下,這個用莫隊跑出來,然後就能判加減合不合法了 乘的話根號列舉一下就行了 include include include include include include include include include include incl...