下面是我的CSP-J 2020 T2的代码,0 CE

错处在于 2626 行的 if (jishu >= max(1, (int)(ping * w / 100)))max

报错信息:

[Error] no matching function for call to 'max(int, long long int)'

由报错信息可以发现错因是因为拿 intlong 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

  • @ 2025-10-27 13:57:49

    改完代码不跑一下怎么忍住的,戒过毒吗

    👍 1
    • @ 2025-10-27 15:01:40

      狠狠点了

  • @ 2025-10-27 13:56:45

    bro不会写1ll

    • @ 2025-10-26 18:47:13

      你甚至可以用typedef long long ll; 不过define a b的意思是把a替换成b typedef a b是把b替换成a,且a必须是变量关键字

      • @ 2025-10-26 18:44:32

        骗你的,改掉这个也只有60 WA

        🤡 4
        🤣 3
        😄 3
        👀 3
        🍋 3
        👎 2
        • 1