BZOJ 2138 stone(霍尔定理推论,线段树)BZOJ 修复工程

Posted 繁凡さん

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 2138 stone(霍尔定理推论,线段树)BZOJ 修复工程相关的知识,希望对你有一定的参考价值。

整理的算法模板合集: ACM模板

点我看算法全家桶系列!!!

实际上是一个全新的精炼模板整合计划


题目链接

https://hydro.ac/d/bzoj/p/2138

hydro 的 BZOJ 修复工程 !(我也去领了一点题慢慢修着玩,这题就是我修的嘿嘿嘿)

题目描述

话说 Nan 在海边等人,预计还要等上 M M M 分钟。为了打发时间,他玩起了石子。 Nan 搬来了 N N N堆石子,编号为 1 ∼ N 1\\sim N 1N,每堆包含 A i A_i Ai 颗石子。每 1 1 1 分钟,Nan 会在编号在 [ L i , R i ] [L_i,R_i] [Li,Ri] 之间的石堆中挑出任意 K i K_i Ki 颗扔向大海(好疼的玩法),如果 [ L i , R i ] [L_i,R_i] [Li,Ri] 剩下石子不够 K i K_i Ki 颗,则取尽量地多。为了保留扔石子的新鲜感,Nan 保证任意两个区间 [ L i , R i ] [L_i,R_i] [Li,Ri] [ L j , R j ] [L_j,R_j] [Lj,Rj] ,不会存在 L i ≤ L j   a n d   R j ≤ R i L_i\\le L_j\\ \\mathrm{and}\\ R_j\\le R_i LiLj and RjRi 的情况,即任意两段区间不存在包含关系。可是,如果选择不当,可能无法扔出最多的石子,这时 Nan 就会不高兴了。所以他希望制定一个计划,他告诉你他 m m m 分钟打算扔的区间 [ L i , R i ] [L_i,R_i] [Li,Ri] 以及 K i K_i Ki 。现在他想你告诉他,在满足前 i − 1 i-1 i1 分钟都取到你回答的颗数的情况下,第 i i i 分钟最多能取多少个石子。

输入格式

第一行正整数 N N N ,表示石子的堆数;

第二行正整数 x , y , z , P x,y,z,P x,y,z,P 1 ≤ x , y , z ≤ N 1\\le x,y,z\\le N 1x,y,zN P ≤ 500 P\\le 500 P500

有等式 A [ i ] = [ ( i − x ) 2 + ( i − y ) 2 + ( i − z ) 2 ] m o d    P A[i]=[(i-x)^2+(i-y)^2+(i-z)^2] \\mod P A[i]=[(ix)2+(iy)2+(iz)2]modP

第三行正整数 M M M,表示有 M M M 分钟;

第四行正整数 K [ 1 ] , K [ 2 ] , x , y , z , P K[1],K[2],x,y,z,P K[1],K[2],x,y,z,P x , y , z ≤ 1000 x,y,z\\le 1000 x,y,z1000 P ≤ 10000 P\\le 10000 P10000

有等式 K [ i ] = ( x × K [ i − 1 ] + y × K [ i − 2 ] + z ) m o d    P K[i]=(x\\times K[i-1]+y\\times K[i-2]+z)\\mod P K[i]=(x×K[i1]+y×K[i2]+z)modP

接下来 M M M 行,每行两个正整数 L [ i ] , R [ i ] L[i],R[i] L[i],R[i]

输出格式

M M M行,第 i i i 行表示第 i i i分钟最多能取多少石子。

输入样例

5
3 2 4 7
3
2 5 2 6 4 9
2 4
1 2
3 5

输出样例

2
5
5 

数据规模与约定

对于 100 % 100\\% 100%​​​​ 的数据, N ≤ 4 × 1 0 4 N\\le 4\\times 10^4 N4×104 M ≤ N M\\le N MN 1 ≤ L [ i ] ≤ R [ i ] ≤ N 1\\le L[i]\\le R[i]\\le N 1L[i]R[i]N, A [ i ] ≤ 500 A[i]\\le 500 A[i]500

提示

样例说明:

石子每堆个数分别为 0 , 5 , 2 , 5 , 0 0,5,2,5,0 0,5,2,5,0​​​​​​​​​​。
1 1 1​ 分钟,从第 2 2 2​​​​​​​​​​​ 到第 4 4 4​​​​​​​​​​​​ 堆中选 2 2 2​​​​​​​​​​​​ 个;
2 2 2​​ 分钟,从第 1 1 1​​​ 到第 2 2 2​​​​​​​​​ 堆中选 5 5 5​​​​​​​​ 个;
3 3 3 分钟,从第 3 3 3​​​​ 到第 5 5 5​​​​​ 堆中选 8 8 8​​​​​​​ 个,但最多只能选 5 5 5​​​​​​ 个。

Solution

首先我们来复习几个基本图论概念:

二分图完美匹配

如果一个图的某个匹配中,所有的顶点都是匹配点,那么它就是一个完美匹配。

换句话说,对于一个二分图 G < V 1 , V 2 , E > , ∣ V 1 ∣ ≤ ∣ V 2 ∣ G<V_1,V_2,E>,|V_1|\\le |V_2| G<V1,V2,E>,V1V2,若匹配 M M M 包含 V 1 V_1 V1 的所有点,即 ∣ M ∣ = ∣ V 1 ∣ |M|=|V_1| M=V1,则成 M M M V 1 V_1 V1 V 2 V_2 V2 的完美匹配。

霍尔定理(hall 定理)

设二分图的两部分为BZOJ2138stone Hall定理+线段树

题解 bzoj1135: [POI2009]Lyz (线段树+霍尔定理)

AtCoder ARC076F Exhausted? 霍尔定理+线段树

题解 AtCoder ARC 076 F - Exhausted? (霍尔定理+线段树)

BZOJ4869相逢是问候(线段树,欧拉定理)

bzoj-2219 数论之神