求大佬帮助qwq
查看原帖
求大佬帮助qwq
1080171
moue楼主2025/7/28 16:03

1.为什么数组开大在c++14编译错误,在c++11就对了 2.在本地测的时候样例一直是输出1000,洛谷上交样例就对了,本来N=1e4,调大了之后分数就高了---

以下是ac代码

#include<bits/stdc++.h>
using namespace std;

const int N=32010;
int val[N],cost[N],follow[N][2],fans[N],f[N][N],n,m;
bool king[N];
 
int work()
{

	int p=0;
	for(int i=1;i<=m;i++)
	{
		if(king[i])
		{
			for(int j=0;j<=n;j++)
			{
				f[i][j]=f[p][j];
				if(j-cost[i]>=0)
				f[i][j]=max(f[i][j],f[p][j-cost[i]]+val[i]);
				
			    int fan1=fans[i]>=1?follow[i][0]:-1;
			    int fan2=fans[i]>=2?follow[i][1]:-1;
			    
			    if(fan1!=-1&&j-cost[i]-cost[fan1]>=0)
		        f[i][j]=max(f[i][j],f[p][j-cost[i]-cost[fan1]]+val[i]+val[fan1]); 
		        
				if(fan2!=-1&&j-cost[i]-cost[fan2]>=0)
			    f[i][j]=max(f[i][j],f[p][j-cost[i]-cost[fan2]]+val[i]+val[fan2]);
					
				if(fan1!=-1 && fan2 != -1&&j-cost[i]-cost[fan2]-cost[fan1]>=0)
				f[i][j]=max(f[i][j],f[p][j-cost[i]-cost[fan2]-cost[fan1]]+val[i]+val[fan2]+val[fan1]);
				
			}
			p=i;
		}	
	}
	return f[p][n];
}
int main()
{

	cin>>n>>m;

	int v,p,q;
	for(int i=1;i<=m;i++)
	{
		cin>>v>>p>>q;
		cost[i]=v;
		val[i]=v*p;
		if(!q)
		{
			king[i]=1;
		}else
		{
			follow[q][fans[q]++]=i;
		}
	}

	cout<<work();
	return 0;
}

![用c++14] (https://www.luogu.com.cn/record/227390059) 编译错误的代码与上面代码没有区别

2025/7/28 16:03
加载中...