Description

幸福幼儿园 B29 班的粟粟是一个聪明机灵、乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co
rmen 的文章。粟粟家中有一个 R行C 列的巨型书架,书架的每一个位置都摆有一本书,上数第i 行、左数第j 列
摆放的书有Pi,j页厚。粟粟每天除了读书之外,还有一件必不可少的工作就是摘苹果,她每天必须摘取一个指定的
苹果。粟粟家果树上的苹果有的高、有的低,但无论如何凭粟粟自己的个头都难以摘到。不过她发现, 如果在脚
下放上几本书,就可以够着苹果;她同时注意到,对于第 i 天指定的那个苹果,只要她脚下放置书的总页数之和
不低于Hi,就一定能够摘到。由于书架内的书过多,父母担心粟粟一天内就把所有书看完而耽误了上幼儿园,于是
每天只允许粟粟在一个特定区域内拿书。这个区域是一个矩形,第 i 天给定区域的左上角是上数第 x1i行的左数
第 y1i本书,右下角是上数第 x2i行的左数第y2i本书。换句话说,粟粟在这一天,只能在这﹙x2i-x1i+1﹚×﹙
y2i-y1i+1﹚本书中挑选若干本垫在脚下,摘取苹果。粟粟每次取书时都能及时放回原位,并且她的书架不会再
撤下书目或换上新书,摘苹果的任务会一直持续 M天。给出每本书籍的页数和每天的区域限制及采摘要求,请你告
诉粟粟,她每天至少拿取多少本书,就可以摘到当天指定的苹果。

Input

第一行是三个正整数R,C,M。
接下来是一个R行C列的矩阵,从上到下、从左向右依次给出了每本书的页数Pi,j。
接下来M行,第i行给出正整数x1i,y1i,x2i,y2i,Hi,表示第i天的指定区域是﹙x1i,y1i﹚与﹙x2i,y2i﹚间
的矩形,总页数之和要求不低于Hi。
保证1≤x1i≤x2i≤R,1≤y1i≤y2i≤C。

Output

有M行,第i 行回答粟粟在第 i 天时为摘到苹果至少需要 拿取多少本书。如果即使取走所有书都无法摘到苹果,
则在该行输出“Poor QLW” (不含引号)。

Sample Input

5 5 7
14 15 9 26 53
58 9 7 9 32
38 46 26 43 38
32 7 9 50 28
8 41 9 7 17
1 2 5 3 139
3 1 5 5 399
3 3 4 5 91
4 1 4 1 33
1 3 5 4 185
3 3 4 3 23
3 1 3 3 108

Sample Output

6
15
2
Poor QLW
9
1
3

HINT

对于 10%的数据,满足 R, C≤10; 
对于 20%的数据,满足 R, C≤40; 
对于 50%的数据,满足 R, C≤200,M≤200,000; 
另有 50%的数据,满足 R=1,C≤500,000,M≤20,000; 
对于 100%的数据,满足 1≤Pi,j≤1,000,1≤Hi≤2,000,000,000
/*
一道二合一的题目。
对于前50%,a[i][j][k]表示矩阵的前i,j格大于k的数的个数,b[i][j][k]表示矩阵的前i,j格大于k的数的总和,预处理出来之后,二分答案。
对于后50%,很明显可以二分答案k,然后转成判断x~y中前k大的总和是否大于h,然后主席树维护一下。
*/
#include<cstdio>
#include<iostream>
#define N 210
#define M 500010
using namespace std;
int a[N][N][],b[N][N][],n,m,Q;
int root[M],Sum[M],cnt;
struct node{int size,lc,rc,sum;}t[M*];
void work1(){
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
int x;scanf("%d",&x);
for(int k=;k<=;k++){
a[i][j][k]=a[i-][j][k]+a[i][j-][k]-a[i-][j-][k];
b[i][j][k]=b[i-][j][k]+b[i][j-][k]-b[i-][j-][k];
if(x>=k) a[i][j][k]++,b[i][j][k]+=x;
}
}
int x1,y1,x2,y2,h;
while(Q--){
scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&h);
int l=,r=,ans=;
while(l<=r){
int mid=l+r>>;
if(b[x2][y2][mid]-b[x1-][y2][mid]-b[x2][y1-][mid]+b[x1-][y1-][mid]>=h)
l=mid+,ans=mid;
else r=mid-;
}
if(ans==) printf("Poor QLW\n");
else {
int sum1=b[x1-][y1-][ans]+b[x2][y2][ans]-b[x2][y1-][ans]-b[x1-][y2][ans]-h;
int sum2=a[x1-][y1-][ans]+a[x2][y2][ans]-a[x2][y1-][ans]-a[x1-][y2][ans];
printf("%d\n",sum2-sum1/ans);
}
}
}
void add(int last,int &k,int l,int r,int x){
k=++cnt;
t[k].size=t[last].size+;
t[k].sum=t[last].sum+x;
t[k].lc=t[last].lc;
t[k].rc=t[last].rc;
if(l==r) return;
int mid=l+r>>;
if(x<=mid) add(t[last].lc,t[k].lc,l,mid,x);
else add(t[last].rc,t[k].rc,mid+,r,x);
}
int query(int x,int y,int l,int r,int k){
if(l==r) return (t[y].sum-t[x].sum)/(t[y].size-t[x].size)*k;
int mid=l+r>>,tot=t[t[y].lc].size-t[t[x].lc].size;
if(k<=tot) return query(t[x].lc,t[y].lc,l,mid,k);
else return t[t[y].lc].sum-t[t[x].lc].sum+query(t[x].rc,t[y].rc,mid+,r,k-tot);
}
void work2(){
for(int i=;i<=m;i++){
int x;scanf("%d",&x);
add(root[i-],root[i],,,x);
Sum[i]=Sum[i-]+x;
}
int x1,y1,x2,y2,h;
while(Q--){
scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&h);
if(Sum[y2]-Sum[y1-]<h) {printf("Poor QLW\n");continue;}
int l=,r=y2-y1+,ans=r;
while(l<=r){
int mid=l+r>>,k=y2-y1+-mid;
if(Sum[y2]-Sum[y1-]-query(root[y1-],root[y2],,,k)>=h) r=mid-,ans=mid-;
else l=mid+;
}
printf("%d\n",ans);
}
}
int main(){
scanf("%d%d%d",&n,&m,&Q);
if(n<=&&m<=) work1();
else work2();
return ;
}

