WA 了4个点,多日苦思,终无果,以待高人相助。

P4933 大师

@[喵喵喵__](/user/429572) ```cpp if(variance < 0)variance += 20005; ``` 这么写的话 `variance >= 0` 的情况不是没加吗
by 阿丑 @ 2021-06-07 17:54:19


@[阿丑](/user/364963) 阿里嘎多!非常感谢!终于A了哈哈哈
by 喵喵喵__ @ 2021-06-07 19:00:36


修改之后的代码,以诫后人。 ```cpp #include<stdio.h> #define max(a, b) (a > b ? a : b) #define min(a, b) (a < b ? a : b) const int MAXn = 1e4 + 5; const int MOD = 998244353; int read(){ int w = 0, r = 0;char ch = getchar(); while(ch <'0' || ch > '9')w|=ch == '-', ch = getchar(); while(ch >= '0' && ch <= '9')r = (r<<1)+(r<<3)+(ch^48), ch = getchar(); return w ? ~r + 1 : r; } int n, a[MAXn], b[1005][40010]; int sta[MAXn], top; bool vis[40010]; int main(){ n = read(); int ans = 0; for(int i = 1; i <= n; i++)a[i] = read(); for(int i = 2; i <= n; i++){ for(int j = 1; j <= i - 1; j++){ int variance = a[i] - a[j]; if(variance < 0)variance += 40005; b[i][variance] += b[j][variance] + 1; b[i][variance] %= MOD; vis[variance] = 1; sta[++top] = variance; } do{ int p = sta[top--]; if(vis[p]){ ans += b[i][p]; ans %= MOD; vis[p] = false; } }while(top); } printf("%d", (ans + n)%MOD); return 0; } ```
by 喵喵喵__ @ 2021-06-07 19:01:57


用c写代码的才是真正的大佬!膜拜!我也是这几个测试点wa了,今日一见,果然ac了!!!
by liquid9 @ 2022-03-27 23:12:16


|