今晚写的

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

int typeNum,v[105],presentNum[105],testNum[105];
long long totalV;

void input(){
	scanf("%d%d",&totalV,&typeNum);
	for(int i=0;i<typeNum;i++){
		scanf("%d",&v[i]);
	}
}

long long cost(){
	long long total=0;
	for(int i=0;i<typeNum;i++){
		total+=v[i]*testNum[i];
	}
	return total;
}

int num(){
	int total=0;
	for(int i=0;i<typeNum;i++){
		total+=testNum[i];
	}
	return total;
}

void solve(){
	presentNum[0]=ceil((float)totalV/v[1]);
	long long costBeforeChange;
	for(int i=0;i<typeNum;i++)
		for(int j=0;j<typeNum;j++){
			do
			{
				memcpy(testNum,presentNum,sizeof(testNum)*typeNum/105);
				costBeforeChange=cost();
				testNum[i]--;
				while(cost()<totalV)
					testNum[j]++;
				if(num()<costBeforeChange){
					presentNum[i]=testNum[i];
					presentNum[j]=testNum[j];
			}
			else break;
		}while (true);
	}
}

int main(){
#ifdef DEBUG
	freopen("input.txt","r",stdin);
#endif
	input();
	solve();	
}

猜你喜欢

转载自blog.csdn.net/qq_42637581/article/details/86651691