bzoj1926 Sdoi2010 粟粟的書架

2022-03-01 16:17:47 字數 1769 閱讀 9826

題目鏈結

傳送門題解

大佬好強

看了看資料範圍,不是很明白為什麼明明兩道題卻硬要擠在一道題裡

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...