1. 程式人生 > >NOIP2018 11.04 比賽 總結

NOIP2018 11.04 比賽 總結

T1

荒誕(absurdity)

題目都是花言巧語,程式碼就幾行。。發現性質,字典序就是原序。

所以直接 i^2 求和就行了,這題資料水,可以直接 O(n),

如果資料大了可以 O(1) ,有公式的:

ans=(n*(n+1)*(2n+1))/6 

 

T2
失意(failure)

要是交最大。

dalao們有用堆,而我用樹狀陣列。a[l]+1   a[r+1]-1

用 L、R 記錄當前最大合法區間。

維護到 p 為止有多少區間覆蓋,若大於等於m 則符合。

資料大了注意要離散化唔哦

 

T3

快速冪 + 容斥。。

因為有 K 天,所以要 ksm。

用 f[i] 記錄包含 i 這個狀態的方案數。

根據容斥原理:當滿足 i 個人時若 i 為奇數則對答案貢獻為正,否則為負。

推薦一句巧妙的位運算:for (int j=x; j; j=(j-1)&x) f[j]++;   

巧妙地將包含於 x 的所有狀態全部弄出來了。。