ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#473 | #93. 「NOIP2020」排水系统 | Pigsyy | 90 | 299ms | 8364kb | C++23 | 2.0kb | 2025-04-24 20:49:32 | 2025-04-24 20:49:32 |
answer
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5 + 5;
int n, m, d[N], es[N][6];
int q[N], deg[N];
ll gcd(ll a, ll b) {
if (a == 0)
return b;
if (b == 0)
return a;
return gcd(b, a % b);
}
struct node {
ll a, b;
inline node operator + (const node &aa) {
ll val = gcd(b, aa.b);
val = (b / val) * aa.b;
return (node) {
val / b *a + val / aa.b *aa.a, val
};
}
inline void calc() {
ll val = gcd(a, b);
a /= val, b /= val;
}
} dp[N];
inline void ffr(int &ret) {
ret = 0;
register int ch = getchar();
while (!isdigit(ch))
ch = getchar();
while (isdigit(ch))
ret = ret * 10 + (ch ^ 48), ch = getchar();
}
void ks(ll val) {
int st[30], top = 0;
if (val == 0) {
putchar(48);
return;
}
while (val)
st[++top] = val % 10, val /= 10;
for (register int i = top; i >= 1; --i)
putchar(st[i] ^ 48);
}
int main() {
ffr(n), ffr(m);
for (register int i = 1; i <= n; ++i) {
ffr(d[i]), dp[i] = (node) {
0, 1
};
for (register int j = 1; j <= d[i]; ++j)
ffr(es[i][j]), ++deg[es[i][j]];
}
register int l = 1, r = 0;
for (register int i = 1; i <= m; ++i)
q[++r] = i, dp[i] = (node) {
1, 1
};
while (l <= r) {
int u = q[l++];
node tmp = dp[u];
ll gg = gcd(tmp.a, d[u]);
int val = d[u];
tmp.a /= gg, val /= gg, tmp.b *= val;
for (register int i = 1; i <= d[u]; ++i) {
int v = es[u][i];
dp[v] = dp[v] + tmp;
if ((--deg[v]) == 0)
q[++r] = v;
}
}
for (register int i = 1; i <= n; ++i)
if (d[i] == 0) {
dp[i].calc();
ks(dp[i].a);
putchar(' ');
ks(dp[i].b);
putchar('\n');
}
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 4ms
memory: 5404kb
input:
10 1 4 2 3 4 5 3 6 7 8 3 7 10 8 1 7 2 8 10 2 8 9 2 9 8 1 10 1 10 0
output:
1 1
result:
ok 2 tokens
Test #2:
score: 10
Accepted
time: 4ms
memory: 5292kb
input:
10 1 5 2 3 4 5 7 3 6 7 9 3 7 8 9 3 8 9 6 1 7 2 9 10 2 10 9 0 0 0
output:
2 15 8 15 1 3
result:
ok 6 tokens
Test #3:
score: 10
Accepted
time: 4ms
memory: 5348kb
input:
10 1 5 2 3 4 5 8 4 6 8 7 9 2 7 6 4 8 6 9 10 2 9 8 1 10 0 0 1 10 0
output:
3 20 2 5 9 20
result:
ok 6 tokens
Test #4:
score: 10
Accepted
time: 2ms
memory: 5356kb
input:
1000 1 5 2 3 4 5 468 5 6 7 8 9 72 5 10 11 12 13 658 5 14 15 16 17 100 5 18 19 20 21 129 5 22 23 24 2...
output:
1 625 1 625 1 625 1 625 1 625 1 625 1 625 1 3125 1 3125 2 3125 3 3125 2 3125 47 37500 1 2500 1 2500 ...
result:
ok 636 tokens
Test #5:
score: 10
Accepted
time: 5ms
memory: 5308kb
input:
1000 1 5 2 3 4 5 257 5 6 7 8 9 948 5 10 11 12 13 633 5 14 15 16 17 1000 5 18 19 20 21 105 5 22 23 24...
output:
1 625 1 625 6 625 2 625 1 625 1 625 1 625 1 625 1 625 1 625 1 500 1 1875 1 1250 1 2500 9 6250 1 2500...
result:
ok 626 tokens
Test #6:
score: 10
Accepted
time: 3ms
memory: 5480kb
input:
1000 1 5 2 3 4 5 799 5 6 7 8 9 587 5 10 11 12 13 694 5 14 15 16 17 865 5 18 19 20 21 10 5 22 23 24 2...
output:
1 625 1 625 1 625 1 625 1 625 1 625 2 625 6 625 9 6250 9 2500 1 2000 9 10000 1 2500 1 2500 1 2500 2 ...
result:
ok 652 tokens
Test #7:
score: 10
Accepted
time: 70ms
memory: 8052kb
input:
100000 1 5 2 3 4 5 7783 5 6 7 8 9 21991 5 10 11 12 13 45651 5 14 15 16 17 56745 5 18 19 20 21 84002 ...
output:
1 15625 1 15625 1 15625 1 15625 1 15625 1 78125 1 62500 1 78125 1 78125 1 78125 1 78125 1 78125 2 78...
result:
ok 93056 tokens
Test #8:
score: 10
Accepted
time: 57ms
memory: 7500kb
input:
100000 1 5 2 3 4 5 6025 5 6 7 8 9 32221 5 10 11 12 13 39240 5 14 15 16 17 55392 5 18 19 20 21 69386 ...
output:
1 12500 1 15625 1 15625 1 15625 1 15625 1 12500 1 15625 1 12500 1 12500 1 15625 1 15625 1 15625 1 12...
result:
ok 84746 tokens
Test #9:
score: 10
Accepted
time: 70ms
memory: 8344kb
input:
100000 10 5 11 12 13 14 15 3 66 67 68 4 96 97 98 99 5 1274 1643 2223 2242 2626 5 5407 8119 10748 198...
output:
1 48828125 2538341 10546875000 15673 2343750000 759673 2343750000 54145169317349 3023308800000000000...
result:
ok 64816 tokens
Test #10:
score: 0
Wrong Answer
time: 80ms
memory: 8364kb
input:
100000 10 5 11 12 13 14 15 3 66 67 68 4 98 99 100 101 5 193 213 239 613 1656 5 187 259 453 513 3129 ...
output:
1 48828125 1 48828125 191216299 675000000000 3778533703 48600000000000 5172390763527
result:
wrong answer 9th words differ - expected: '214192764230063', found: '5172390763527'