和楼下一样
查看原帖
和楼下一样
92532
微笑的坏坏楼主2020/5/24 19:19
#include<bits/stdc++.h>
using namespace std;
int n,m,tv,s,v[500005],k,l;
bool f[500005];
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>tv>>s;
		int t=1;
		while(t<=s)
		{
			v[++k]=tv*t;
			s-=t;
			t*=2;
		}
		if(s>0) v[++k]=tv*s;
	}
	for(int kkk=1;kkk<=m;kkk++)
	{
		int t;
		cin>>t;
		memset(f,0,sizeof(f));
		f[0]=1;
		for(int i=1;i<=k;i++)
		{
			for(int j=t;j>=0;j--)
			{
				if(f[j]==1)
				{
					f[j+v[i]]=1;
				}
			}
		}
		if(f[t]) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
	return 0;
}

莫名其妙

2020/5/24 19:19
加载中...