BZOJ2118墨墨的等式[数论 最短路建模]
2118: 墨墨的等式
Time Limit: 10 Sec Memory Limit: 259 MB
Submit: 1317 Solved: 504
[Submit][Status][Discuss]
Description
墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N、{an}、以及B的取值范围,求出有多少B可以使等式存在非负整数解。
Input
输入的第一行包含3个正整数,分别表示N、BMin、BMax分别表示数列的长度、B的下界、B的上界。输入的第二行包含N个整数,即数列{an}的值。
Output
输出一个整数,表示有多少b可以使等式存在非负整数解。
Sample Input
3 5
Sample Output
HINT
对于100%的数据,N≤12,0≤ai≤5*10^5,1≤BMin≤BMax≤10^12。
- 首先,答案=ans(Bmax)-ans(Bmin-1)
- 找出a1到an中的最小值p,则如果可以构造出答案x,就可以构造出答案x+p
- 所以我们只需要对于每个b(0<=b<p),计算出最小的k,使k*p+b能够能够被构造出来,那么对于k’(k’>k) k’*p+b也能构造出来
- 所以对于每个b建一个点,对于每个ai,从b向(b+ai)%p连一条长度为ai的边
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
typedef long long ll;
const ll N=*1e5+,INF=1e19;
ll n;
ll p=INF,a[];;
ll bmx,bmn,ans=;
struct edge{
ll v,w,ne;
}e[N*];
ll h[N],cnt=;
void ins(ll u,ll v,ll w){
cnt++;
e[cnt].v=v;e[cnt].w=w;e[cnt].ne=h[u];h[u]=cnt;
//cnt++;
//e[cnt].v=u;e[cnt].w=w;e[cnt].ne=h[v];h[v]=cnt;
}
void buildGraph(){
for(ll i=;i<p;i++)
for(ll j=;j<=n;j++){
if(a[j]==p) continue;
ins(i,(i+a[j])%p,a[j]);
//prllf("ins %d %lld %lld\n",i,(i+a[j])%p,a[j]);
}
} struct hn{
ll u,d;
bool operator <(const hn &rhs)const{return d>rhs.d;}
};
ll d[N];
bool done[N];
priority_queue<hn> q;
void dijkstra(ll s){
for(ll i=;i<p;i++) d[i]=INF;
d[s]=;q.push((hn){s,});
while(!q.empty()){
hn x=q.top();q.pop();
ll u=x.u;
if(done[u]) continue;
done[u]=;
for(ll i=h[u];i;i=e[i].ne){
ll v=e[i].v;
if(d[v]>d[u]+e[i].w){
d[v]=d[u]+e[i].w;
q.push((hn){v,d[v]});
}
}
}
}
int main() {
scanf("%lld%lld%lld",&n,&bmn,&bmx);
for(ll i=;i<=n;i++) scanf("%lld",&a[i]),p=min(p,a[i]);
buildGraph();
dijkstra();
for(ll i=;i<p;i++){
if(d[i]>bmx) continue;
ll l=max(0LL,(bmn-d[i])/p),r=(bmx-d[i])/p;
if(l*p+d[i]<bmn) l++;
ans+=r-l+;
}
printf("%lld",ans);
return ;
}
BZOJ2118墨墨的等式[数论 最短路建模]的更多相关文章
- bzoj 2118 墨墨的等式 - 图论最短路建模
墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在非负整数解. Input ...
- BZOJ2118: 墨墨的等式(最短路 数论)
题意 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在非负整数解. So ...
- 【BZOJ2118】墨墨的等式(最短路)
[BZOJ2118]墨墨的等式(最短路) 题面 BZOJ 洛谷 题解 和跳楼机那题是一样的. 只不过走的方式从\(3\)种变成了\(n\)种而已,其他的根本没有区别了. #include<ios ...
- 【BZOJ2118】墨墨的等式 最短路
[BZOJ2118]墨墨的等式 Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值 ...
- BZOJ2118:墨墨的等式(最短路)
Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在 ...
- BZOJ2118: 墨墨的等式(最短路构造/同余最短路)
Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在 ...
- [图论训练]BZOJ 2118: 墨墨的等式 【最短路】
Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在 ...
- Bzoj2118 墨墨的等式
Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1488 Solved: 578 Description 墨墨突然对等式很感兴趣,他正在研究a1x1+ ...
- 数论+spfa算法 bzoj 2118 墨墨的等式
2118: 墨墨的等式 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1283 Solved: 496 Description 墨墨突然对等式很感兴 ...
随机推荐
- NodeJS API简介
简单介绍下NodeJS现有API. Assert(断言):该模块用于编写程序的单元测试用例. Buffer(缓冲块) :处理二进制数据. C/C++ Addons(拓展):Addons插件就是动态连接 ...
- ie7下<a></a>标签中<input />时不反应
<a href="News?id=@dr["id"].CInt()" ><input type="button" valu ...
- 2013最常用的NoSQL数据库
摘要:与关系数据库相比,每个NoSQL都有自己不同的适用场景,这里带大家盘点文档数据库.图数据库.键值数据存储.列存储数据库与内存数据网络等领域的常用的NoSQL. 在几年内,NoSQL数据库一直以性 ...
- UIApplication是什么
1.UIApplication对象是应用程序的象征 2.每一个应用都有自己的UIApplication对象,而且是单例的(只有一个) 3.通过[UIApplication sharedAppl ...
- C语言中的变量
1. 计算机需要处理数据 2.数据需要保存在存储器上 3. 计算机只能识别0或者1的二进制数据 4.我们看到的,用到的所有数据在计算机中都是以二进制存储的 5.内存中的相同的01二进制数据,以不同的编 ...
- IOS contentOffset该如何理解
contentOffset是哪个点??? 首先从字面理解:内容偏移 我可是查了词典的!!! 对于contentOffset有的时候我们会产生错误理解. 我不想在这里介绍错误的理解避免不必要的混淆. 我 ...
- 开启Apache mod_rewrite模块完全解答
启用mod_rewrite模块 在conf目录的httpd.conf文件中找到 LoadModule rewrite_module modules/mod_rewrite.so 将这一行前面的#去掉. ...
- js window对象
BOM的核心对象是window,它表示浏览器的一个实例. 在浏览器中,window对象是(1)通过JavaScript访问浏览器窗口的一个接口 (2)ECMAScript规定的Global对象 1.全 ...
- 学习 Mysql - 在linux上使用yum安装MySQL
1.检查已经安装的mysql信息 yum list installed mysql*rpm -qa | grep mysql* 2.列出已安装和可安装的mysql信息 yum list mysql* ...
- 使用xmarks同步 chrome ie firefox safari书签
xmarks是什么? Install Xmarks on each computer you use, and it seamlessly integrates with your web brows ...