RE求调
查看原帖
RE求调
734533
封禁用户楼主2023/6/14 17:41

RT,158 RE了

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int,int>
#define x first
#define y second
const int N=3e6+10;
int ne[N],e[N],w[N],h[N],idx;
void add(int a,int b,int c){
	e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;
}
int n,k;
int a[N];
int x;
int dis[N],vis[N];
void dj(){
	priority_queue<PII,vector<PII>,greater<PII> > qu;
	memset(dis,0x3f,sizeof(dis));
	dis[0]=0,qu.push({0,0});
	while(!qu.empty()){
		PII now=qu.top();qu.pop();
		if(vis[now.y]) continue;
		vis[now.y]=1;
		for(int i=h[now.y];~i;i=ne[i]){
			int j=e[i];
			if(dis[j]>now.x+w[i]){
				dis[j]=now.x+w[i];
				qu.push({dis[j],j});
			}
		}
	}
}
int ans;
signed main(){
	memset(h,-1,sizeof(h));
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=0;i<a[1];i++){
		for(int j=2;j<=n;j++){
			add(i,(i+a[j])%a[1],a[j]);
		}
	}
	dj();
	cin>>k;
	for(int ka=1;ka<=k;ka++){
		cin>>x;
		if(dis[x%a[1]]<=x){
			cout<<"TAK\n";
		}
		else{
			cout<<"NIE\n";
		}
	}
}
2023/6/14 17:41
加载中...