地址:http://acm.uestc.edu.cn/#/problem/show/1633

题目:

去年春恨却来时,落花人独立,微雨燕双飞

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

给你一个大小为n的集合S,集合里有n个互不相同正整数.
有q个询问,每次询问是否能选择S中的一些数字 ( 同一个数字可以选择多次,也可以任何数字都不选),使它们相加的和为m.

Input

第一行一个数n(1≤n≤2000),表示集合S的大小.
第二行n个数,第ii个数ai(1≤ai≤50000)表示集合S中的第ii个数.
第三行一个数q(1≤q≤10000),表示询问次数.
接下来q行,每行一个数m(0≤m≤1000000000),表示该次询问的数.

Output

每次询问输出一行,如果存在和为m的方法,输出YES,否则输出NO.

Sample input and output

Sample Input Sample Output
3
2 4 9
4
6
7
18
25
YES
NO
YES
YES

Hint

对于第一个询问,存在2+2+2=6,所以输出YES
对于第一个询问,无法构造,输出NO
对于第三个询问,存在9+9=18,所以输出YES
对于第四个询问,存在2+2+4+4+4+9=25,所以输出YES

Source

2017 UESTC Training for Graph Theory
 
思路:
  设集合中最小的数为p。假如现在知道x能被表示出来,那么x+ai必然也能够被表示出来。
  记d[x]为所能表示的所有模p为x的数中的最小值,那么d[x]+k*p的所有数也必然能被表示出来。
  所以考虑模p的所有剩余系,可以判断任意数字是否可以被表示。
  然后题目就转化成了求d[x]的最短路问题。
 #include <bits/stdc++.h>

 using namespace std;

 #define MP make_pair
#define PB push_back
typedef long long LL;
typedef pair<int,int> PII;
const double eps=1e-;
const double pi=acos(-1.0);
const int K=5e4+;
const int mod=1e9+; int n,m;
int v[K],d[K],vis[K],mi=mod;
void spfa(void)
{
memset(d,0x3f3f3f3f,sizeof d);
queue<int>q;
q.push(),d[]=,vis[]=;
while(q.size())
{
int x=q.front();
q.pop(),vis[x]=;
for(int i=;i<=n;i++)
{
int y=(x+v[i])%mi;
if(d[x]+v[i]<d[y])
{
d[y]=d[x]+v[i];
if(!vis[y]) q.push(y),vis[y]=;
}
}
}
}
int main(void)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",v+i),mi=min(mi,v[i]);
spfa();
scanf("%d",&m);
int x;
while(m--)
{
scanf("%d",&x);
if(d[x%mi]<=x) printf("YES\n");
else printf("NO\n");
}
return ;
}
  

cdoj1633 去年春恨却来时,落花人独立,微雨燕双飞的更多相关文章

  1. 【最短路】【spfa】CDOJ1633 去年春恨却来时,落花人独立,微雨燕双飞

    对于S集合中的数,例如a1,考虑到如果x能够被表示出来,那么x+a1也一定能被表示出来 设d[r]为所有模a1余r的数中,能被表示出来的最小的数 用d[x]+ai去更新d[(x+ai)%a1],跑最短 ...

  2. 终端的乐趣--Linux下有趣的终端命令或者工具【转】

    转自:https://blog.csdn.net/gatieme/article/details/52144603 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

  3. Android之无限轮播图源代码

    Android轮播广告图是大家经常用到的一个控件今天便撸了一把代码 实现步骤 使用Viewpager进行实现图片滑动 设置ViewPager的数据,让其无限切换 Activity代码 public c ...

  4. Unity3D将来时:IL2CPP(上)

    http://inpla.net/thread-8197-1-1.html Unity3D将来时:IL2CPP(上) (注:本文详细的讲述了C#,Mono,.Net, IL等Unity使用到的概念,如 ...

  5. Unity将来时:IL2CPP是什么?

    作者:小玉链接:https://zhuanlan.zhihu.com/p/19972689来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Unity3D 想必大家都不陌 ...

  6. Unity3D将来时:WebGL

    作者:小玉链接:https://zhuanlan.zhihu.com/p/19974794来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 随着Unity5.0的发布,W ...

  7. 关于开发环境中的消息在download时没有下载下来时的问题

    业务场景:在开发环境改了一些代码,现在需要将这些代码(包括class和数据库对象)移植到开发环境,整理出了Objectlist(就是该模块定义了哪些数据库对象),然后上传到FTP服务器上时,再执行do ...

  8. Eclipse srever起来时,时间超过45s。

    双击servere的名字,在属性界面上进行修改. 如下图: 修改TimeOut中的值即可.

  9. ReactJS 页面跳转保存当前scrollTop回来时,自动移动到上次浏览器的位置

    在移动端的操作的时候,相信大家都遇到到这种情况,翻了好几页了,点击一项进去查,然后回来的时候,还想回来我原来的位置. google上也找了一此,有一个组件,但是好像是如果想实现这个功能,页面就得用那个 ...

随机推荐

  1. shrink-to-fit(自适应宽度)

    自适应宽度是指当未明白设定容器的宽度(或外边距设为auto)时,在特定的情况下容器的宽度会依据情况自行设定.而设定的结果往往并非我们想要的. W3C规范中描写叙述了几种shrink-to-fit的情况 ...

  2. angular 2+ innerHTML属性中内联样式丢失

    通过属性绑定的innerHTML,把字符串里面的html解析 解析是没问题的,但一些内联样式会丢失掉 为了不丢掉样式,需要自定义一个管道来解决这个问题 html.pipe.ts import {Pip ...

  3. 170425、centos安装mysql5.6数据库

    # rpm -qa | grep mysql ## 查看该操作系统上是否已经安装了 mysql 数据库, 有的话,可以通过 rpm -e 命令 或者 rpm -e --nodeps 命令来卸载掉 # ...

  4. 解决存储过程中拼接的SQL字符串超长导致sql语句被截取的问题

    今天遇到了一个奇葩的问题:存储过程中的sql字符串拼接的太长,超出了分页存储过程执行sql参数的nvarchar(4000)的长度. 没办法,只能修改自己的存储过程,因为分页存储过程是不能动的. 开始 ...

  5. 8个Javascript小技巧

    1. 使用 + 字符可以转换成数字 比如要把一个字符串数字转换成数字,你可能会这样做: var one = '1'; var two = '2'; var numberOne = Number(one ...

  6. Netty in action—Netty中的ByteBuf

    Netty in action—Netty中的ByteBuf - 日积月累 - CSDN博客 https://blog.csdn.net/yjw123456/article/details/77843 ...

  7. Django系列

    1.Django框架 2.Django restframework 其他 django之contenttype

  8. 素数筛法—时间复杂度O(n)

    请你想出一个算法求出n以内(含n)的所有素数,要求算法的时间复杂度越小越好. 这里介绍一种算法——快速线性素数筛法(欧拉筛法),时间复杂度O(n). 诀窍在于:筛除合数时,保证每个合数只会被它的最小质 ...

  9. git学习——<四>git版本管理

    一.git版本管理的优势 都说git比svn强大,强大在哪呢? 首先,从部署上说:svn.cvs都是集中式的,一台服务器上部署服务,所有客户端编写的代码都要提交到该服务器上.git是分布式的,所有人都 ...

  10. json中load和loads区别

    相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容从 ...