QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#212922 | #5402. 术树数 | complexor | 3 | 145ms | 3648kb | C++14 | 3.3kb | 2023-10-13 22:57:51 | 2023-10-13 22:57:51 |
Judging History
answer
#include <cstdio>
#include <algorithm>
#include <numeric>
#include <cstring>
#include <queue>
typedef long long LL;
typedef unsigned long long ULL;
typedef std::pair<int, int> pii;
#define MP std::make_pair
#define fi first
#define se second
#define clr(f, n) memset(f, 0, (n) << 2)
#define cpy(f, g, n) memcpy(f, g, (n) << 2)
int read()
{
int s = 0, f = 1;
char c = getchar();
while (!(c >= '0' && c <= '9'))
f ^= (c == '-'), c = getchar();
while (c >= '0' && c <= '9')
s = s * 10 + (c ^ 48), c = getchar();
return f ? s : -s;
}
const int MAXN = 200005, MAXD = 30;
int Q, K, m, n = 1;
auto fplus = [](int x, int y){ return x + y >= K ? x + y - K : x + y; };
auto fminus = [](int x, int y){ return x >= y ? x - y : x + K - y; };
auto Fplus = [](int &x, int y){ return x = fplus(x, y); };
auto Fminus = [](int &x, int y){ return x = fminus(x, y); };
void swap(int a[], int b[], int n)
{
for (int i = 0; i < n; i++)
std::swap(a[i], b[i]);
}
int exgcd(int x, int y, LL &a, LL &b)
{
if (!y) return a = 1, b = 0, x;
int d = exgcd(y, x % y, b, a);
b -= a * (x / y);
return d;
}
int gcd(int x, int y)
{
for (; y; std::swap(x, y)) x /= y;
return x;
}
struct Linear_Basis
{
int p[MAXD][MAXD];
void insert(int v[])
{
for (int i = m - 1; i >= 0; i--)
if (v[i])
{
if (!p[i][i])
{
cpy(p[i], v, i + 1);
int d = (K, v[i]);
for (int j = 0; j <= i; j++)
v[j] = (LL)v[j] * (K / d) % K;
}
while (v[i])
{
for (int j = 0; j <= i; j++)
Fminus(p[i][j], (LL)(p[i][i] / v[i]) * v[j] % K);
swap(p[i], v, i + 1);
}
}
}
void query(int v[])
{
for (int i = m - 1; i >= 0; i--)
if (v[i] && p[i][i])
{
LL a, b;
int g = exgcd(p[i][i], K, a, b);//gcd(p[i][i], K);
int c = (K - v[i] + g - 1) / g;
a = (K + c * a % (K / g)) % (K / g);
for (int j = 0; j <= i; j++)
v[j] = (a * p[i][j] + v[j]) % K;
}
}
} lb;
int anc[MAXN][19], val[MAXN][MAXD], dep[MAXN];
int tmp[MAXD], tm[MAXD];
int getLca(int x, int y)
{
if (dep[x] < dep[y]) std::swap(x, y);
int dif = dep[x] - dep[y];
for (int i = 0; i <= 18; i++, dif >>= 1)
if (dif & 1) x = anc[x][i];
if (x == y) return x;
for (int i = 18; i >= 0; i--)
if (anc[x][i] != anc[y][i])
x = anc[x][i], y = anc[y][i];
return anc[x][0];
}
void calc(int f[], int v)
{
clr(f, m);
for (int i = 0; v; v /= K, i++)
f[i] = v % K;
}
void pplus(int f[], int g[])
{
for (int i = 0; i < m; i++)
Fplus(f[i], g[i]);
}
int calc(int f[])
{
int v = 0;
for (int i = 0, j = 1; i < m; i++, j *= K)
v += f[i] * j;
return v;
}
int main()
{
Q = read(), K = read(), m = read();
for (int _ = 1; _ <= Q; _++)
{
int o = read(), x = read(), y = read();
if (o == 1)
{
calc(tmp, y), cpy(val[n], tmp, m), pplus(val[n], val[x]);
for (int i = 0; i < m; i++) Fplus(tmp[i], tmp[i]);
lb.insert(tmp);
}
else if (o == 2)
{
calc(tmp, read());
for (int i = 0; i < m; i++) tm[i] = fplus(tmp[i], tmp[i]);
lb.insert(tm);
for (int i = 0; i < m; i++)
Fplus(tmp[i], fplus(val[x][i], val[y][i]));
lb.insert(tmp);
}
else
{
for (int i = 0; i < m; i++)
tmp[i] = fplus(val[x][i], val[y][i]);
lb.query(tmp);
printf("%d\n", calc(tmp));
}
}
return 0;
}
詳細信息
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 2
Accepted
time: 0ms
memory: 3580kb
input:
30 7 3 1 1 301 1 1 236 1 2 278 3 2 4 3 2 4 2 1 4 265 1 1 242 1 4 278 1 6 337 3 2 3 2 5 7 304 2 5 6 34 1 4 178 3 6 7 3 5 7 3 1 4 1 1 178 3 3 4 3 1 6 3 3 4 2 6 7 131 1 1 213 3 1 3 2 3 10 11 3 4 6 2 5 9 169 1 6 9 2 5 10 29 1 9 111 3 9 11
output:
0 0 0 0 0 0 0 0 0 0 0 0
result:
ok 12 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
30 9 3 1 1 694 1 2 251 1 2 623 2 2 4 109 3 3 4 3 1 2 2 2 4 611 1 4 595 2 2 5 477 2 2 5 363 3 1 3 2 1 5 121 1 2 225 2 1 5 214 2 3 6 706 3 3 4 2 2 3 122 2 2 3 621 3 2 3 3 2 4 2 1 5 630 1 5 598 3 4 5 3 1 3 1 2 665 2 1 2 331 2 1 6 449 1 2 387 3 3 6 3 4 6
output:
0 0 0 0 0 0 0 0 0 0
result:
ok 10 lines
Test #3:
score: -2
Wrong Answer
time: 0ms
memory: 1536kb
input:
30 4 5 1 1 854 1 1 467 1 2 708 2 2 4 529 1 4 115 1 4 444 2 3 4 108 2 2 5 724 2 1 3 375 1 5 827 2 5 6 974 1 3 73 3 2 3 2 2 3 140 3 5 6 2 6 8 787 3 1 5 1 5 971 3 4 6 2 4 5 816 3 7 8 3 2 4 1 6 855 2 5 10 39 2 6 9 280 2 6 10 662 3 7 10 1 6 412 3 4 7 1 6 276
output:
0 0 0 0 0 0 0 0
result:
wrong answer 2nd lines differ - expected: '256', found: '0'
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Wrong Answer
Test #21:
score: 11
Accepted
time: 145ms
memory: 3540kb
input:
198517 3 16 1 1 40710744 1 2 21885097 1 1 23592366 1 4 7387074 1 5 16074177 1 1 41027400 1 4 18082971 1 2 12822448 1 1 2286557 1 1 27896295 1 11 14532760 1 8 2357296 1 11 9190559 1 6 40503152 3 4 11 3 1 7 3 3 7 3 8 14 3 12 15 3 2 3 1 10 34606866 1 13 42718465 1 16 30353561 3 5 11 3 2 6 3 16 18 1 3 2...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 99662 lines
Test #22:
score: -11
Wrong Answer
time: 60ms
memory: 3648kb
input:
198073 8 8 1 1 4007183 1 1 411647 1 1 3301064 1 1 2747675 1 3 11141272 1 3 4308435 1 4 15582931 1 5 11340890 1 2 9172283 1 9 542280 1 10 12209796 1 3 2829956 3 1 3 1 3 724504 3 2 14 3 3 14 3 9 12 3 7 10 1 1 3594204 1 14 13600647 1 15 4589767 3 10 14 1 4 10564184 1 13 1781174 1 19 6067505 1 9 6735060...
output:
2097664 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2396168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 294921 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2359881 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
result:
wrong answer 1st lines differ - expected: '262729', found: '2097664'
Subtask #4:
score: 0
Wrong Answer
Test #26:
score: 0
Wrong Answer
time: 14ms
memory: 1604kb
input:
198891 26426880 1 1 1 0 2 1 2 0 3 1 2 1 1 0 3 2 3 3 1 2 1 2 0 1 2 0 1 3 0 1 6 0 2 1 6 0 2 3 6 0 3 2 3 1 2 13213440 1 2 13213440 1 4 13213440 3 4 10 1 1 13213440 2 3 4 0 2 3 8 13213440 1 1 0 1 12 0 1 13 0 1 3 0 3 2 11 3 2 12 2 11 14 13213440 1 6 0 2 12 14 0 2 1 2 0 1 10 0 1 12 0 2 3 13 0 3 12 14 3 1 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 5th lines differ - expected: '13213440', found: '0'
Subtask #5:
score: 0
Wrong Answer
Test #30:
score: 0
Wrong Answer
time: 136ms
memory: 3560kb
input:
199458 2 25 1 1 31252443 2 1 2 22827339 1 2 13517756 1 2 5635412 1 3 33397078 1 3 33542998 2 3 5 1484991 3 5 6 2 1 3 7938846 2 1 2 3665458 1 3 29150948 3 4 5 1 3 733545 1 7 4698781 1 7 21699192 1 6 10854390 3 3 8 3 4 8 1 2 6889338 2 1 12 27646676 2 6 8 24407215 1 11 20847453 3 4 13 1 6 16891344 3 4 ...
output:
0 0 0 0 0 0 0 44405 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 1st lines differ - expected: '150016', found: '0'
Subtask #6:
score: 3
Accepted
Test #33:
score: 3
Accepted
time: 7ms
memory: 1604kb
input:
49958 1023 2 1 1 122428 1 1 917186 2 2 3 53148 1 3 876461 2 1 3 968146 2 2 4 569341 2 3 4 199413 2 1 4 238371 1 3 127427 1 2 887225 2 1 4 776059 2 4 6 155479 2 1 6 795533 1 5 159578 3 5 6 2 2 5 758778 2 5 6 601115 3 4 7 1 4 202224 2 5 6 902346 3 1 6 3 5 7 3 3 5 1 2 791251 1 5 502214 2 6 7 929048 1 6...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 16607 lines
Test #34:
score: 0
Accepted
time: 136ms
memory: 1504kb
input:
198392 7 9 1 1 23598910 3 1 2 1 1 25616681 2 1 2 22101090 2 2 3 25455751 3 1 2 3 1 2 1 3 25668120 3 1 3 1 3 23878180 1 4 10885281 1 1 5873751 2 2 7 31608236 3 2 3 3 3 5 2 2 6 37313936 2 1 6 36853293 2 4 7 6773989 2 1 7 19143946 3 2 7 3 3 7 3 1 2 1 1 31756932 3 3 6 2 5 8 39585364 1 2 27162269 3 4 5 2...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 65758 lines
Subtask #7:
score: 0
Skipped
Dependency #1:
0%