QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#139957 | #4175. 虔诚的墓主人 | cyc001 | 100 ✓ | 81ms | 19748kb | C++23 | 2.3kb | 2023-08-14 20:29:18 | 2023-08-14 20:29:22 |
Judging History
answer
#include<bits/stdc++.h>
#define cir(i,a,b) for(int i=a;i<b;++i)
using namespace std;
using lint=long long;
using VI=vector<lint>;
const lint MOD=INT_MAX+(lint)(1);
template<typename T>
class bit{
private:
vector<T> v;
int lowbit(int x){return x&(-x);}
public:
void update(int x,T w){
for(;x<v.size();x+=lowbit(x)) v[x]+=w;
}
T operator()(int x){
T res=0;
for(;x;x-=lowbit(x)) res+=v[x];
return res;
}
void resize(int _x){
(*this)=bit<T>(_x);
}
bit(int _x=0):v(_x){}
};
namespace math{
vector<VI> C;
void init_c(int n,int k){
C.assign(n+1,VI(k+1));
C[0][0]=1;
cir(i,1,n+1) cir(x,0,k+1){
if(x) C[i][x]=C[i-1][x-1];
C[i][x]+=C[i-1][x];
}
}
}
struct qry{int x,y;};
vector<qry> qx;
unordered_map<int,int> id;
bit<lint> bx;
VI cnx_y,all_y;
lint solve_l(int l,int r,int k){
lint res=0,cnxl=0,cnxr=(r-l+1);
cir(i,l,r){
++cnxl;--cnxr;
res+=(bx(id[qx[i+1].y]-1)-
bx(id[qx[i].y]))*
math::C[cnxl][k]*
math::C[cnxr][k];
}
cir(i,l,r+1){
const int yi=id[qx[i].y];
int ci=cnx_y[yi],lci=all_y[yi]-ci;
bx.update(yi,-math::C[ci][k]*
math::C[lci][k]);
bx.update(yi,math::C[ci+1][k]*
math::C[lci-1][k]);
++cnx_y[yi];
}
return res;
}
lint solve(int n,int k){
math::init_c(n,k);
lint cnx=0;
cir(i,0,n){
const int l=i;
auto&r=i;
while(r<n-1&&qx[r+1].x==qx[l].x) ++r;
cnx+=solve_l(l,r,k);
}
return cnx;
}
void init(){
int cnx=0;
unordered_map<int,int> all;
map<int,int> idx;
for(auto&[x,y]:qx)
idx.insert({y,0}),++all[y];
all_y.resize(1);
for(auto&[a,b]:idx){
id[a]=++cnx;
all_y.push_back(all[a]);
}
bx.resize(cnx+1);
cnx_y.resize(cnx+1);
}
int main(){
ios::sync_with_stdio(false),cin.tie(0);
int h,w,n;cin>>h>>w>>n;
qx.resize(n);
for(auto&[x,y]:qx) cin>>x>>y;
sort(qx.begin(),qx.end(),[](qry&a,qry&b){
return a.x==b.x?a.y<b.y:a.x<b.x;
});
init();
int k;cin>>k;
cout<<(solve(n,k)%MOD+MOD)%MOD<<'\n';
return 0;
}
详细
Test #1:
score: 4
Accepted
time: 1ms
memory: 3508kb
input:
4 10 30 3 3 2 6 2 2 1 6 4 10 3 5 4 6 1 5 3 4 4 5 4 3 3 6 2 1 1 1 2 0 3 7 1 0 4 7 2 4 4 4 1 10 0 7 3 10 4 9 0 1 4 2 3 8 0 5 4 1 3 9 1
output:
24
result:
ok single line: '24'
Test #2:
score: 4
Accepted
time: 1ms
memory: 3476kb
input:
20 4 50 14 3 11 4 10 2 19 4 5 0 15 3 11 0 11 1 12 4 4 0 15 4 3 3 6 1 12 0 18 4 17 0 13 2 1 4 8 0 13 4 0 1 0 4 20 0 19 2 20 2 14 4 6 3 17 4 7 2 9 2 12 3 2 4 14 1 9 4 8 2 18 2 8 1 15 0 17 3 2 1 6 4 19 0 3 0 1 2 14 2 7 4 10 1 3 4 5 4 19 1 2
output:
0
result:
ok single line: '0'
Test #3:
score: 4
Accepted
time: 1ms
memory: 3544kb
input:
30 30 500 27 1 8 8 1 23 28 11 6 25 19 12 10 1 8 2 4 15 10 19 20 15 22 18 21 29 5 19 20 6 22 29 0 22 14 29 7 16 14 10 14 8 15 27 20 29 10 7 13 15 25 15 5 26 2 23 23 12 10 5 24 0 27 5 11 8 0 7 27 21 24 2 14 6 27 3 11 26 13 13 6 8 20 11 11 0 3 30 24 27 16 0 12 23 8 30 17 15 3 12 30 16 8 14 28 16 29 2 2...
output:
590442372
result:
ok single line: '590442372'
Test #4:
score: 4
Accepted
time: 1ms
memory: 3568kb
input:
50 50 1000 31 42 38 24 26 7 46 29 32 30 4 2 16 4 27 4 46 1 24 23 20 19 9 30 23 25 37 18 17 28 38 19 40 39 38 4 0 9 33 33 38 3 31 17 48 46 12 8 10 16 13 41 46 12 18 39 12 14 50 5 1 27 33 27 32 44 4 20 38 26 47 3 37 37 31 26 22 7 16 12 49 33 44 38 1 3 43 42 47 29 41 32 13 25 40 34 49 7 46 21 47 36 17 ...
output:
1585972577
result:
ok single line: '1585972577'
Test #5:
score: 4
Accepted
time: 4ms
memory: 4240kb
input:
333 333 10000 147 158 89 199 162 302 162 250 282 73 141 44 192 4 281 304 225 32 280 326 37 136 26 314 162 240 39 33 242 132 251 6 143 122 179 202 164 100 66 118 110 74 318 297 199 75 84 14 245 33 261 246 87 183 233 48 60 191 331 22 117 271 153 208 256 102 269 249 175 63 85 47 171 117 82 278 177 15 2...
output:
1133287428
result:
ok single line: '1133287428'
Test #6:
score: 4
Accepted
time: 25ms
memory: 8108kb
input:
500 500 80000 107 481 29 206 398 389 375 194 202 168 375 183 234 171 25 313 203 287 185 85 350 113 247 40 71 329 478 57 211 284 342 186 220 349 20 227 288 326 399 41 92 469 463 119 139 372 366 331 419 302 384 204 175 429 342 46 190 304 367 97 12 260 395 151 29 363 487 390 363 233 68 243 462 303 429 ...
output:
762581168
result:
ok single line: '762581168'
Test #7:
score: 4
Accepted
time: 32ms
memory: 9416kb
input:
1000 1000 100000 329 892 946 314 583 628 727 880 734 135 508 992 510 67 479 967 490 192 802 100 616 646 608 58 708 730 229 483 928 183 614 502 584 318 240 965 273 57 127 859 760 320 878 781 760 42 788 551 382 963 928 958 783 195 738 229 869 405 193 300 472 857 723 282 576 678 997 472 470 589 239 316...
output:
1134444325
result:
ok single line: '1134444325'
Test #8:
score: 4
Accepted
time: 31ms
memory: 12612kb
input:
1000 1000 100000 883 734 77 622 314 892 304 943 163 483 938 172 732 44 903 607 377 553 946 639 497 703 249 64 810 29 378 895 944 950 985 450 328 863 198 581 983 487 837 909 73 806 750 424 423 637 809 179 719 976 694 118 71 864 726 148 14 110 969 619 153 792 329 116 309 490 590 758 883 701 532 909 42...
output:
387454971
result:
ok single line: '387454971'
Test #9:
score: 4
Accepted
time: 34ms
memory: 14096kb
input:
4 100000 80000 1 10329 3 73869 3 80659 2 95136 2 60644 4 63574 1 41805 0 18513 0 3626 2 64075 4 87149 0 95099 0 86515 2 31670 0 88394 1 48584 0 2783 4 918 1 87612 0 17349 0 9729 4 91632 0 5061 1 99060 1 1453 2 84729 0 91887 2 12873 0 67478 1 76814 0 56037 3 50985 4 29104 0 60459 2 58319 2 68916 2 80...
output:
619813848
result:
ok single line: '619813848'
Test #10:
score: 4
Accepted
time: 19ms
memory: 9364kb
input:
100000 4 100000 7404 1 25988 0 1207 0 1843 4 71020 0 70606 2 4090 4 64930 4 86069 2 37453 3 93197 2 49093 1 10686 3 74228 1 40394 4 34790 1 80868 3 37980 3 49189 0 86097 4 51253 2 22417 4 16622 4 77580 2 34192 4 56841 4 78516 1 29896 1 21764 2 3811 2 42336 1 58532 0 28633 2 36006 0 25058 1 47940 1 2...
output:
1511076953
result:
ok single line: '1511076953'
Test #11:
score: 4
Accepted
time: 35ms
memory: 14852kb
input:
10000 10000 100000 8885 7919 6193 9365 3471 8490 6703 4356 1051 1952 354 9591 7329 5361 6652 4847 7796 3557 7851 2360 8007 5254 6762 167 8094 6864 3824 9876 2456 3221 7620 3929 6870 5149 6590 3560 5527 1729 7417 4044 4572 6389 3856 699 7711 4073 5912 1326 2017 1006 1131 2742 1569 2554 2769 2110 9292...
output:
1009797864
result:
ok single line: '1009797864'
Test #12:
score: 4
Accepted
time: 19ms
memory: 8120kb
input:
123456 654321 50000 85711 201995 19989 64921 101945 386171 24071 491321 19674 554739 109147 376518 5430 147976 12701 250365 109571 597237 119241 328663 3744 191968 113484 612529 100280 511307 31581 99690 9844 406318 63258 171061 66707 108456 22835 291706 6748 2213 113971 14418 14366 590160 43955 189...
output:
1559168346
result:
ok single line: '1559168346'
Test #13:
score: 4
Accepted
time: 35ms
memory: 16040kb
input:
888888 888888 100000 679872 351491 838451 474060 253596 314794 785248 814668 119690 887464 166784 645347 313663 229842 418701 492517 680606 414042 435007 222099 641128 197041 547255 548974 680606 395667 878656 41273 794761 449853 356362 140142 780876 574637 485517 503106 554044 148561 277853 69059 7...
output:
1919193137
result:
ok single line: '1919193137'
Test #14:
score: 4
Accepted
time: 81ms
memory: 19748kb
input:
20 1000000 100000 17 469532 11 586890 1 993454 19 197903 5 731655 19 704609 3 592798 12 969487 14 371058 4 266699 19 125525 11 660367 10 220160 5 638505 9 213861 0 497977 14 48456 12 710667 19 847103 12 681658 11 527494 6 459601 8 785054 3 920432 16 807492 20 272512 7 117221 1 471509 2 263539 4 3253...
output:
1496223421
result:
ok single line: '1496223421'
Test #15:
score: 4
Accepted
time: 34ms
memory: 15932kb
input:
1000000 1000000 100000 94799 802737 533648 656973 105064 148974 705194 860484 162594 551722 324732 901076 606643 288570 405422 436750 167042 231831 28124 226164 906516 961962 918850 412426 354220 295439 738032 88274 551858 896902 975785 189123 533607 492801 42227 959097 727274 90999 166592 676114 27...
output:
1179646382
result:
ok single line: '1179646382'
Test #16:
score: 4
Accepted
time: 24ms
memory: 10008kb
input:
1000000000 1000000000 98304 30000 10000 30000 20000 30000 81950000 30000 81960000 40000 10000 40000 20000 40000 81950000 40000 81960000 50000 10000 50000 20000 50000 81950000 50000 81960000 60000 10000 60000 20000 60000 81950000 60000 81960000 70000 10000 70000 20000 70000 81950000 70000 81960000 80...
output:
0
result:
ok single line: '0'
Test #17:
score: 4
Accepted
time: 7ms
memory: 4908kb
input:
1000000000 1000000000 16000 9684000 10000000 10316000 10000000 10000000 9684000 10000000 10316000 9684079 10000000 10315921 10000000 10000000 9684079 10000000 10315921 9684158 10000000 10315842 10000000 10000000 9684158 10000000 10315842 9684237 10000000 10315763 10000000 10000000 9684237 10000000 1...
output:
605028352
result:
ok single line: '605028352'
Test #18:
score: 4
Accepted
time: 33ms
memory: 9684kb
input:
2000000 2000000 100000 440596 866969 561227 1474471 1091358 976098 312202 146907 186899 748539 597568 1384655 1255437 502058 128209 1599753 1801125 1424383 558451 465232 1018747 1913634 1100265 1440239 869545 186582 1130073 1901252 1457341 21008 1056416 1035935 952750 1863125 1195357 1183787 1963627...
output:
889183411
result:
ok single line: '889183411'
Test #19:
score: 4
Accepted
time: 5ms
memory: 4228kb
input:
110999889 110999889 10000 48999951 52666614 29666637 66333267 53999946 100666566 53999946 83333250 93999906 24333309 46999953 14666652 63999936 1333332 93666573 101333232 74999925 10666656 93333240 108666558 12333321 45333288 8666658 104666562 53999946 79999920 12999987 10999989 80666586 43999956 83...
output:
704285933
result:
ok single line: '704285933'
Test #20:
score: 4
Accepted
time: 38ms
memory: 9700kb
input:
10000000 10000000 100000 829241 4803531 9586922 1072398 9680033 6088592 4799299 1564488 7075962 4174747 3067483 8107713 7343632 167483 6821468 3962046 2514056 6392587 7432420 8906558 3292441 9661018 7553449 2868033 8898051 933916 2324111 7113773 9351118 3806685 7517856 5058351 5413919 1362707 586995...
output:
1093872297
result:
ok single line: '1093872297'
Test #21:
score: 4
Accepted
time: 35ms
memory: 9088kb
input:
100000000 100000000 90000 13972922 42109268 37772355 34642710 23349611 74188486 66881685 4377627 37480831 40257702 8785725 33188261 99982590 88786852 7927246 26073113 35340027 55900681 25976729 29642358 50055100 96136563 48703626 79103443 17289342 85224964 75585060 78465725 59191907 71425402 5315469...
output:
1969797402
result:
ok single line: '1969797402'
Test #22:
score: 4
Accepted
time: 38ms
memory: 14380kb
input:
100000000 100000000 100000 95241601 4627685 22254203 72927891 30214125 28078497 97990863 53667137 43949475 11498524 36521592 16571707 15358413 33691553 78922031 54782335 58977654 57726769 81466755 24254260 55092120 22635301 99712035 48048442 85729419 85934584 66583639 27295031 16339568 57497856 8415...
output:
1006167171
result:
ok single line: '1006167171'
Test #23:
score: 4
Accepted
time: 17ms
memory: 8920kb
input:
1000000000 1000000000 50000 395731770 370155511 76638628 294094460 570710649 541973791 283217037 748545126 733862663 82036590 349186909 74956785 887828963 654414953 521978390 491487230 671915864 99056573 797616141 880364858 89989546 176076706 167364037 527523880 735085933 850361634 339438874 6631257...
output:
267662481
result:
ok single line: '267662481'
Test #24:
score: 4
Accepted
time: 34ms
memory: 9708kb
input:
1000000000 1000000000 100000 422047348 940423505 336051265 768946115 254361204 767003953 87569841 588082601 596148725 295441339 527370249 422676295 500061067 184558752 169962923 485393755 765869948 688327118 720880589 680256319 727417592 8632919 877493403 96769065 393717060 16518812 997460422 655833...
output:
342316083
result:
ok single line: '342316083'
Test #25:
score: 4
Accepted
time: 44ms
memory: 16044kb
input:
1000000000 1000000000 100000 182188725 505782153 776759010 1601966 55300724 775739486 387617433 556640670 734828107 154067887 46077627 795764946 94172881 598007483 663749891 61755568 521304701 347616521 597547367 367369 688897159 215963433 824259598 678157855 25075477 850833093 587083886 288823799 4...
output:
901837817
result:
ok single line: '901837817'