- C++
【警示后人】C24/C25第一例! 2020 CSP-J T2 直播获奖
- @ 2025-10-26 18:30:28
下面是我的CSP-J 2020 T2的代码,0 CE!
错处在于 行的 if (jishu >= max(1, (int)(ping * w / 100))) 的 max
报错信息:
[Error] no matching function for call to 'max(int, long long int)'
由报错信息可以发现错因是因为拿 int 和 long long int 比较,但从代码部分可以看出写了强转 (int)(......)
接下来阅读代码寻找错误:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e7 + 10, INF = 0x3f3f3f3f;
int n, w, a[N], fen, maxFen = -INF, ping;
signed main()
{
freopen("live.in", "r", stdin);
freopen("live.out", "w", stdout);
cin >> n >> w;
for (int j = 1; j <= n; j++)
{
int jishu = 0;
cin >> fen;
maxFen = max(maxFen, fen);
a[fen]++;
ping++;
for (int i = maxFen; i >= 1; i--)
{
jishu += a[i];
if (jishu >= max(1, (int)(ping * w / 100)))
{
cout << i << " ";
break;
}
}
}
return 0;
}
错因在于:#define int long long
所以bro写出来的强转其实是 long long 转 long long 💀💀💀
总结
以后写 #define ll long long 好了。
还有就是改完代码一定要跑一下,我今天CE就是因为加完 define 没运行检查,我是傻逼😭🔫
4 comments
-
C24liukaiwen LV 5 @ 2025-10-27 13:57:49改完代码不跑一下怎么忍住的,戒过毒吗
👍 1 -
@ 2025-10-27 13:56:45bro不会写
1ll -
@ 2025-10-26 18:47:13
你甚至可以用
typedef long long ll;不过define a b的意思是把a替换成btypedef a b是把b替换成a,且a必须是变量关键字 -
@ 2025-10-26 18:44:32骗你的,改掉这个也只有60 WA
🤡 4🤣 3😄 3👀 3🍋 3👎 2
- 1