UESTC 1634 去年春恨却来时,落花人独立,微雨燕双飞
Posted 2855669158
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UESTC 1634 去年春恨却来时,落花人独立,微雨燕双飞相关的知识,希望对你有一定的参考价值。
题意:给你n个数(n<2000)q(q<10000)个询问s,求n个数是否能取任意个数相加得到s
题解:一开始以为是数论写半天。。。可以把这些数分类,分成a[1]类,每一类的数可以由最小的数加上t个a[1]得到,
初始得到的数只能是0,每个点到0的距离为无穷大,每次更新最短路,SPFA跑的更快一点
#include <bits/stdc++.h> #define maxn 100010 using namespace std; int dis[maxn], n, a[maxn]; void bfs(int fi){ memset(dis, 63, sizeof(dis)); dis[0] = 0; queue<int >q; q.push(fi); while(!q.empty()){ fi = q.front(); q.pop(); for(int i=1;i<n;i++){ if(dis[fi]+a[i]<dis[(fi+a[i])%a[0]]){ dis[(fi+a[i])%a[0]] = dis[fi]+a[i]; //dir[(fi+a[i])%a[0]] = 1; q.push((fi+a[i])%a[0]); } } } } int main() { int m, q; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; bfs(0); cin>>q; while(q--){ cin>>m; cout<<((dis[(m)%a[0]]<=m)?"YES":"NO")<<endl; } return 0; }
以上是关于UESTC 1634 去年春恨却来时,落花人独立,微雨燕双飞的主要内容,如果未能解决你的问题,请参考以下文章