Logo 邂逅编程之美

UOJ

时间限制:N/A 空间限制:N/A
统计

题目描述

小 $\gamma$ 发现有 $n$ 个城市按编号顺序分布在一条直线上,他想观察它们之间的势力影响情况。具体地,城市 $i$ 的影响力为 $p_i$,另有非负属性 $q_i, w_i$。为了减少特殊情况的讨论,我们保证所有城市的 $p$ 两两不同且不低于 $0$。

称 $u$ 能直接影响到 $v$ 当且仅当以下条件均成立(注意直接影响不满足传递性):

  • $v$ 在 $u$ 的势力范围内:$v \in [l_u, r_u]$。出于神秘原因,不保证 $u \in [l_u, r_u]$。
  • 直线上 $u$ 与 $v$ 之间(不含 $u$ 且含 $v$)不存在城市 $x$ 满足 $p_x \geqslant p_u$。特别地,要求 $v \neq u$。

若 $u$ 能直接影响 $v$,则城市 $v$ 会定期向 $u$ 上贡:使者会携带 $w_v$ 的金钱从 $v$ 出发前往 $u$,每经过一个影响力 $p$ 大于此前所有城市(含 $v$)的城市 $x$,需要缴纳 $q_x$ 的过路费,若金钱不足即 $w_v$ 减去需缴纳的过路费后小于 $0$ 则上贡失败,否则可以对 $u$ 产生 $(d_{u, v} - a_v)^2 + b_v$ 的贡献值,其中 $d_{u, v} = p_u - p_v$。

令 $f_u$ 为在所有城市 $v$ 中 $v$ 对 $u$ 贡献值的最大值,若不存在城市对 $u$ 有贡献值则令 $f_u = 0$。小 $\gamma$ 希望你能对于所有 $u \in [1, n] \cap \mathbb N$,求出 $f_u$。

出于另外的神秘原因,对于一个城市 $u$,初始可得知 $p_u, l_u, r_u$,但 $q_u, w_u, a_u, b_u$ 与 $f_u$ 有关,在求出 $f_u$ 后才能得知。容易说明所有 $f_u$ 仍可唯一确定。

实现细节

本题暂仅支持 C++。

由于输入量较大,为减少输入所需时间并减轻评测机压力,我们使用交互的形式进行输入输出,你无需关注交互库细节,评测用交互库运行所需时间空间预计与下发的样例交互库相近。

你需要包含头文件 city.h

你可以调用下述函数:

int get_subtask_id();
int get_p(const int u);
int get_q(const int u);
int get_w(const int u);
int get_l(const int u);
int get_r(const int u);
int get_a(const int u);
long long get_b(const int u);

依次会返回整数 $\mathtt{id}, p_u, q_u, w_u, l_u, r_u, a_u, b_u$。你需要保证变量 $\mathtt{u}$ 传入的参数在 $[1, n] \cap \mathbb N$ 中。交互库保证不会在函数调用过程中修改任何你定义的对象。$\mathtt{id}$ 若不为 $0$ 则表示该测试数据满足正式测试数据的第 $\mathtt{id}$ 个子任务的限制,保证所有正式测试数据中 $\mathtt{id}$ 均不为 $0$。

可以注意到你可以多次以相同的参数调用上述函数。

你还可以调用下述函数:

void print_f(const int u,const long long v);

表示你已经求出了 $f_u = v$。你需要保证变量 $\mathtt{u}$ 传入的参数在 $[1, n] \cap \mathbb N$ 中且对 $[1, n] \cap \mathbb N$ 中的每个数作为 $u$ 调用且仅调用一次。交互库保证不会在函数调用过程中修改任何你定义的对象。

注意 get_qget_aget_b 只有在你调用过相同 $u$ 的 print_f 后才会给出正确的值。

你需要实现下述函数解决题目描述中提到的问题:

void solve(const int n);

你可以在 solve 函数中调用上面提到的函数以获取给定的数据,需要调用 print_f 输出答案。

此外,你无需也不能实现主函数,不能定义以 grader 开头的命名空间。

样例转换器、样例交互库使用说明

你可以使用下发的 trans.cpp 编译得到的 trans 进行 ./trans text.in text.ans binary.in binary.ans,会将下述文本格式的 text.in text.ans 转化为样例二进制交互库 grader.cpp 所需的二进制格式的输入输出数据 binary.in binary.ans

对于下述文本格式的输入输出数据,你也可直接使用下发的 grader_text.cpp

对于 grader.cpp 二进制格式转化为下述文本格式的需求,你可以定义 long long 类型的数组 f,然后执行 FILE*fans=fopen("binary.ans","rb");fread(f+1,sizeof(long long),n,fans); 即可得到答案。对于输入数据,直接使用 grader.cpp 联合编译后进行调试输出即可。

输入格式

你无需关心评测用交互库的输入格式,下述为上面提到的文本格式输入的输入格式。

第 $1$ 行输入 $2$ 个整数 $\mathtt{id\ n}$。

第 $2$ 行至第 $n + 1$ 行中,第 $i + 1$ 行输入 $7$ 个整数 $\mathtt{p_i\ q_i\ w_i\ l_i\ r_i\ a_i\ b_i}$。

