求助!!!
  • 板块灌水区
  • 楼主henhen_
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/20 19:42
  • 上次更新2023/11/3 08:35:26
查看原帖
求助!!!
347662
henhen_楼主2023/7/20 19:42

题目:https://www.luogu.com.cn/problem/P8060

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e6+10;
int head[N],cnt,vis[N],tot,a[N],dis[N];
int n,l,r,minn=0x3f3f3f3f3f3f3f3f;
queue<int>q;
inline void spfa(){
	memset(dis,0x3f,sizeof(dis));
	memset(vis,0,sizeof(vis));
	q.push(0);
	vis[0]=1;
	dis[0]=0;
	while(!q.empty()){
		int x=q.front();
		q.pop();
		vis[x]=0;
		for(int i=1;i<=n;i++){
			if(a[i]==minn)continue;
			int y=(x+a[i])%minn;
			if(dis[y]>dis[x]+a[i]){
				dis[y]=dis[x]+a[i];
				if(!vis[y]){
					q.push(y);
					vis[y]=1;
				}
			}
		}
	}
}
signed main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		minn=min(minn,a[i]);
	}
	spfa();
	int k;
	scanf("%lld",&k);
	while(k--){
		int c;
		scanf("%lld",&c);
		printf("%s\n",dis[c%minn]<=c ?"TAK":"NTE");
	}
	return 0;
}
2023/7/20 19:42
加载中...