启发函数警示后人
  • 板块P5507 机关
  • 楼主myxRUC
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/22 23:33
  • 上次更新2025/7/23 11:56:02
查看原帖
启发函数警示后人
1450848
myxRUC楼主2025/7/22 23:33

本人最开始一直超时,后来无意间发现启发函数写错,希望警示后人(大悲)

最初的错误版

inline int f(string str) {
	int cnt = 0;
	for (int i = 0; i < str.length(); i++) {
		cnt += (str[i] - '1');
	}
	return cnt / 2;
}

第二个错误版

inline int f(string str) {
	int cnt = 0;
	for (int i = 0; i < str.length(); i++) {
		cnt += (5 - (str[i] - '0'));
	}
	return cnt / 2;
}

最终正确版(哭)

inline int f(string str) {
	int cnt = 0;
	for (int i = 0; i < str.length(); i++) {
		if (str[i] != '1')cnt += (5 - (str[i] - '0'));
	}
	return cnt / 2;
}

2025/7/22 23:33
加载中...