使用快读爆0 求佬请教原因 改成cin就ac
查看原帖
使用快读爆0 求佬请教原因 改成cin就ac
728445
redwolf楼主2023/8/16 13:28

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <stdlib.h>
#include <vector>
#include <cmath>
#include <set>
#include <map>
typedef long long ll;
typedef long double ld;
using namespace std;
//#define mod 1e9+7
#define lyh(i,a,b) for(int i = a; i <= b; ++ i)
const int mod = 998244353;
const int inf = 0x3f3f3f3f;
inline void read(int &x)
{
	x=0;
	int p=1;
	char c=getchar();
	while(!isdigit(c)){if(c=='-')p=-1;c=getchar();}
	while(isdigit(c)) {x=(x<<1)+(x<<3)+(c^'0');c=getchar();}
	x*=p;
}
const int N = 300;
int n,v;
int a[N];
int f[200050];
void solved()
{
	cin >> v>> n;
//	read(v);
//	read(n);
//	cout << n <<" " << v << endl;
	for(int i = 1; i <= n; ++ i)cin >> a[i];
	
	for(int i = 1; i <= n; ++ i)
	{
		for(int j = v; j >= a[i]; --j)
		{
//			if(f[i]<= j)
							
				f[j] = max(f[j], f[j - a[i]] + a[i]);
			
		}
		
//		for(int j = 0; j < n; ++ j)
//		if(f[j] + a[j] <= v)
//		{
//			f[i] = max(f[i], f[i - 1] + a[j]);
//		}
	}
	//for(int i = 1; i <= v; ++ i)cout <<f[i] <<" ";
	cout << v - f[v] <<endl;
}

int main(){
	cin.tie(0);
	cout.tie(0);
	ios::sync_with_stdio(false);
//	int t;
//	cin >> t;
//	while(t--)
		solved();
} 
2023/8/16 13:28
加载中...