差3个点
查看原帖
差3个点
228943
lego123_forever楼主2021/6/13 16:24

RT,请大佬帮忙看一看。

#include <bits/stdc++.h>
using namespace std;
vector<int> v[101];
int ma=0,vis[101][10100];
int main(){
	for(int i=0;i<101;++i) for(int j=0;j<10100;++j) vis[i][j]=0;
    int a;cin>>a;
    for(int i=0;i<a;i++){
    	vis[i][0]=1;
    	int m=0;
    	while(1){
    		int t;scanf("%d",&t);
    		if(t==-1)break;
			m+=t;
    		v[i].push_back(t);
			for(int j=0;j<=m-t;++j){
				if(vis[i][j]) vis[i][j+t]=1;
			}
		}
		ma=max(m,ma);
	}
	for(int i=ma;i>0;--i){
		bool t=0;
		for(int j=0;j<a;++j){//cout<<vis[j][i]<<" ";
			if(!vis[j][i]){
				t=1;break;
			}
		}
		//cout<<endl;
		if(t) continue;
		cout<<i;
		return 0;
	}
	cout<<0;
    return 0;
}
2021/6/13 16:24
加载中...