题意:

思路:From https://www.cnblogs.com/GavinZheng/p/11709153.html#4421510

写的1e9,int范围的

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int,int> PII;
typedef pair<ll,ll> Pll;
typedef vector<int> VI;
typedef vector<PII> VII;
typedef pair<ll,ll>P;
#define N 500010
#define M 6000010
#define INF 1e9
#define fi first
#define se second
#define MP make_pair
#define pb push_back
#define pi acos(-1)
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define lowbit(x) x&(-x)
#define Rand (rand()*(1<<16)+rand())
#define id(x) ((x)<=B?(x):m-n/(x)+1)
#define ls p<<1
#define rs p<<1|1
#define fors(i) for(auto i:e[x]) if(i!=p) const int MOD=1e8+,inv2=(MOD+)/;
int p=1e4+;
double eps=1e-;
int dx[]={-,,,};
int dy[]={,,-,}; ll dis[N];
int head[N],vet[M],nxt[M],len[M],a[N],vis[N],mn,n,tot; int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} ll readll()
{
ll v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} void add(int a,int b,int c)
{
nxt[++tot]=head[a];
vet[tot]=b;
len[tot]=c;
head[a]=tot;
} void build()
{
rep(i,,mn-) head[i]=;
tot=;
rep(i,,mn-)
rep(j,,n) add(i,(i+a[j])%mn,a[j]);
} void dijk()
{
priority_queue<pair<ll,int> >q;
mem(vis,);
mem(dis,0x3f);
q.push(MP(,)); dis[]=;
while(!q.empty())
{
int u=q.top().se;
q.pop();
if(vis[u]) continue;
vis[u]=;
int e=head[u];
while(e)
{
int v=vet[e];
if(dis[u]+len[e]<dis[v])
{
dis[v]=dis[u]+len[e];
q.push(MP(-dis[v],v));
}
e=nxt[e];
}
}
} int main()
{
n=read();
ll L=readll(),R=readll();
L--;
mn=INF;
int flag=;
rep(i,,n)
{
a[i]=read();
if(a[i])
{
mn=min(mn,a[i]);
flag=;
}
}
if(mn==INF)
{
printf("0\n");
return ;
}
build();
dijk();
if(flag) dis[]=;
else dis[]=mn;
ll ans=;
rep(i,,mn-)
{
if(R>=dis[i]) ans+=((R-dis[i])/mn)+;
if(L>=dis[i]) ans-=((L-dis[i])/mn)+;
}
printf("%lld\n",ans);
return ;
}

最新文章

  1. ubuntu安装php5.3
  2. iOS 发布遇到的问题 (转载)
  3. 一小时学会Markdown写作
  4. 自学EF一些小笔记
  5. jquery的change 事件
  6. oracle中的sql%rowcount
  7. Apache与Nginx优缺点比较
  8. 部署eolinker开源版接口管理
  9. 真是没想到,ikvm.net居然停止开发了。
  10. 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)
  11. Oracle查看表空间,创建表空间
  12. 全志A33 linux led驱动编程(附实测参考代码)
  13. Facelets应用程序的生命周期
  14. Java SE之反射技术[Field](二)
  15. webpack对多个模块依赖进行打包
  16. Android蓝牙学习笔记
  17. C# Azure-让http自动跳转到https链接
  18. linux自动启动的示例
  19. myecilpse +TOMCAT+web:jsp向mysql添加数据,查询在jsp页面显示
  20. DSU模板(树的启发式合并)

热门文章

  1. [JS] 点击按钮触发后台事件前,弹出确认框
  2. linux c++ 实现http请求
  3. BUUOJ reverse 刮开有奖
  4. 利用ansible进行主机信息收集
  5. CF894E Ralph and Mushrooms
  6. jquery_easyUI 键盘弹起事件
  7. Vue配置bs环境
  8. 现身说法:面对DDoS攻击时该如何防御?
  9. python 单引号、双引号和三引号混用
  10. [转]为什么要引入nullptr?