奇怪的编译问题
  • 板块灌水区
  • 楼主typerxiaozhu
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/2 22:00
  • 上次更新2023/12/2 22:03:09
查看原帖
奇怪的编译问题
807832
typerxiaozhu楼主2023/12/2 22:00

https://codeforces.com/problemset/problem/417/A 做此题的时候,出现了奇怪的问题,编译选项是 GNU G++14,出错数据在本地明明是对的,本地:visual studio,另外在学校的 OJ 平台上测了如果开 O2 就会出问题,但是经过检查似乎也没出现下标越界,但是将数据范围扩大就不会有问题了

#include <iostream>
#include <cstring>
using namespace std;
const int N = 10005;
int f[N];
int v[3], w[3];
int c, d, n, m, k;
int main()
{
	memset(f, 0x3f, sizeof f);
	f[0] = 0;
	cin >> c >> d;
	cin >> n >> m;
	cin >> k;
	v[1] = n; v[2] = 1;
	w[1] = c; w[2] = d;
	int num = n * m - k; //minimum number of people go to the final
	for (int i = 1; i <= 2; i++)
	{
		for (int j = 1; j <= v[i]; j++) f[j] = min(f[j], w[i]);
		for (int j = v[i] + 1; j <= num; j++) f[j] = min(f[j], f[j - v[i]] + w[i]);
	}
	cout << f[num];
	return 0;
}

此为问题代码,如果将 v 和 w 改成 N 的话就可以 AC,但是如你所见下标最多到 2,哪怕是开到 5 也还是会有问题,不知道为什么

2023/12/2 22:00
加载中...