ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#203645 | #3563. 最大生成树 | tkswls | 100 | 4065ms | 155752kb | C++11 | 2.5kb | 2024-02-29 11:38:40 | 2024-02-29 13:03:11 |
answer
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct node {
int l, r, minn[35], name[35];
} b[400005];
int ans;
int n, m, a[100005][9], maxn[35], op[35];
inline void update(int p) {
for (int i = 0; i < (1 << m); i++) {
if (b[2 * p].minn[i] < b[2 * p + 1].minn[i]) {
b[p].name[i] = b[2 * p].name[i];
} else {
b[p].name[i] = b[2 * p + 1].name[i];
}
b[p].minn[i] = min(b[2 * p].minn[i], b[2 * p + 1].minn[i]);
}
}
inline void build(int p, int l, int r) {
b[p].l = l, b[p].r = r;
if (l == r) {
for (int i = 0; i < (1 << m); i++) {
b[p].minn[i] = 0;
b[p].name[i] = l;
for (int j = 0; j < m; j++) {
if ((i >> j) & 1) {
b[p].minn[i] += a[l][j + 1];
} else {
b[p].minn[i] -= a[l][j + 1];
}
}
}
// cout << p << " " << l << " " << r << ' ' << b[p].minn[0] << "[]\n";
return;
}
build(2 * p, l, (l + r) >> 1);
build(2 * p + 1, ((l + r) >> 1) + 1, r);
update(p);
// cout << p << " " << l << " " << r << ' ' << b[p].minn[0] << "[]\n";
}
inline void change(int p, int q) {
if (b[p].l == b[p].r) {
for (int j = 0; j < (1 << m); j++) {
b[p].minn[j] = 1e17;
}
return;
}
int mid = (b[p].l + b[p].r) >> 1;
if (q <= mid) change(2 * p, q);
else change(2 * p + 1, q);
update(p);
// cout << p << " " << b[p].l << "=====****" << b[p].r << ' ' << b[p].minn[0] << "[]\n";
}
signed main() {
// freopen("ex_mst3.in", "r", stdin);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
build(1, 1, n);
change(1, 1);
// cout << b[1].minn[0] << "[]\n";
for (int i = 0; i < (1 << m); i++) {
maxn[i] = 0;
for (int j = 0; j < m; j++) {
if ((i >> j) & 1) {
maxn[i] += a[1][j + 1];
} else {
maxn[i] -= a[1][j + 1];
}
}
}
// cout << b[1].minn[0] << "[]\n";
int maxa = LONG_LONG_MIN, maxb = -1;
for (int qew = 2; qew <= n; qew++) {
maxa = LONG_LONG_MIN;
for (int j = 0; j < (1 << m); j++) {
// cout << b[1].minn[j] << ' ' << maxn[j] << "|";
if (maxn[j] - b[1].minn[j] > maxa) {
maxa = maxn[j] - b[1].minn[j];
maxb = b[1].name[j];
}
}
// cout << "=====\n";
// cout << maxa << ' ' << maxb << "\n";
ans += maxa;
for (int i = 0; i < (1 << m); i++) {
op[i] = 0;
for (int j = 0; j < m; j++) {
if ((i >> j) & 1) {
op[i] += a[maxb][j + 1];
} else {
op[i] -= a[maxb][j + 1];
}
}
maxn[i] = max(maxn[i], op[i]);
}
change(1, maxb);
}
cout << ans;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 5
Accepted
time: 0ms
memory: 1280kb
input:
16 3 953426878 284054286 838711178 668499263 -224496686 -499321118 53682534 172847348 -741761953 -37...
output:
49588152186
result:
ok single line: '49588152186'
Test #2:
score: 5
Accepted
time: 0ms
memory: 1284kb
input:
16 5 529897563 42718560 -764294904 546345843 -131064377 -464339380 -913723519 628560030 154631027 25...
output:
71232810493
result:
ok single line: '71232810493'
Test #3:
score: 5
Accepted
time: 0ms
memory: 1280kb
input:
16 5 225834194 -621694937 198912695 61859803 -275724766 287589126 863297652 -126251336 -446563133 84...
output:
70463691200
result:
ok single line: '70463691200'
Test #4:
score: 5
Accepted
time: 0ms
memory: 1284kb
input:
16 3 675758216 925664673 -100467753 -255044844 -119320564 -348819717 104489563 624402309 621346091 7...
output:
45574278940
result:
ok single line: '45574278940'
Test #5:
score: 5
Accepted
time: 4ms
memory: 3708kb
input:
2000 3 101319809 -23603507 546078402 375224051 279401121 -472811178 -969206443 864857136 405994073 -...
output:
8550423308185
result:
ok single line: '8550423308185'
Test #6:
score: 5
Accepted
time: 2ms
memory: 3708kb
input:
2000 4 -484778857 -615354594 133978805 172344089 675220875 275063317 -997782885 856068164 570760530 ...
output:
10870195379896
result:
ok single line: '10870195379896'
Test #7:
score: 5
Accepted
time: 0ms
memory: 3712kb
input:
2000 3 -354104546 610541166 61483675 696986274 207824440 292659920 -611661771 395152481 756286059 -9...
output:
8559275453639
result:
ok single line: '8559275453639'
Test #8:
score: 5
Accepted
time: 7ms
memory: 3708kb
input:
2000 5 966093478 -222359543 173876502 525342202 -365543374 898040767 -660210505 733626218 -870086230...
output:
13100825958903
result:
ok single line: '13100825958903'
Test #9:
score: 5
Accepted
time: 8ms
memory: 3712kb
input:
2000 5 -52237322 -19466788 -924090413 -297261236 -18045574 831291316 940625731 -67474115 -253926074 ...
output:
12934762781492
result:
ok single line: '12934762781492'
Test #10:
score: 5
Accepted
time: 7ms
memory: 3708kb
input:
2000 5 -18204930 -137807275 983978274 -114214924 701701812 -771383102 752985230 715153447 -737257726...
output:
13071831165291
result:
ok single line: '13071831165291'
Test #11:
score: 5
Accepted
time: 106ms
memory: 155748kb
input:
100000 1 -858072701 -959717109 944301573 8592817 565934230 66303209 -920672756 636118541 37167333 73...
output:
149959435811831
result:
ok single line: '149959435811831'
Test #12:
score: 5
Accepted
time: 87ms
memory: 155752kb
input:
100000 1 -634013498 440958380 736196013 950185571 100133154 263742865 626594999 297364348 -390787569...
output:
149998851497510
result:
ok single line: '149998851497510'
Test #13:
score: 5
Accepted
time: 170ms
memory: 155748kb
input:
100000 2 616484717 -218883820 536683727 -592361183 412299173 13246418 -693428127 -424485654 76654342...
output:
299201628231431
result:
ok single line: '299201628231431'
Test #14:
score: 5
Accepted
time: 152ms
memory: 155748kb
input:
100000 2 -231183420 -378090485 328624250 135605118 -856104723 -297979528 545394926 -966624173 117263...
output:
299382013637474
result:
ok single line: '299382013637474'
Test #15:
score: 5
Accepted
time: 344ms
memory: 155752kb
input:
100000 4 471608796 -775067240 953624653 319464968 -314055874 -215087101 385004262 651284620 92260848...
output:
579124678038141
result:
ok single line: '579124678038141'
Test #16:
score: 5
Accepted
time: 640ms
memory: 155748kb
input:
100000 5 133088008 -625818358 580219437 43098825 -316105521 235451619 562584437 303605408 145357481 ...
output:
706431825137853
result:
ok single line: '706431825137853'
Test #17:
score: 5
Accepted
time: 645ms
memory: 155752kb
input:
100000 5 166369337 -206548158 -433644757 290540289 178032746 -895124105 -847288875 -294639705 624198...
output:
707341802314105
result:
ok single line: '707341802314105'
Test #18:
score: 5
Accepted
time: 629ms
memory: 155748kb
input:
100000 5 -717013989 -822017275 534756773 907064833 -680422704 -271305944 -227110360 -671423139 -5923...
output:
703654594430108
result:
ok single line: '703654594430108'
Test #19:
score: 5
Accepted
time: 615ms
memory: 155748kb
input:
100000 5 472023095 120730360 677466207 689979178 -310652220 -435574711 897762285 883858915 -30436199...
output:
707007494019674
result:
ok single line: '707007494019674'
Test #20:
score: 5
Accepted
time: 649ms
memory: 155752kb
input:
100000 5 -181841793 -852953085 272276165 528776289 620825974 -245365795 -413151026 296716527 -701182...
output:
701964080014126
result:
ok single line: '701964080014126'
Extra Test:
score: 0
Extra Test Passed