社区讨论
悬关,关于昨天 CF Div.2 的 D
题目总版参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mj2tlo79
- 此快照首次捕获于
- 2025/12/12 20:05 2 个月前
- 此快照最后确认于
- 2025/12/14 13:10 2 个月前
为什么这样写会有问题。
CPP#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200005;
const int MOD = 998244353;
int T, n, m; long long A[MAXN]; map<long long, int> f[MAXN];
struct Edge
{
int u, v; long long num;
} E[MAXN];
bool Cmp(Edge x, Edge y) { return x.num < y.num; }
void Add(int &x, int y)
{
x += y; if(x >= MOD) x -= MOD;
return;
}
int main()
{
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> T;
while(T --)
{
cin >> n >> m; for(int i = 1; i <= n; i ++) cin >> A[i];
for(int i = 1; i <= n; i ++) f[i].clear();
for(int i = 1; i <= m; i ++) { cin >> E[i].u >> E[i].v; E[i].num = A[E[i].v]; }
sort(E + 1, E + m + 1, Cmp); int ans = 0;
for(int i = 1; i <= m; i ++)
{
Add(f[E[i].u][A[E[i].v]], 1); Add(ans, f[E[i].u][A[E[i].v]]);
Add(f[E[i].v][A[E[i].u] + A[E[i].v]], f[E[i].u][A[E[i].v]]);
}
cout << ans << '\n';
}
return 0;
}
想半天没想明白,为什么官方题解换个顺序转移就对了。
回复
共 2 条回复,欢迎继续交流。
正在加载回复...