社区讨论
莫名RE,求调试
SP116INTERVAL - Intervals参与者 2已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @lo1c13kn
- 此快照首次捕获于
- 2023/10/22 18:34 2 年前
- 此快照最后确认于
- 2023/11/02 18:56 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 10;
const int R = 5e4 + 100;
int head[N];
int step[N];
int vis[N];
pair<int, int> p[N];
int n, m;
int tot;
struct node {
int to, next, dis;
}edge[N];
void spfa() {
memset(step, 0x3f, sizeof step);
queue<int> que;
que.push(R);
step[R] = 0;
while (que.size()) {
int x = que.front();
que.pop();
for (int i=head[x]; i; i=edge[i].next) {
int y = edge[i].to;
int dis = edge[i].dis;
if (step[y] > step[x]+dis) {
step[y] = step[x]+dis;
que.push(y);
}
}
}
}
void add(int from, int to, int dis) {
edge[++tot].to = to;
edge[tot].dis = dis;
edge[tot].next = head[from];
head[from] = tot;
}
int input() {
tot = 0;
memset(head, 0, sizeof head);
memset(edge, 0, sizeof edge);
memset(vis, 0, sizeof vis);
memset(p, 0, sizeof p);
add(R, 0, 0);
add(R, 5e4, 0);
add(R, 5e4+1, 0);
for (int i=1; i<5e4; i++) {
add(i, i+1, 1);
add(i+1, i, 0);
add(R, i, 0);
}
cin >> n;
for (int i=1; i<=n; i++) {
int a, b, c;
cin >> a >> b >> c;
a++, b++;
p[i] = {a, b};
add(b, a-1, -c);
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while (t--) {
input();
spfa();
int mx = 0;
int mn = 1e9;
for (int i=1; i<=n; i++) {
mx = max(mx, p[i].second);
mn = min(mn, p[i].first);
// cout << p[i].first-1 << " " << step[p[i].first-1] << endl;
// cout << p[i].second << " " << step[p[i].second] << endl;
// mx = max(mx, max(step[p[i].second], step[p[i].first-1]));
}
cout << step[mx] - step[mn-1] << endl;
// if (t) cout << endl;
}
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...