社区讨论

悬关,关于昨天 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 条回复,欢迎继续交流。

正在加载回复...