QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#776103 | #7905. Ticket to Ride | wangjunrui | ML | 1ms | 3824kb | C++14 | 1.9kb | 2024-11-23 17:34:00 | 2024-11-23 17:34:00 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
constexpr int N = 1e4 + 5;
constexpr int base = 1e6 + 33;
constexpr int mod = 998244353;
typedef long long ll;
typedef unsigned long long ull;
int n, m;
vector<pair<int, int>> G[N];
struct node
{
int fa[N], nxt[N];
int maxpos;
ll max, c[N];
inline int find(int x)
{
return !fa[x] ? x : fa[x] = find(fa[x]);
}
inline void clear()
{
max = maxpos = 0;
for (int i = 1; i <= n; ++i)
c[i] = nxt[i] = fa[i] = 0;
}
inline void insert(int pos, ll k)
{
if (k > max)
{
c[maxpos] = k - max;
nxt[maxpos] = pos;
maxpos = pos;
max = k;
}
else
fa[pos] = maxpos;
}
inline void update(int u, ll k)
{
u = find(u);
while (u != maxpos)
{
if (k < c[u])
{
c[u] -= k;
k = 0;
break;
}
k -= c[u];
int v = nxt[u];
if (v == maxpos)
maxpos = u;
else
{
nxt[u] = nxt[v];
c[u] = c[v];
}
fa[v] = u;
}
if (u == maxpos)
max += k;
}
} q;
ll buf[2][N];
ll answer[N];
inline void clear()
{
for (int i = 0; i <= n; ++i)
{
G[i].clear();
buf[0][i] = buf[1][i] = answer[i] = 0;
}
}
inline void work()
{
cin >> n >> m;
for (int i = 1; i <= m; ++i)
{
int l, r, v;
cin >> l >> r >> v;
G[r].emplace_back(l, v);
}
auto f = buf[0], g = buf[1];
for (int r = 1; r <= n; ++r)
{
f[r] = f[r - 1];
for (auto [l, v] : G[r])
f[r] += v;
}
answer[n] = f[n];
for (int j = 1; j < n; ++j)
{
q.clear();
swap(f, g);
for (int i = j; i <= n; ++i)
{
for (auto [l, v] : G[i])
if (l >= j)
q.update(l, v);
f[i] = max(g[i - 1], q.max);
q.insert(i, f[i]);
}
answer[n - j] = f[n];
}
for (int i = 1; i <= n; ++i)
cout << answer[i] << ' ';
cout << '\n';
clear();
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int test = 1;
cin >> test;
while (test --)
work();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3824kb
input:
2 4 3 0 2 3 3 4 2 0 3 1 3 1 1 3 100
output:
2 3 5 6 0 100 100
result:
ok 2 lines
Test #2:
score: -100
Memory Limit Exceeded
input:
1000 2 9 0 2 396628655 1 2 268792718 0 2 16843338 1 2 717268783 0 1 693319712 0 1 856168102 1 2 407246545 1 2 527268921 0 1 536134606 6 2 2 5 451394766 0 5 695984050 9 7 0 6 73936815 2 9 505041862 4 5 223718927 5 7 179262261 3 5 449258178 0 5 493128 0 3 994723920 6 6 3 5 433389755 2 4 773727734 4 5 ...
output:
2085622420 4419671380 0 0 451394766 451394766 1147378816 1147378816 223718927 223718927 994723920 1218442847 1668194153 1742130968 1921393229 1921393229 2426435091 127680943 773727734 901408677 1334798432 2675644351 2675644351 976357580 1594205360 1971633687 2347908675 2965756455 3485691742 4180...