QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#536450 | #8049. Equal Sums | ucup-team3591# | ML | 1ms | 5796kb | C++20 | 2.0kb | 2024-08-29 13:01:16 | 2024-08-29 13:01:16 |
Judging History
answer
// Code by Heratino & Nelofus
// 消えたくって 羽ばたいて 今
// 消えたくなくなった
// 摘み取って残した ここでいつか 華咲かせる
// 消えたかった 私はもういない
// 消えなくてよかったな…
// だって君と出会い 芽吹いてしまった 運命の華
#include <bits/stdc++.h>
using i64 = long long;
using f64 = double;
//{{{
template<typename Ta, typename Tb>
inline void chkmax(Ta &a, const Tb &b) {if (a < b) a = b;}
template<typename Ta, typename Tb>
inline void chkmin(Ta &a, const Tb &b) {if (a > b) a = b;}
//}}}
constexpr int N = 510;
constexpr int V = 500;
constexpr int mod = 998244353;
inline int Add(const int &x, const int &y) {return x + y >= mod ? x + y - mod : x + y;}
inline int Sub(const int &x, const int &y) {return x - y < 0 ? x - y + mod : x - y;}
int n, m;
int f[N][N][2 * N], g[N][N][2 * N];
int xl[N], xr[N], yl[N], yr[N];
inline void do_prefix(int x, int y) {
for (int i = N + V; i >= N - V; i--)
g[x][y][i] = Add(f[x][y][i], g[x][y][i + 1]);
}
inline int segval(int x, int y, int l, int r) {
if (l > r)
return 0;
return Sub(g[x][y][l], g[x][y][r + 1]);
}
int main() {
#ifdef HeratinoNelofus
freopen("input.txt", "r", stdin);
#endif
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin >> n >> m;
for (int i = 1; i <= n; i++)
std::cin >> xl[i] >> xr[i];
for (int i = 1; i <= m; i++)
std::cin >> yl[i] >> yr[i];
f[0][0][N] = 1;
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= m; j++) {
do_prefix(i, j);
for (int k = N - V; k <= N + V; k++) {
if (j + 1 <= m)
f[i][j + 1][k] = Add(f[i][j + 1][k], segval(i, j, std::max(N + 1, k + yl[j + 1]), std::min(V + N, k + yr[j + 1])));
if (i + 1 <= n)
f[i + 1][j][k] = Add(f[i + 1][j][k], segval(i, j, std::max(N - V, k - xr[i + 1]), std::min(N, k - xl[i + 1])));
}
}
}
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
std::cout << f[i][j][N] << " \n"[j == m];
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 5796kb
input:
2 3 1 2 2 3 1 4 2 2 1 3
output:
2 0 0 3 4 4
result:
ok 6 numbers
Test #2:
score: -100
Memory Limit Exceeded
input:
500 500 19 458 1 480 7 485 50 461 12 476 15 461 48 466 40 453 46 467 9 458 27 478 26 472 46 459 29 490 6 500 17 487 48 484 28 472 28 459 25 480 4 491 29 481 36 460 2 491 44 499 22 473 20 458 4 483 27 471 2 496 11 461 43 450 2 478 37 466 15 459 42 482 7 451 19 455 2 453 47 475 48 450 1 474 46 471 9 4...
output:
411 79401 9145270 673005095 180581065 984223118 586589234 293043270 404363796 865361724 665487988 118838806 926189944 226338288 521479857 808644951 786041288 340769021 177100 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...