输出格式

你无需关心评测用交互库的输出格式,下述为上面提到的文本格式输出的输出格式。

$1$ 行输出 $n$ 个整数 $\mathtt{f_1\ f_2\ \dots\ f_n}$。

样例一

input

0 10
35697 8 1 1 10 -6 6
34242 4 4 10 10 -5 46
63943 1 16 1 10 -10 10
18471 4 13 9 10 -8 30
90918 10 1 1 10 4 48
89024 10 9 10 10 -10 4
93393 5 17 1 10 -5 28
50130 6 12 1 10 -8 6
69030 2 1 1 10 5 41
76068 8 4 5 8 -7 7

output

2131646 0 2068430430 0 5249727055 0 5614504930 0 357512470 673194922

样例二

input

0 20
7 12 7 10 20 7 82
6 15 15 1 17 2 97
4 8 15 1 19 -8 68
16 10 1 2 19 -7 1
17 6 1 6 20 -2 31
3 19 19 2 20 -7 48
2 6 11 1 20 -7 65
13 6 14 1 20 1 94
9 5 8 5 20 -3 52
11 13 13 15 20 -1 67
14 8 17 1 20 9 51
12 4 1 5 20 -4 59
1 11 18 3 19 -9 42
10 9 13 2 19 4 16
20 13 19 4 16 -5 66
8 17 9 1 18 0 24
19 13 19 20 20 -6 41
18 4 4 1 20 -7 19
5 1 20 2 19 1 19
15 11 18 10 18 3 30

output

0 168 0 468 667 129 0 389 0 0 526 442 0 366 826 0 31 163 0 0

样例三

input

1 10
51521 10 17 3 10 2 3
24070 6 9 3 10 8 38
8813 1 2 1 10 -4 12
45561 5 1 5 10 -3 40
63596 2 1 1 9 -1 17
22683 5 3 3 6 -7 9
67458 6 10 2 9 -8 38
39872 3 1 2 10 4 21
84195 4 20 1 9 -10 15
79586 4 3 1 10 -8 37

output

35557409 232898133 0 0 1674446409 0 2005427533 0 1964173782 0

限制与约定

$1 \leqslant n \leqslant 5 \times 10^5$ 且 $\forall i \in [1, n] \cap \mathbb N, 0 \leqslant p_i \leqslant 2 \times 10^6, 0 \leqslant q_i, w_i \leqslant 10^9, 1 \leqslant l_i \leqslant r_i \leqslant n, |a_i| \leqslant 2 \times 10^6, 0 \leqslant b_i \leqslant 4 \times 10^{12}$。

子任务分值$n$特殊性质
1$5$$\leqslant 200$
2$5$$\leqslant 2000$
3$2$$\leqslant 10^5$$\texttt{G}$
4$3$$\leqslant 5 \times 10^5$
5$2$$\leqslant 10^5$$\texttt{F}$
6$3$$\leqslant 5 \times 10^5$
7$2$$\leqslant 10^5$$\texttt{BDE}$
8$3$$\leqslant 5 \times 10^5$
9$2$$\leqslant 10^5$$\texttt{ADE}$
10$3$$\leqslant 5 \times 10^5$
11$2$$\leqslant 10^5$$\texttt{DE}$
12$3$$\leqslant 5 \times 10^5$
13$2$$\leqslant 10^5$$\texttt{ACE}$
14$3$$\leqslant 5 \times 10^5$
15$2$$\leqslant 10^5$$\texttt{AE}$
16$3$$\leqslant 5 \times 10^5$
17$2$$\leqslant 10^5$$\texttt{E}$
18$3$$\leqslant 5 \times 10^5$
19$2$$\leqslant 10^5$$\texttt{AD}$
20$3$$\leqslant 5 \times 10^5$
21$2$$\leqslant 10^5$$\texttt{AC}$
22$3$$\leqslant 5 \times 10^5$
23$2$$\leqslant 10^5$$\texttt{A}$
24$3$$\leqslant 5 \times 10^5$
25$2$$\leqslant 10^5$$\texttt{D}$
26$3$$\leqslant 5 \times 10^5$
27$2$$\leqslant 10^5$$\texttt{C}$
28$3$$\leqslant 5 \times 10^5$
29$2$$\leqslant 10^5$$\texttt{B}$
30$3$$\leqslant 5 \times 10^5$
31$10$$\leqslant 10^5$
32$10$$\leqslant 5 \times 10^5$

性质 $\texttt{A}$:$\forall i \in [1, n) \cap \mathbb N, p_i < p_{i + 1}$。

性质 $\texttt{B}$:$p_i$ 在范围内均匀随机生成。

性质 $\texttt{C}$:$l_i = 1$。

性质 $\texttt{D}$:$l_i = 1, r_i = n$。

性质 $\texttt{E}$:$q_i = 0$。

性质 $\texttt{F}$:$b_i = 0$。

性质 $\texttt{G}$:$a_i = b_i = 0$。

时间限制: $2.5\texttt{s}$(可以根据评测机速度修改)

空间限制: $1024\texttt{MB}$

下载

link