#P10796. 『SpOI - R1』我看到了,谢谢你们

    ID: 10208 Type: RemoteJudge 2000ms 512MiB Tried: 0 Accepted: 0 Difficulty: 7 Uploaded By: Tags>贪心线段树O2优化树链剖分KMP

『SpOI - R1』我看到了,谢谢你们

题目描述

本题包含多组测试。

特别注意:本题中,border 的定义有所不同。对于串 s,ts,t,若同时存在 ss 的一对前缀后缀(可空也可为 ss 本身)等于 tt,则 ttss 的 border。

有一个长度为 nn 的字符串 SS。我们使用这个串上的信息来选举总统。

pip_i 表示 SSii 长前缀,特别地,p0p_0 表示包含第 00 位的空前缀。现在有 n+1n+1 位候选人站在这 n+1n+1 个前缀上,编号为 [0,n][0,n],编号为 ii 的人对应前缀 ii。每个人有一个票数 aia_i 和花费 wiw_i

得票数量严格超过总票数一半的人可以当选总统。

初始时所有人都处于未被控制状态。每一个时刻,任何一个未被控制之前一直在等待的人 ii 都可以做出三种选择之一:

  1. 进行一次vv 投票操作:将自己的 aia_i 票花费 wiw_i 的代价投给人 vv
  2. 进行一次vv 揽票操作:
    • 花费 wiw_i 选中人 vv,需要满足 pip_ipvp_v 的一个 border。
    • j[0,n]\forall j\in[0,n],若 pvp_vpjp_j 的一个 border,且 jj 在此时刻未被控制,则 jj 下一时刻变为被控制,他的 aja_j 票都花费 wjw_j 投给 ii
  3. 等待下一个时刻。

每个候选人都希望其他人不会成为总统,且都是绝顶聪明的。特别地,当他们的操作出现了交叉导致一个人的票需要投给多人时,被交叉者的票可以分别独立投出并都有效(你可以理解为他的票分裂了)。因此,总统可能有多个。

你可以干涉这个过程。具体来说,你可以在 00 时刻操作一个候选人 xx,让 xx 进行指定的一种选择,并钦定选择涉及的所有变量。xx 此后不能再做任何选择,剩下的人必须从 11 时刻再开始选择。你干涉的代价就是 xx 这次选择的总花费。

票数 aa 和花费 ww 都会发生 qq 次变化。

每一次变化会改变票数 aa 中的某一项或是花费 ww 中的某一项。票数 aa 可能会变为任意正整数,花费 ww 只会变小或者不变。

在每次变化之后,你都需要找到这样一个人 xx,满足你有一种干涉他的方案使得他一定可以成为总统,且你干涉的代价最小。你只需要输出这个最小代价。

可以证明一定存在这样的人。

本题强制在线

输入格式

第一行一个整数 TT,表示数据组数。

对于每组数据:

一行三个整数 n,q,typen,q,type,表示字符串长度、修改次数、是否强制在线。

接下来一行一个长度为 nn 的字符串 SS。保证 SS 中只含有小写英文字母。

接下来 n+1n+1 行,每行两个整数 ai,wia_i,w_i,依次表示候选人 00nn 的初始票数和花费。

接下来 qq 行,每行三个整数 o,p,xo',p',x'。设 lstlst 表示上一次输出的答案的绝对值,则 $o\gets o'\oplus(type\times lst),p\gets p'\oplus(type\times lst),x\gets (|x'|\oplus(type\times lst))\times (-1)^{[x'\leq 0]}$(其中 [x0][x'\leq 0]艾佛森括号),然后:

  1. o=1o=1 时,将 apa_p 修改为 xx
  2. o=2o=2 时,将 wpw_p 修改为 wp=xw_p'=x。保证 wpwpw_p\geq w_p'

输出格式

q+1q+1 行。

第一行输出在初始状态下你干涉的最小代价。

之后,在每次修改后输出你此时干涉的最小代价,共 qq 行。

3
2 1 0
aa
6 1
2 -1
3 2
1 0 2
19 0 0
happythbirthdayshun
1000000000 8
1000000000 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 1
1 0
1 0
5 6 1
acbac
1 3
2 4
1 -5
3 6
2 -3
3 1
11 10 12
9 13 108
8 12 8
10 9 0
6 1 4
4 7 1
1
0
17
9
8
-9
8
-4
-5
-5

提示

样例 #1 解释

对于第一组数据:

考虑第一次修改之前。全场共有 1111 票,则当选总统需要 >5.5>5.5 票。

干涉 00 号候选人,且选择第一种选择,使用 w0=1w_0=1 的花费进行一次00 投票操作后,00 号候选人得到 66 票,直接达到了总统要求,可以证明这是花费最小的答案。

第一次修改后,全场共有 77 票,则当选总统需要 >3.5>3.5 票。

干涉 11 号候选人,且选择第二种选择,进行一次11 揽票操作后,11 号候选人将得到 55 票,总花费为 1+(1)+2=0-1+(-1)+2=0。他直接达到了总统要求,可以证明这是花费最小的答案。

对于第三组数据,去掉强制在线后的修改操作为:

  • o=2,p=3,x=5o=2,p=3,x=5
  • o=1,p=5,x=100o=1,p=5,x=100
  • o=1,p=5,x=1o=1,p=5,x=1
  • o=2,p=1,x=8o=2,p=1,x=-8
  • o=2,p=5,x=0o=2,p=5,x=0
  • o=1,p=2,x=4o=1,p=2,x=4

数据范围

请注意常数因子对程序效率的影响。

本题开启子任务捆绑与子任务依赖。

对于 100%100\% 的数据,1T20001\leq T\leq 20001n1051\leq n\leq 10^50q1050\leq q\leq 10^50type10\leq type\leq 1,且在任何时候都保证 1ai2×1091\leq a_i\leq 2\times 10^9wi2×109|w_i|\leq 2\times 10^9

保证字符串中只含有小写字母。

对于任意一次修改,保证 oo1122,且 0pn0\leq p\leq n。在 o=1o=1 时,1x2×1091\leq x\leq 2\times 10^9o=2o=2 时,0x2×1090\leq |x|\leq 2\times 10^9

特别地,wiw_i 中的每一项在被操作的过程中一定单调不递增。

Subtask TT\leq n,qn,q\leq ai,wia_i,\lvert w_i\rvert \leq 特殊性质 得分 子任务依赖
1 20002000 2020 10510^5 55
2 200200 1010 1
3 33 10510^5 2×1092\times 10^9 AA 1515
4 BB 55
5 CC 1515
6 DD 2020
7 3030 1,2,3,4,5,6

特殊性质 AA:保证 o2o\neq 2

特殊性质 BB:保证字符串中的每一个字符都在 2626 个小写字母中独立均匀随机。

特殊性质 CC:字符串中只含有 a\texttt{a}

特殊性质 DD:保证 type=0type=0