该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
No further hesitation on those unanswered questions
So now I'll make a dream unchained
题目描述
有 n 个集合 S1,S2,⋯,Sn,一开始每个集合都是空的。有 m 个函数 fi(x)=kix+bi,其中 i=1,2,⋯m。
有 q 个时刻,编号分别为 1⋯q,每个时刻开始前都会进行一次操作或查询,然后进行到下一个时刻:
1 l r i
:给编号在 [l,r] 内的集合都插入一个函数 fi(x)。这里的集合是不可重集,也就是说如果一个函数被插入了两次你应该认为这个集合里只有一个这个函数。
2 l r i
:对于编号在 [l,r] 内的集合都删除函数 fi(x)。如果这个集合内不存在 fi(x) 就不操作。
3 s l r x
:设当前时刻为 t,你需要从 [s,t] 中选一个时刻 p,从编号在 [l,r] 内的集合中选一个集合 Si,再从 p 时刻的集合 Si 中选一个函数 fj,你需要最大化 fj(x) 的值。特别地,若这些集合均为空,你只需输出一行一个字符串 -inf
。
输入格式
第一行三个正整数 n,m,q。
接下来 m 行,第 i+1 行两个整数 ki,bi,表示第 i 个函数 fi(x)=kix+bi。
接下来 q 行,每行一个操作。
输出格式
对于每个查询操作输出答案。
样例 1 输入
7 5 14
-2 11
3 6
-3 6
2 8
2 4
1 1 5 2
3 2 4 4 1
3 2 6 7 7
1 2 6 3
2 3 6 2
3 2 5 5 3
2 5 6 1
1 4 7 1
1 4 5 4
3 6 4 5 2
3 7 1 6 5
3 8 2 4 -3
3 8 3 4 4
3 2 3 6 0
样例 1 输出
9
-inf
15
12
21
17
16
11
样例 1 解释
一共有 10 个时刻,以下为 10 个时刻中各个集合的具体情况:
- {2},{2},{2},{2},{2},{},{}
- {2},{2},{2},{2},{2},{},{}
- {2},{2},{2},{2},{2},{},{}
- {2},{2,3},{2,3},{2,3},{2,3},{3},{}
- {2},{2,3},{3},{3},{3},{3},{}
- {2},{2,3},{3},{3},{3},{3},{}
- {2},{2,3},{3},{3},{3},{3},{}
- {2},{2,3},{3},{1,3},{1,3},{1,3},{1}
- $\{2\},\{2,3\},\{3\},\{1,3,4\},\{1,3,4\},\{1,3\},\{1\}$
- 再往后的操作均为询问,故不改变集合的具体情况。
对于每次询问,选取的最优 fj(x) 分别为:
- f2(1)=3×1+6=9
- 所有集合均为空,因此输出
-inf
- f2(3)=3×3+6=15
- f4(4)=2×2+8=12
- f2(5)=3×5+6=21
- f1(−3)=(−2)×(−3)+11=17
- f4(4)=2×4+8=16
- f1(0)=(−2)×0+11=11
测试点约束
对于 100% 的数据,1≤n,m,q≤105,−109≤k,b,x≤109,询问中的 s 不超过当前时刻。
子任务编号 |
n |
m |
q |
特殊性质 |
分值 |
依赖子任务 |
Subtask #1 |
≤50 |
无 |
19 |
无 |
Subtask #2 |
≤2000 |
≤2000 |
30 |
1 |
Subtask #3 |
≤105 |
15 |
1,2 |
Subtask #4 |
≤105 |
有 |
35 |
无 |
Subtask #5 |
无 |
51 |
3,4 |