luogu#P11366. [Ynoi2024] 末日的魔法少女计划

[Ynoi2024] 末日的魔法少女计划

题目背景

题目描述

给定含幺半群 (D,+,e)(D,+,e),给定 DD 中的元素构成的序列 a1,,ana_1,\dots,a_n,初值都为 ee,支持 mm 次操作,每次操作可以是单点修改,或查区间和。

限制每次修改操作使用 ++ 的次数不超过 M1M_1

限制每次查询操作使用 ++ 的次数不超过 M2M_2

幺半群的基本性质:

aD,  e+a=a+e=a\forall a\in D,\; e+a=a+e=a

a,b,cD,  (a+b)+c=a+(b+c)\forall a,b,c\in D,\;(a+b)+c=a+(b+c)

这是一道交互题,你需要包含头文件 lib.h,或将其内容放在程序的最前面。

下发的头文件 lib.h 的内容如下:

struct Data{
	unsigned short a,b,c,d;
};
Data operator+(Data a,Data b);

void init(int n,int k,Data d);
void update(int x,Data d);
Data query(int l,int r);

其中 Data 表示 DDData operator+ 表示 ++,交互库给出了这部分的实现;

你需要实现:

init 用于初始化,n,k,d 依次表示 n,M2n,M_2DD 的单位元 ee,你可以使用 ++,但由于 e+e=ee+e=e 而不能得出有用的结果;

update 表示一次修改操作,将 axa_x 修改为 dd

query 表示一次查询区间和的操作,查询 al+al+1++ara_l+a_{l+1}+\dots+a_r,查询结果应当作为返回值返回;

提示

Idea:ccz181078,Solution:ccz181078,Code:ccz181078,Data:ccz181078

对所有数据,满足 n=105,  m=2×105n=10^5,\;m=2\times 10^5

数据点编号 M1M_1 M2M_2 分数
1 4000 2 11
2 700 3 7
3 400 4 5
4 200 5 4
5 6
6 100 7 3
7 80 8
8 60 9
9 2811 2 16
10 542 3 11
11 272 4 8
12 137 5 7
13 113 6 5
14 75 7
15 69 8 4
16 48 9

lib\down 目录为下发的交互库文件

lib\require 目录为评测用的交互库文件

data 目录为评测用的测试点

data2 目录为下发的样例