題目鏈結
傳送門題解
大佬好強
看了看資料範圍,不是很明白為什麼明明兩道題卻硬要擠在一道題裡
0.5倍經驗orz……
前一半的資料$r,c<=200$
字首和+二分
$num[i][j][k]表示(1,1)到(i,j)中比大於等於k的數有幾個$
$sum[i][j][k]表示(1,1)到(i,j)中比大於等於k的數的總和$
二分找k+1,對k直接暴力填
後一半的資料就是個序列
直接開個主席樹
二分一下取多少本書
然後直接樹上跑一跑就行
ps:主席樹查詢時應優先挑選高度更高的書,原因應該不用解釋
1//luogu-judger-enable-o22//
minamoto
3 #include4
using
namespace
std;
5#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?eof:*p1++)
6char buf[1
<<21],*p1=buf,*p2=buf;
7 templateinline bool cmax(t&a,const t&b)
8 inline int
read()
18int
n,m,q;
19namespace
solve1
26int getnum(int a,int b,int c,int d,int
h)29
int getans(int a,int b,int c,int d,int k,int
need)
38return
res;39}
40bool check(int a,int b,int c,int d,int mid,int
h)43
void
main()
53while(q--)
60int l=1,r=mx,ans=0;61
while(l<=r)
66if(!ans) ans=1
;67 printf("
%d\n
",getans(a,b,c,d,ans,h));68}
69}70#undef n71}
72namespace
solve2
80int mid=(l+r)>>1;81
if(x<=mid) r[now]=r[last],update(l[last],l[now],l,mid,x);
82else l[now]=l[last],update(r[last],r[now],mid+1
,r,x);
83 sum[now]=sum[l[now]]+sum[r[now]];84}
85int query(int u,int v,int l,int r,int
k)92
void
main()
98while(q--)
107if(r==d-b+1) puts("
poor qlw");
108else printf("
%d\n
",l);
109}
110}
111}
112int
main()
BZOJ1926 Sdoi2010 粟粟的書架
幸福幼兒園 b29 班的粟粟是乙個聰明機靈 乖巧可愛的小朋友,她的愛好是畫畫和讀書,尤其喜歡 thomas h.co rmen 的文章。粟粟家中有乙個 r行c 列的巨型書架,書架的每乙個位置都擺有一本書,上數第i 行 左數第j 列 擺放的書有pi,j頁厚。粟粟每天除了讀書之外,還有一件必不可少的工作...
BZOJ1926 Sdoi2010 粟粟的書架
bzoj1926 sdoi2010 粟粟的書架 幸福幼兒園 b29 班的粟粟是乙個聰明機靈 乖巧可愛的小朋友,她的愛好是畫畫和讀書,尤其喜歡 thomas h.cormen 的文章。粟粟家中有乙個 r行c 列的巨型書架,書架的每乙個位置都擺有一本書,上數第i 行 左數第j 列擺放的書有pi,j頁厚。...
bzoj1926 Sdoi2010 粟粟的書架
第一行是三個正整數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...