QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#467220 | #8547. Whose Land? | BalintR | TL | 1849ms | 43596kb | C++20 | 4.2kb | 2024-07-08 15:11:08 | 2024-07-08 15:11:09 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize "Ofast"
typedef unsigned uint;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<pii> vpii;
typedef complex<double> cpx;
template <typename T> using minPq = priority_queue<T, vector<T>, greater<T>>;
#define ms(a, x) memset(a, x, sizeof(a))
#define pb push_back
#define fs first
#define sn second
#define ALL(v) begin(v), end(v)
#define SZ(v) ((int) (v).size())
#define lbv(v, x) (lower_bound(ALL(v), x) - (v).begin())
#define ubv(v, x) (upper_bound(ALL(v), x) - (v).begin())
template <typename T> inline void UNIQUE(vector<T> &v){sort(ALL(v)); v.resize(unique(ALL(v)) - v.begin());}
const int INF = 0x3f3f3f3f;
const ll LLINF = 0x3f3f3f3f3f3f3f3f;
const double PI = acos(-1);
#define FR(i, n) for(int i = 0; i < (n); i++)
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define FORR(i, a, b) for(int i = (a); i >= (b); i--)
#define dbg(x) {cerr << #x << ' ' << x << endl;}
#define dbgArr(arr, n) {cerr << #arr; FR(_i, n) cerr << ' ' << (arr)[_i]; cerr << endl;}
template <typename T, typename U>
ostream& operator<<(ostream &os, pair<T, U> p){return os << "(" << p.fs << ", " << p.sn << ")";}
const int MDGTS = 6, PW10[MDGTS] = {0, 10, 100, 1000, 10000, 100000};
const int IO_SZ = 15 << 20;
char _buf[IO_SZ], *_ii = _buf, *_oi = _buf;
template <typename T> void scan(T &x){for(x=*_ii++-'0'; *_ii++>='0'; x=x*10+_ii[-1]-'0');}
template <typename T> void print(T x){int dgts=0; for(; dgts<MDGTS && PW10[dgts]<=x; ++dgts); for(char *i=_oi+dgts-1; i>=_oi; i--) *i=x%10+'0', x/=10; _oi+=dgts;}
const int MK = 21;
const int MN = 1e5 + 5;
const int MQ = 5e5 + 5;
int n, k, q;
vi adjList[MN];
int par[MN], anc[MN][MK], lDec[MN][MK], rDec[MN][MK];
int dep[MN], ord[MN];
int qu[MN], ql, qr;
pii updVs[MN][MK*2];
int updCnt[MN];
vpii queries[MN];
int ans[MQ];
void bfs(){
ql = qr = 0;
qu[qr++] = 0;
while(ql < qr){
int n1 = qu[ql++];
if(par[n1] != -1){
adjList[n1].erase(find(ALL(adjList[n1]), par[n1]));
copy(anc[par[n1]], anc[par[n1]]+k, anc[n1]+1);
}
anc[n1][0] = n1;
for(int n2 : adjList[n1]) par[n2] = n1, dep[n2] = dep[n1]+1, qu[qr++] = n2;
}
assert(qr == n);
FORR(i, qr-1, 0){
int n1 = qu[i];
lDec[n1][0] = rDec[n1][0] = i;
if(par[n1] != -1) FR(j, k){
lDec[par[n1]][j+1] = min(lDec[par[n1]][j+1], lDec[n1][j]);
rDec[par[n1]][j+1] = max(rDec[par[n1]][j+1], rDec[n1][j]);
}
}
FR(i, n){
int n1 = qu[i];
int ind = 0;
FORR(d, k, -min(k, dep[n1])){
int ancD = min(dep[n1], (k-d)/2);
pii p = {lDec[anc[n1][ancD]][d+ancD], rDec[anc[n1][ancD]][d+ancD]+1};
if(p.sn) updVs[n1][ind++] = p;
}
updCnt[n1] = ind;
}
}
namespace DS {
int ds[MN];
int query(int cut){
int res = 0;
FR(i, n) res += ds[i] >= cut;
return res;
}
void upd(int l, int r, int v){
FOR(i, l, r) ds[i] = v;
}
void reset(){
FR(i, n) ds[i] = -1;
}
};
void sweep(){
DS::reset();
FR(i, n){
FR(j, updCnt[i]){
auto [l, r] = updVs[i][j];
DS::upd(l, r, i);
}
for(auto [l, ind] : queries[i]){
ans[ind] = DS::query(l);
}
}
}
void solve(){
scan(n); scan(k); scan(q);
FR(i, n-1){
int a, b;
scan(a); scan(b);
a--; b--;
adjList[a].pb(b);
adjList[b].pb(a);
}
fill_n(*anc, n*MK, -1);
fill_n(*lDec, n*MK, INF);
fill_n(*rDec, n*MK, -1);
par[0] = -1;
bfs();
FR(i, q){
int l, r;
scan(l); scan(r);
l--; r--;
queries[r].pb({l, i});
}
sweep();
FR(i, q) print(ans[i]), *_oi++ = '\n';
}
int main(){
fread(_buf, 1, IO_SZ, stdin);
int t; scan(t);
while(t--){
solve();
FR(i, n) adjList[i].clear();
FR(i, n) queries[i].clear();
}
fwrite(_buf, 1, _oi-_buf, stdout);
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 15912kb
input:
2 5 1 2 1 2 1 3 2 4 2 5 2 2 2 3 8 2 3 1 2 1 3 2 4 2 5 4 6 5 7 7 8 2 2 2 5 3 4
output:
4 5 7 8 6
result:
ok 5 number(s): "4 5 7 8 6"
Test #2:
score: 0
Accepted
time: 70ms
memory: 22252kb
input:
1000 500 1 500 291 2 406 9 207 13 71 15 351 17 442 18 496 19 104 20 208 23 448 34 80 42 187 44 352 45 290 46 116 47 318 50 226 52 129 55 83 59 100 60 54 61 73 65 63 66 454 67 43 71 26 74 68 26 320 75 388 76 425 79 170 81 350 83 48 85 153 86 221 90 290 95 130 96 82 98 124 82 36 99 213 100 121 101 132...
output:
255 386 356 124 315 330 437 8 335 423 398 338 180 242 352 500 145 44 342 261 92 326 38 291 259 71 137 456 171 24 162 453 283 325 250 319 478 460 77 354 56 393 372 217 395 265 188 256 134 68 205 429 436 346 300 462 324 170 291 406 207 480 198 182 489 61 476 127 289 204 282 374 114 406 488 366 121 190...
result:
ok 500000 numbers
Test #3:
score: 0
Accepted
time: 79ms
memory: 24208kb
input:
1000 500 2 500 260 2 93 3 399 4 227 5 238 6 382 7 35 12 194 24 141 26 463 27 497 30 102 31 410 32 308 34 357 42 271 43 208 44 446 46 262 50 457 51 467 52 294 53 424 54 267 56 210 58 48 59 339 48 407 65 320 66 33 68 78 33 79 71 315 72 390 74 128 76 83 81 244 87 375 91 79 93 225 94 1 97 433 1 172 100 ...
output:
496 471 423 489 270 388 451 329 495 104 453 321 500 357 24 429 409 496 491 454 469 119 495 460 432 450 496 494 459 435 211 298 426 260 371 490 498 259 490 494 492 477 336 412 425 431 235 445 482 422 296 495 361 407 465 492 497 500 394 222 500 500 500 498 470 470 152 414 337 412 325 387 89 492 313 45...
result:
ok 500000 numbers
Test #4:
score: 0
Accepted
time: 86ms
memory: 24168kb
input:
1000 500 3 500 333 1 268 2 183 3 394 5 420 7 322 12 87 14 285 21 178 23 82 36 106 38 28 49 364 28 30 56 110 57 211 58 486 62 456 66 337 67 222 68 175 76 15 81 489 82 79 91 376 79 274 93 417 94 302 96 457 98 142 102 486 103 13 104 186 111 128 114 35 115 184 117 167 118 156 119 429 120 414 122 84 126 ...
output:
478 489 465 360 439 28 488 133 75 497 373 470 496 499 487 141 476 500 381 489 495 171 414 372 449 236 489 422 432 373 488 298 480 473 98 500 474 496 449 446 500 487 110 213 499 446 152 283 322 497 304 245 371 218 323 500 416 485 499 439 480 430 489 496 488 405 483 500 339 476 483 497 494 309 258 358...
result:
ok 500000 numbers
Test #5:
score: 0
Accepted
time: 88ms
memory: 22168kb
input:
1000 500 4 500 109 1 252 5 375 6 50 7 398 11 465 13 127 14 79 15 112 18 301 20 23 22 442 27 219 31 48 35 351 36 460 37 368 40 465 43 16 45 79 48 383 50 32 53 42 32 496 42 54 56 193 54 187 61 93 62 389 63 147 65 86 66 231 67 261 70 365 71 249 88 181 90 77 94 437 98 384 101 411 102 64 103 364 104 456 ...
output:
500 497 379 500 248 492 499 500 325 384 492 365 395 491 130 435 496 340 500 500 478 470 500 346 499 495 164 496 499 498 500 500 326 432 444 500 500 480 500 328 486 500 500 90 463 499 48 387 500 495 478 446 488 81 487 426 500 490 488 351 499 500 497 500 362 431 249 495 491 495 500 494 367 500 420 496...
result:
ok 500000 numbers
Test #6:
score: 0
Accepted
time: 425ms
memory: 29120kb
input:
100 5000 1 5000 4598 1 104 3 1813 7 3677 9 4212 10 739 14 4927 16 3896 17 2012 23 4512 25 1751 26 1487 29 2610 30 3912 31 733 33 4844 39 1179 40 5 43 174 45 4787 47 2500 48 3783 50 2905 54 1943 55 1296 56 4178 59 1021 63 4614 70 4221 71 4782 74 1802 75 4912 76 1839 80 4494 81 3403 82 2355 84 756 91 ...
output:
4366 4531 4868 2824 4359 2428 880 3967 4469 3414 4891 1139 611 577 698 4669 1641 2897 520 3730 3629 3913 4701 2735 4626 3279 2037 4040 3401 4845 4911 3015 2878 1753 4669 1094 4319 725 1266 2479 4360 3242 4056 1078 1047 4924 3570 2632 4852 2234 2498 4150 3357 2454 4784 3937 1272 1416 4942 3514 1315 3...
result:
ok 500000 numbers
Test #7:
score: 0
Accepted
time: 438ms
memory: 25112kb
input:
100 5000 2 5000 2567 6 2087 9 801 12 2832 16 3395 23 1178 25 479 30 1690 32 4253 36 2131 37 4668 38 4210 41 4361 47 1930 48 3486 50 3592 52 3956 54 2514 61 1045 64 1348 68 2708 69 300 72 62 73 2064 74 1166 75 3404 77 1292 79 1905 80 358 81 1083 83 4914 86 4642 87 1914 88 4435 92 3514 97 352 100 1167...
output:
4949 4725 4640 4959 4301 1730 4557 4625 4988 2646 276 4021 3492 4707 703 4961 2898 90 4986 3757 4981 3492 3954 4901 4254 798 4972 1580 2928 3446 495 4314 4621 4460 4906 3313 4665 4832 3988 4604 3784 3932 4990 3989 4655 2270 525 4891 4989 4293 4296 4359 4033 4438 4939 4926 1197 4962 4011 4544 3909 15...
result:
ok 500000 numbers
Test #8:
score: 0
Accepted
time: 459ms
memory: 29100kb
input:
100 5000 3 5000 1343 1 3262 3 4789 7 1988 19 4873 24 1618 25 223 29 4077 36 2982 37 1646 38 2585 40 1532 50 4623 52 4948 54 431 57 45 59 1734 45 23 61 428 72 205 75 2916 84 4521 86 1819 88 1376 92 1036 93 334 96 4666 101 4 102 3790 104 895 105 1810 110 2075 114 4285 116 1673 117 1728 118 1453 120 42...
output:
1572 4742 2171 3564 4050 4970 5000 1152 3804 4896 4672 2800 2161 4889 4683 4293 3578 4921 4915 3966 3694 4590 4996 4772 4547 3956 5000 4865 2930 4919 4990 4998 4994 4995 4805 5000 4382 4201 4702 4612 4360 4919 4789 4027 4924 3265 855 4730 2721 4814 4927 4628 1307 3772 4238 3797 4912 4755 4854 2505 4...
result:
ok 500000 numbers
Test #9:
score: 0
Accepted
time: 482ms
memory: 27104kb
input:
100 5000 4 5000 2416 3 246 5 1481 10 1143 15 1759 18 4762 19 2262 26 4167 31 223 32 1969 34 4694 35 4255 36 1373 39 670 44 479 45 2985 48 3024 50 2533 52 2107 62 3254 64 1636 65 1038 66 1680 71 689 73 3202 74 3753 82 4937 84 2295 87 4926 89 3004 91 2218 92 4101 93 2064 98 3910 99 1839 102 1746 103 5...
output:
4254 4911 4148 3692 4971 4940 4114 4433 4950 4881 4998 4982 4715 4982 4701 4864 4746 4856 4988 4996 2562 2235 4878 5000 4931 4934 4738 2950 5000 3608 4759 3076 3608 4877 4996 4601 2379 4793 4973 4967 4865 4697 3813 4984 4991 4929 3808 3482 4992 4472 4960 4840 504 4974 4425 4494 3791 4903 5000 5000 4...
result:
ok 500000 numbers
Test #10:
score: 0
Accepted
time: 1592ms
memory: 39996kb
input:
25 20000 1 20000 16985 7 9470 9 7497 10 12601 13 19428 19 17396 21 13606 27 1463 28 5720 30 6405 31 16086 38 15453 39 10225 41 19740 44 9398 47 18437 49 7152 50 15684 53 13034 55 12112 56 8888 57 6096 66 375 68 19456 78 13234 84 7828 85 5767 97 13148 99 2185 100 3817 101 8 102 14096 8 13295 103 1319...
output:
13854 10421 498 18438 1916 8252 18032 204 18543 18005 5196 13629 12160 15228 7004 6117 2367 14659 5032 17464 18124 10547 12996 16457 17785 3014 19175 9640 5413 15842 18032 1604 14411 9820 7143 5901 8433 7473 17041 15802 18371 12383 15085 18914 3416 2516 18654 5701 9060 10826 19761 6019 3797 7595 188...
result:
ok 500000 numbers
Test #11:
score: 0
Accepted
time: 1728ms
memory: 43596kb
input:
25 20000 2 20000 7250 2 18350 5 4189 8 19461 9 3610 11 10539 13 13349 14 14257 18 12153 22 16728 27 899 30 7367 36 14679 40 17758 41 19047 46 14890 47 14929 49 3193 50 7417 52 18673 57 19096 60 7613 61 9428 62 9576 63 400 64 19758 65 4549 69 2735 70 18322 74 18630 76 14608 78 1529 86 10666 92 435 93...
output:
11555 19950 10702 18264 18983 17767 16022 17567 8482 17678 19659 18692 19822 9299 11016 3283 15127 2364 18320 19204 14616 19990 19817 18719 19639 19986 13080 2437 16101 9004 17041 9904 17431 19887 19350 16813 12983 13196 15307 12404 19576 18723 19312 19939 14506 17131 19337 16306 1184 18831 11189 11...
result:
ok 500000 numbers
Test #12:
score: 0
Accepted
time: 1758ms
memory: 39684kb
input:
25 20000 3 20000 6027 3 10333 6 15473 11 6320 13 7792 18 10979 19 16197 20 14348 21 1690 22 18539 23 8816 24 15089 27 2238 29 8480 32 3288 36 11342 38 2707 39 6511 46 9096 48 5234 50 14712 53 1834 55 6993 57 11184 58 16078 59 18984 61 14820 67 834 68 1754 69 739 71 5016 75 16259 76 741 77 7672 78 17...
output:
19995 11051 12978 17914 19999 19713 12058 19593 19724 15828 11867 19669 11178 16495 16527 19229 19672 13102 19832 14098 8043 14132 18754 19962 19907 18253 8055 16458 19994 8083 17818 19669 16527 12600 19899 19835 19052 19205 20000 19163 12602 7820 19974 19415 19848 19932 12182 18623 19923 18872 1994...
result:
ok 500000 numbers
Test #13:
score: 0
Accepted
time: 1849ms
memory: 39644kb
input:
25 20000 4 20000 4803 2 6508 3 16357 5 476 6 11975 9 7227 12 8645 15 14438 17 8124 19 1566 20 16733 24 2812 26 13988 29 19202 31 16041 35 19283 36 10485 44 14020 46 7672 47 3283 51 729 54 16055 56 19149 62 1305 66 15949 67 2402 73 8194 82 3125 84 17890 85 2847 87 15424 88 10989 89 3520 91 3422 93 15...
output:
17587 19806 15971 19999 19916 2339 19126 19669 19827 19855 18914 8252 18137 20000 6547 20000 19739 19347 18714 19997 15367 14785 19999 19806 19959 19749 19952 15761 19974 18783 19985 18745 19996 18967 19996 19986 13738 18954 19058 17559 2569 19978 19557 8258 13529 19449 19999 19971 5922 11608 19960 ...
result:
ok 500000 numbers
Test #14:
score: -100
Time Limit Exceeded
input:
5 100000 1 100000 65452 1 39581 2 51138 3 77143 4 56934 5 11457 7 57146 9 21536 11 4708 12 57852 13 97500 22 76022 23 96583 27 36441 32 30948 35 53232 36 50629 37 79639 38 61377 43 78772 46 41320 47 2344 49 86775 52 63201 57 53901 59 59314 61 95358 62 94950 63 44230 66 99217 69 57344 70 92488 86 961...