description
毒瘤出題人給了你乙個由且僅由小寫字母構成的字串,並且多次詢問你一段區間的字元組成的字串中,「noi」子串行出現的次數。
輸入輸入資料從noi.in讀入
第一行兩個整數n,m表示字串的長度和詢問次數第二行乙個由小寫字母組成的字串s,下標從1開始標號然後一行乙個整數seed,含義請參見下發檔案random_gen.cpp
輸出輸出到noi.out輸出一行乙個整數,表示所有答案異或和的結果,請使用unsigned long long 自然溢位
data range
對於100%的資料,保證n,m≤5e6。保證所有詢問隨機生成,生成方式見random_gen.cpp。
random_gen.cpp
/*
為了在一定程度上減少輸入的量,毒瘤出題人決定使用隨機法。
你可以將以下這段**複製在你的源程式中,
並在讀入了字串之後直接呼叫rnd::init()來進行隨機的初始化。
之後請使用getquery來獲取每乙個詢問的l,r,各個引數的意義不再作任何說明。
在呼叫任何getquery之前請將rnd中的n賦值為字串的長度。
在能夠保證正確性的情況下,你也可以採用自己寫的隨機函式進行處理。
一切由於沒有按照題目要求進行的操作後果由選手自行承擔。
*/namespace rnd
inline
void
getquery
(int
&l,int
&r)}
using rnd::getquery;
思路
a
ia_i
ai 表示i位前n的個數
b
ib_i
bi 表示i位後i的個數
則答案為
∑ i=
lr[n
ode[
i]==
"o"]
(ai−
al)(
bi−b
r)
\sum _^r [node[i]=="o"](a_i-a_l)(b_i-b_r)
i=l∑r
[nod
e[i]
=="o
"](a
i−a
l)(
bi−
br)
拆開albr
+∑i=
lr[n
ode[
i]==
"o"]
aibi
−al∑
i=lr
[nod
e[i]
=="o
"]bi
−br∑
i=lr
[nod
e[i]
=="o
"]ai
a_lb_r+\sum_^r[node[i]=="o"]a_ib_i\\ -a_l\sum_^r[node[i]=="o"]b_i-b_r\sum_^r[node[i]=="o"]a_i
albr
+i=l
∑r[
node
[i]=
="o"
]ai
bi−
ali
=l∑r
[no
de[i
]=="
o"]b
i−b
ri=
l∑r
[nod
e[i]
=="o
"]ai
維護四個字首和即可
**
#include
using
namespace std;
typedef
unsigned
long
long ull;
#define ll long long
namespace io
inline
intin()
}// namespace io
using
namespace io;
namespace rnd
inline
void
getquery
(int
&l,int
&r)}
// namespace rnd
using rnd::getquery;
const
int a =
1e7+5;
int n, m, seed;
int l, r;
char a[a]
;int sn[a]
, si[a]
;ll f1[a]
, f2[a]
, f3[a]
, f4[a]
;inline
void
prepare()
for(
int i = n; i; i--
)for
(int i =
1; i <= n; i++)}
return;}
inline ull getans
(int l,
int r)
signed
main()
printf
("%lld\n"
, res)
;return0;
}
某 SCOI 模擬賽 T1 a DP
有 n nn 個單詞,每個單詞出現 c ic i ci 次,現用 與.給單詞編碼,要求任意乙個單詞的編碼不是另乙個的字首。設 的權值為 2,的權值為 1,最小化所有單詞的權值和。n 750 n leq 750 n 750。假設我們已經建好了所有單詞的字典樹,顯然出現次數越多的單詞應該掛在越淺的葉子 ...
20200916 SCOI模擬T1(三分)
思路 設怪物的屬性為 a,b a,ba,b,環境值為 x,y x,yx,y t x yt frac t yx 每個怪的貢獻為 a b at b ta b frac b times t a b ta b t發現是乙個單峰函式 打表發現總貢獻也是單峰的,於是可以三分 開口向上的單峰函式的max也是單峰的...
20200610 SCOI模擬T1(網路流)
思路 矩陣a為乙個n m的矩陣 矩陣a的轉置 a ta t at即為乙個m n的矩陣,其中 ai,jt a j,ia t a ai,jt aj,i 有 a b c ata b a t c at a b c a t a b a t c a t a b c at a b at c at對於b中的乙個數 ...