LOJ 2303 NOI2017 蚯蚓排隊

2022-05-27 20:00:13 字數 1663 閱讀 5687

$n \leq 200000$的$1 \leq a_i \leq 6$的蚯蚓,有三種操作:讓乙隻隊頭蚯蚓接在乙隻隊尾蚯蚓後面;讓一隊蚯蚓從某個蚯蚓後面斷成兩隊;問:給個字串,問他的。。算了你們直接看題吧

這什麼沙雕題qaq

所有詢問的串只有$nk$種,把他們全丟進hash裡面就好了。。注意雙hash,乙個用來當鍊表乙個用來在煉表裡判重。

複雜度的話,只考慮合併是$nk$的(相當於把所有串算一次),而拆分是$ck^2$的,拆對合併的複雜度影響是跟拆本身複雜度一樣的。

1

//#include

2 #include3 #include4

//#include5//

#include6//

#include7//

#include8//

#include

9 #include10 #include11

using

namespace

std;

1213

#define ll long long

14int

qread()

1519

20//

pay attention to '-' , ll and double of qread!!!!

2122

intn,m;

23#define maxn 200011

24#define maxh 1000007

25int a[maxn],bb[55]; ll cc[55

];26

27struct

hash

28edge[maxn*50]; int

first[maxh],le;

30 hash()

31void

in(ll x,int h,int

v)3237}

38 edge &e=edge[le]; e.to=x; e.v=1; e.next=first[h]; first[h]=le++;39}

40int find(ll x,int

h)41

47return0;

48}49}h;

5051

intnxt[maxn],pre[maxn];

52char s[maxn*50]; int

len;

53int

main()

5459

int op; char c; int

x,y;

60while (m--)

6179}80

}81else

if (op==2)82

97}98}

99else

if (op==3

)100

115 printf("

%d\n

",ans);

116}

117}

118return0;

119 }

view code

loj 2721 NOI2018 屠龍勇士

有 n 條惡龍,每條惡龍有乙個初始生命值 a i 恢復力 p i 擊殺後會掉落一把劍.初始你有 m 把劍.給出每把劍的攻擊力.現在你打算按照以下方法殺掉所有惡龍 問最小的 x 如果不存在能殺掉所有惡龍的 x 輸出 1 有 t 組資料 n le 10 5,m le 10 5,t le 5,a i le...

loj 2719 NOI2018 氣泡排序

t 5,sum n le 2000000 考慮什麼樣的排列是好的.為了達到下界,p i 應該只向 i 的方向移動,也就是說,不存在乙個數左右都有逆序對,也就是說,不存在 a使得 p a p b p c 無視 q 的限制,可以用dp計算答案,設 dp i,j 表示確定了排列的前 i 個數,設其中最大值...

LOJ3342 NOI2020 製作菜品

題目鏈結 博主有幸參加了noi2020,考場上的經歷和心得請見這篇文章。這裡就不嘮叨了。本題的突破口在於 m 和 n 的關係。也就是資料範圍表裡這些奇怪的限制 m n 1 m geq n 1 m geq n 2 我們乙個乙個來看。顯然,n 種原材料,除了在輸出答案時,其他時候它們的原始順序對我們解題...