QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#952094 | #4164. 粟粟的书架 | The_Shadow_Dragon | 100 ✓ | 388ms | 337792kb | C++14 | 2.5kb | 2025-03-26 19:38:59 | 2025-03-26 19:38:59 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define sort stable_sort
#define endl '\n'
const int inf=1000;
int a[210][210],b[500010],sum[210][210][1010],num[210][210][1010];
struct PDS_SMT
{
int root[500010],rt_sum;
struct SegmentTree
{
int ls,rs,siz,sum;
}tree[500010<<5];
#define lson(rt) (tree[rt].ls)
#define rson(rt) (tree[rt].rs)
int build_rt()
{
rt_sum++;
lson(rt_sum)=rson(rt_sum)=tree[rt_sum].siz=tree[rt_sum].sum=0;
return rt_sum;
}
void update(int pre,int &rt,int l,int r,int pos)
{
rt=build_rt(); tree[rt]=tree[pre];
tree[rt].siz++; tree[rt].sum+=pos;
if(l==r) return;
int mid=(l+r)/2;
if(pos<=mid) update(lson(pre),lson(rt),l,mid,pos);
else update(rson(pre),rson(rt),mid+1,r,pos);
}
int query(int rt1,int rt2,int l,int r,int val)
{
if(tree[rt2].sum-tree[rt1].sum<val) return -1;
if(l==r) return ceil(1.0*val/l);
int mid=(l+r)/2,sum=tree[rson(rt2)].sum-tree[rson(rt1)].sum;
if(sum>=val) return query(rson(rt1),rson(rt2),mid+1,r,val);
return tree[rson(rt2)].siz-tree[rson(rt1)].siz+query(lson(rt1),lson(rt2),l,mid,val-sum);
}
}T;
int query1(int x1,int y1,int x2,int y2,int k)
{
return sum[x2][y2][k]-sum[x1-1][y2][k]-sum[x2][y1-1][k]+sum[x1-1][y1-1][k];
}
int query2(int x1,int y1,int x2,int y2,int k)
{
return num[x2][y2][k]-num[x1-1][y2][k]-num[x2][y1-1][k]+num[x1-1][y1-1][k];
}
int main()
{
// #define Isaac
#ifdef Isaac
freopen("in.in","r",stdin);
freopen("out.out","w",stdout);
#endif
int n,m,q,x1,y1,x2,y2,h,l,r,ans,mid,i,j,k;
cin>>n>>m>>q;
if(n==1)
{
for(i=1;i<=m;i++)
{
cin>>b[i]; T.update(T.root[i-1],T.root[i],1,inf,b[i]);
}
for(i=1;i<=q;i++)
{
cin>>x1>>y1>>x2>>y2>>h;
ans=T.query(T.root[y1-1],T.root[y2],1,inf,h);
if(ans!=-1) cout<<ans<<endl;
else cout<<"Poor QLW"<<endl;
}
}
else
{
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cin>>a[i][j];
for(k=1;k<=inf;k++)
{
sum[i][j][k]=sum[i-1][j][k]+sum[i][j-1][k]-sum[i-1][j-1][k]+(a[i][j]>=k)*a[i][j];
num[i][j][k]=num[i-1][j][k]+num[i][j-1][k]-num[i-1][j-1][k]+(a[i][j]>=k);
}
}
}
for(i=1;i<=q;i++)
{
cin>>x1>>y1>>x2>>y2>>h;
l=1; r=inf; ans=-1;
while(l<=r)
{
mid=(l+r)/2;
if(query1(x1,y1,x2,y2,mid)>=h)
{
ans=mid;
l=mid+1;
}
else r=mid-1;
}
if(ans!=-1) cout<<query2(x1,y1,x2,y2,ans+1)+ceil(1.0*(h-query1(x1,y1,x2,y2,ans+1))/ans)<<endl;
else cout<<"Poor QLW"<<endl;
}
}
return 0;
}
詳細信息
Pretests
Final Tests
Test #1:
score: 10
Accepted
time: 0ms
memory: 6860kb
input:
10 10 10 178 938 647 49 871 620 221 816 130 339 894 458 609 18 667 789 355 836 480 57 301 307 130 153 532 865 638 34 534 716 380 836 731 198 681 662 642 529 700 946 727 596 61 226 253 244 344 463 772 109 1 671 864 666 521 740 639 757 313 635 816 511 865 449 826 149 1000 507 663 565 911 195 345 403 5...
output:
9 7 Poor QLW 1 1 2 Poor QLW 10 1 8
result:
ok 10 lines
Test #2:
score: 10
Accepted
time: 250ms
memory: 26832kb
input:
40 40 200000 738 85 470 616 402 329 187 91 293 248 311 534 146 473 831 416 875 686 324 947 215 753 141 846 744 121 803 743 369 957 894 497 862 341 306 90 350 599 509 818 401 903 799 429 322 787 648 190 223 879 294 445 39 107 892 931 922 798 722 744 442 486 564 711 412 744 913 288 872 975 148 378 394...
output:
22 114 62 41 4 67 13 3 1 314 25 83 44 19 205 6 22 55 135 207 Poor QLW Poor QLW 6 65 39 37 8 9 18 1 28 633 41 27 3 319 Poor QLW 3 25 20 Poor QLW 2 6 12 24 9 78 1 4 214 30 39 216 4 Poor QLW 21 31 240 26 98 Poor QLW 98 84 18 64 39 57 15 12 12 44 96 2 10 Poor QLW 161 44 97 10 106 98 133 1 9 63 Poor QLW ...
result:
ok 200000 lines
Test #3:
score: 10
Accepted
time: 200ms
memory: 254184kb
input:
150 200 100000 853 925 402 238 356 53 754 960 707 213 500 203 386 303 326 271 805 704 143 922 997 661 190 187 478 548 719 799 994 16 918 108 394 505 720 90 246 279 162 885 417 797 479 156 784 254 322 221 860 434 588 650 531 369 214 436 176 915 958 233 706 353 919 511 38 843 938 918 828 35 223 996 16...
output:
Poor QLW 33 Poor QLW 1347 457 378 4151 935 57 3251 4825 27 7381 145 Poor QLW 79 4 353 152 40 Poor QLW 1061 165 549 2377 109 779 203 1018 429 3981 17 175 39 1148 131 15 Poor QLW 677 646 204 Poor QLW 712 78 102 2 364 143 971 14 4269 54 268 1636 1420 549 114 345 Poor QLW Poor QLW 370 Poor QLW 756 Poor ...
result:
ok 100000 lines
Test #4:
score: 10
Accepted
time: 279ms
memory: 312244kb
input:
200 150 150000 947 154 70 485 232 417 843 888 498 979 938 410 934 454 743 359 796 9 916 933 213 22 389 148 450 351 154 347 412 554 7 254 697 811 519 350 766 612 176 867 3 942 358 225 505 36 413 971 295 701 736 388 152 909 87 930 779 466 837 701 862 764 504 380 679 623 787 321 560 900 184 199 983 977...
output:
437 819 28 490 87 20 Poor QLW 319 254 22 2984 68 Poor QLW 66 2605 300 776 367 69 555 761 132 996 10 91 2057 748 321 107 Poor QLW 2082 393 14 187 1750 226 17 864 1139 3244 1417 1244 39 176 5723 1590 Poor QLW 190 2 1750 123 150 1059 112 294 193 739 419 1140 3 Poor QLW 61 6762 636 290 284 682 468 735 2...
result:
ok 150000 lines
Test #5:
score: 10
Accepted
time: 388ms
memory: 337792kb
input:
200 200 200000 738 155 184 782 307 634 792 402 466 169 720 746 270 507 837 181 896 470 237 229 144 79 71 731 21 729 786 277 855 314 215 528 273 750 482 358 21 479 520 932 634 495 529 565 358 51 90 794 46 30 976 740 352 934 623 626 337 195 448 294 351 668 423 120 843 547 621 886 854 794 136 118 862 9...
output:
129 44 7256 903 103 1615 11 199 460 2135 2971 707 Poor QLW 1518 1580 3977 1224 2631 7043 77 1518 72 1124 3867 Poor QLW 4443 265 52 2596 84 7 77 Poor QLW 1347 29 1196 416 951 1118 443 3808 298 10256 680 2704 Poor QLW 1714 868 498 Poor QLW 3754 13 1043 11 75 171 91 120 2 2511 48 14243 24 1662 2977 584...
result:
ok 200000 lines
Test #6:
score: 10
Accepted
time: 57ms
memory: 42016kb
input:
1 200000 10000 17 227 339 864 53 464 17 350 90 652 774 291 983 427 625 912 728 749 223 202 610 100 261 456 653 669 740 273 170 374 80 524 694 433 998 139 645 305 880 233 736 137 242 871 121 898 444 720 104 122 937 48 891 45 248 72 934 142 206 901 595 621 935 879 199 997 35 208 311 214 299 804 602 71...
output:
26658 38740 Poor QLW 4296 54915 34634 Poor QLW 6809 2391 978 Poor QLW 29274 54570 101244 4799 Poor QLW 37104 Poor QLW 6663 33219 8691 8509 22234 1742 4169 2818 39654 39913 7703 16010 1581 6323 2286 1097 3264 20768 21604 10279 2735 57639 3486 57200 65488 20385 20313 10967 8185 28233 77509 8254 48358 ...
result:
ok 10000 lines
Test #7:
score: 10
Accepted
time: 89ms
memory: 59136kb
input:
1 300000 15000 524 426 70 543 829 759 450 102 758 899 776 252 626 939 661 954 958 708 852 839 588 633 753 197 164 945 398 76 379 299 353 102 475 614 770 233 726 169 742 757 107 498 155 424 210 849 3 689 304 599 629 448 44 978 183 842 753 625 817 75 751 433 577 184 467 431 469 849 405 474 889 85 94 8...
output:
Poor QLW 40172 14565 49501 19187 71731 100938 9958 57941 10725 Poor QLW 60413 4156 3439 38252 65944 16360 Poor QLW 108908 28838 54179 17751 8498 Poor QLW 85926 3197 15529 Poor QLW 14734 24741 5638 8423 28918 10649 20956 5356 50953 114545 Poor QLW 446 35046 751 32874 5006 Poor QLW Poor QLW 18679 1362...
result:
ok 15000 lines
Test #8:
score: 10
Accepted
time: 118ms
memory: 78364kb
input:
1 400000 20000 770 580 515 525 369 62 287 280 422 32 433 338 212 172 681 361 578 269 776 133 808 163 548 923 435 654 630 92 491 579 33 650 501 390 839 833 615 539 348 303 695 196 236 744 745 579 852 406 367 751 817 777 14 994 673 793 24 665 542 197 715 464 555 779 402 636 623 111 723 670 545 149 370...
output:
52198 10762 Poor QLW 5222 19236 606 272 18391 15439 49606 1174 36999 5173 1114 35398 28000 83138 Poor QLW 62243 92896 57271 60278 5205 Poor QLW 56810 11919 30315 23410 Poor QLW 9013 51398 19481 17818 105464 16592 86387 37747 92330 3283 6455 15992 321 Poor QLW Poor QLW 200300 229334 33173 31610 Poor ...
result:
ok 20000 lines
Test #9:
score: 10
Accepted
time: 139ms
memory: 95520kb
input:
1 500000 20000 455 936 299 721 697 266 242 607 380 626 85 488 414 347 92 206 919 484 695 955 34 988 615 895 700 497 748 629 167 569 992 862 794 506 722 945 20 976 11 599 652 822 368 322 865 808 157 607 33 771 781 875 124 517 715 143 919 882 176 734 386 641 6 495 214 642 638 532 707 981 800 403 773 5...
output:
64676 40992 42870 40530 42401 8345 12605 19896 95646 74563 13399 27135 30758 108053 79381 27019 4478 170016 5444 4755 10409 37616 70261 23844 122413 15470 97708 1157 62181 14666 32670 46796 118388 Poor QLW 282501 72818 106472 110612 94296 2443 1436 1198 197908 81531 106237 8810 31380 161483 14624 39...
result:
ok 20000 lines
Test #10:
score: 10
Accepted
time: 141ms
memory: 95532kb
input:
1 500000 20000 114 87 835 945 419 772 427 343 899 140 542 557 852 668 399 980 25 633 81 809 923 825 613 536 680 732 776 855 681 529 287 134 635 469 358 242 762 471 803 840 343 341 125 878 810 377 409 266 106 75 141 247 536 894 272 117 73 781 19 59 943 893 78 876 162 498 814 53 315 742 418 879 760 92...
output:
118358 53346 Poor QLW 96630 36356 30611 Poor QLW 35157 12703 1269 35014 260117 70540 53871 115849 37267 34722 15390 71653 64541 24903 72311 89298 4430 13374 3510 52495 97929 74650 17987 26797 5285 37720 44275 6388 45908 27389 4055 113390 11139 103000 110171 22510 152427 106649 23546 44105 33136 567 ...
result:
ok 20000 lines