粟粟的书架(bzoj 1926)的更多相关文章

  1. AC日记——[Sdoi2010]粟粟的书架 bzoj 1926

    1926 思路: 主席树+二分水题: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 500005 #defi ...

  2. bzoj 1926: [Sdoi2010]粟粟的书架 (主席树+二分)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1926 题面; 1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Se ...

  3. Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)

    1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec Memory Limit: 552 MB Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱 ...

  4. 【刷题】BZOJ 1926 [Sdoi2010]粟粟的书架

    Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Cormen 的文章.粟粟家中有一个 R行C 列的巨型书架,书 ...

  5. 【BZOJ-1926】粟粟的书架 二分 + 前缀和 + 主席树

    1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec  Memory Limit: 552 MBSubmit: 616  Solved: 238[Submit][Statu ...

  6. [BZOJ1926][SDOI2010]粟粟的书架

    BZOJ Luogu Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Cormen 的文章.粟粟家中有一个 R ...

  7. bzoj1926[Sdoi2010]粟粟的书架 二分 主席树

    1926: [Sdoi2010]粟粟的书架 Time Limit: 30 Sec  Memory Limit: 552 MBSubmit: 1064  Solved: 421[Submit][Stat ...

  8. BZOJ1926:[SDOI2010]粟粟的书架——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1926 https://www.luogu.org/problemnew/show/P2468 幸福幼 ...

  9. 【BZOJ1926】粟粟的书架(主席树,前缀和)

    [BZOJ1926]粟粟的书架(主席树,前缀和) 题面 Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co ...

随机推荐

  1. 更改 Linux 语言为中文

    查看当前系统语言环境:    echo $LANG 查看安了哪些中文语言包    locale -a |grep "zh_CN" 没有输出,说明没有安装,输入下面的命令安装     ...

  2. linux替换yum源及配置本地源

    linux系统安装后自带的bash源由于在国外,安装软件包的时候会非常慢,最好替换一下yum源. ​关于yum源的简单介绍 ​           yum的主要功能是更方便地添加,删除和更新rpmba ...

  3. Spark架构与作业执行流程简介(scala版)

    在讲spark之前,不得不详细介绍一下RDD(Resilient Distributed Dataset),打开RDD的源码,一开始的介绍如此: 字面意思就是弹性分布式数据集,是spark中最基本的数 ...

  4. Java List 的深拷贝

    老是会遇到深拷贝与浅拷贝的问题,这里进行了一些測试.代码例如以下: </pre><pre name="code" class="java"&g ...

  5. 配置Spring.NET

    先引入关键的程序集 Common.Logging.dll Spring.Core.dll 在配置文件配置中: <configSections> ...... <sectionGrou ...

  6. proguaid 混淆代码

    注意:这里有一个坑.就是-ignorewarnings 他老是混淆不了,告诉你不行.其实加上这句话,就可以了. 下面贴一下代码: -injars c:/ceb_lib.jar -outjars c:/ ...

  7. NOI p 2017 TG游记

    嗨小朋友们大家好 还记得我是谁吗 对了我就是为iot配音的演员 弹鸡鸡 今天呐我特别的要向长沙市的oier们 洛谷的oier们 还有cnblogs的oier们问声好 为什么呢 因为我们在2017年11 ...

  8. Asp.net自定义控件开发任我行(8)-数据集绑定

    摘要 已经有好几天没有写博客了,今天继续,前几天写到了注册自定义事件,今天我们来讲数据集绑定. 先把运行效果截个图给大家看,让大家心里也有个底.(大家要从第一章开始看起,我们每一章都是接着前面没做完的 ...

  9. 安卓手机关闭底部键盘灯的方法(htc G11亲测有效)

    还在因为看电子书和看电影时键盘灯刺眼而苦恼吗?下面提供一个方法关闭键盘灯,让你轻松DIY! 1、手机必须先Root。使用RE管理器,按照这个路径,找到文件:brightness sys/devices ...

  10. 【Single Num II】cpp

    题目: Given an array of integers, every element appears three times except for one. Find that single o ...