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 1∼N,每堆包含 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 Li≤Lj and Rj≤Ri 的情况,即任意两段区间不存在包含关系。可是,如果选择不当,可能无法扔出最多的石子,这时 Nan 就会不高兴了。所以他希望制定一个计划,他告诉你他 m m m 分钟打算扔的区间 [ L i , R i ] [L_i,R_i] [Li,Ri] 以及 K i K_i Ki 。现在他想你告诉他,在满足前 i − 1 i-1 i−1 分钟都取到你回答的颗数的情况下,第 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 1≤x,y,z≤N, P ≤ 500 P\\le 500 P≤500;
有等式 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]=[(i−x)2+(i−y)2+(i−z)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,z≤1000, P ≤ 10000 P\\le 10000 P≤10000;
有等式 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[i−1]+y×K[i−2]+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 N≤4×104, M ≤ N M\\le N M≤N, 1 ≤ L [ i ] ≤ R [ i ] ≤ N 1\\le L[i]\\le R[i]\\le N 1≤L[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>,∣V1∣≤∣V2∣,若匹配 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? 霍尔定理+线段树