P4409乱搞贪心求hack
  • 板块学术版
  • 楼主ATZdhjeb
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/7/25 15:33
  • 上次更新2023/10/27 18:29:52
查看原帖
P4409乱搞贪心求hack
483317
ATZdhjeb楼主2022/7/25 15:33

RT,题目在这里

本蒟蒻最开始想到了显而易见的错误贪心 ,然后发现它可以被形如 a,b,a,b,a,,b,aa,b,a,b,a,……,b,a 的数据卡掉,然后我对这种数据进行特判,过掉了讨论区/题解/自己出的所有hack数据,但还是WA52分/kk

代码如下:

#include <bits/stdc++.h>

using namespace std;

bool flag = false;
int n,a[20020],ans = 0,last = 0,res = 0,sum = 0;

int main() {
	cin >> n;
	for(int i = 1; i <= n; ++i) {
		cin >> a[i];
		if(i == 1) last = a[i];
		else if(i == 2) res = a[i];
		else if(i % 2) {
			if(a[i] != last) flag = true;
		} else if(i % 2 == 0) {
			if(a[i] != res) flag = true;
		}
		sum += a[i];
	}
	a[n + 1] = a[1];
	for(int i = 1; i <= n; ++i) ans = max(ans,a[i] + a[i + 1]);
	if(flag) cout << ans;
	else {
		if(a[1] > a[2]) cout << ans;
		else {
			int d = sum / (ans + a[1]);
			int l = sum % (ans + a[1]);
			while(true) {
				if(l + d >= ans + a[1]) break;
				l += d;
				--a[1];
			}
			cout << ans + a[1];
		}
	}
	return 0;
}

(hack数据最好不要形如 a,b,a,b,a,,b,aa,b,a,b,a,……,b,a ,因为我通过输出特判的布尔变量的方式话说我这不算套取数据吧…… 发现该题的数据并不是这样)

2022/7/25 15:33
加载中...