O(n^2)的答案代码中的一个疑问
  • 板块P4933 大师
  • 楼主Refrain520CC
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/5/30 19:01
  • 上次更新2023/10/23 14:18:05
查看原帖
O(n^2)的答案代码中的一个疑问
864920
Refrain520CC楼主2023/5/30 19:01
#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std; 

const int N = 1e3 + 5, mol = 998244353, M  = 2e4;

int n;
int q[N];
int dp[N][2*M+5], ans;

signed main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    
    cin >> n;
    
    for(int i = 1; i <= n ; i ++) cin >> q[i];
    
    for(int i = 1; i <= n ; i ++)
    {
        ans ++;
        for(int j = 1; j < i ; j ++)
        {
            dp[i][q[i] - q[j] + M] += dp[j][q[i]-q[j] + M] + 1;
            dp[i][q[i] - q[j] + M] %= mol;
            ans += dp[j][q[i]-q[j] + M] + 1;
            ans %= mol;
        }
    }
    
    cout << ans << endl;
    
    return 0;
}

我比较疑惑的是为什么用dp[j][q[i]-q[j] + M] + 1作为对ans的贡献,而不是用dp[i][q[i] - q[j] + M]

2023/5/30 19:01
加载中...