题目大意:给定n个物品,每个物品有一个非负价值,问[L,R]区间内有多少价值可以被凑出来。

题意网上一大片,具体求解过程是利用了加法原理,将各个模数拥有的个数之和相加。

就是说随机取一个数a[k],那么就是对于每个模数,通过转移的方式求出到达每个模数的最短路,将每个模数

0-(a[k]-1)之间的数连每个对应的a[j] (%a[k])意义下,花费为路的长度,这样就好了,最后前缀和相减求答案。

 #include<cmath>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; typedef long long ll;
typedef pair<ll,int>fzy;
const ll INF=1e16+; int n;
int a[];
int cnt,head[],next[],rea[],val[];
ll ans=,l,r,dis[];
bool boo[]; struct cmp
{
bool operator()(fzy x,fzy y)
{
return x.first>y.first;
}
};
priority_queue<fzy,vector<fzy>,cmp>q; void add(int u,int v,int fee)
{
cnt++;
next[cnt]=head[u];
head[u]=cnt;
rea[cnt]=v;
val[cnt]=fee;
}
void Dijkstra()
{
for (int i=;i<a[];i++)
dis[i]=INF,boo[i]=;
dis[]=;
q.push(make_pair(,));
while (!q.empty())
{
fzy now=q.top();
q.pop();
int u=now.second;
if (boo[u]) continue;boo[u]=;
for (int i=head[u];i!=-;i=next[i])
{
int v=rea[i],fee=val[i];
if (dis[v]>dis[u]+fee)
{
dis[v]=dis[u]+fee;
q.push(make_pair(dis[v],v));
}
}
}
}
int main()
{
memset(head,-,sizeof(head));
scanf("%d%lld%lld",&n,&l,&r);
for (int i=;i<=n;i++)
scanf("%d",&a[i]);
sort(a+,a+n+);
for (int i=;i<a[];i++)
for (int j=;j<=n;j++)
add(i,(a[j]+i)%a[],a[j]);
Dijkstra();
for (int i=;i<a[];i++)
if (dis[i]<=r)
{
ll x=max((ll),(l-dis[i])/a[]),y=(ll)(r-dis[i])/a[];
if (x*a[]+dis[i]<l) x++;
if (y*a[]+dis[i]>r) y--;
ans+=y-x+;
}
printf("%lld\n",ans);
}

bzoj2118(加法原理)(墨墨的等式)的更多相关文章

  1. 【BZOJ2118】墨墨的等式(最短路)

    [BZOJ2118]墨墨的等式(最短路) 题面 BZOJ 洛谷 题解 和跳楼机那题是一样的. 只不过走的方式从\(3\)种变成了\(n\)种而已,其他的根本没有区别了. #include<ios ...

  2. 【BZOJ2118】墨墨的等式 最短路

    [BZOJ2118]墨墨的等式 Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值 ...

  3. BZOJ2118墨墨的等式[数论 最短路建模]

    2118: 墨墨的等式 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1317  Solved: 504[Submit][Status][Discus ...

  4. Bzoj2118 墨墨的等式

    Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1488  Solved: 578 Description 墨墨突然对等式很感兴趣,他正在研究a1x1+ ...

  5. BZOJ2118: 墨墨的等式(同余类BFS)(数学转为图论题)

    2118: 墨墨的等式 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2944  Solved: 1206[Submit][Status][Discu ...

  6. BZOJ2118:墨墨的等式(最短路)

    Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在 ...

  7. p2371&bzoj2118 墨墨的等式

    传送门(bzoj) 题目 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存 ...

  8. BZOJ2118: 墨墨的等式(最短路 数论)

    题意 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在非负整数解. So ...

  9. BZOJ2118: 墨墨的等式(最短路构造/同余最短路)

    Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在 ...

  10. 【BZOJ 2118】 墨墨的等式(Dijkstra)

    BZOJ2118 墨墨的等式 题链:http://www.lydsy.com/JudgeOnline/problem.php?id=2118 Description 墨墨突然对等式很感兴趣,他正在研究 ...

随机推荐

  1. 使用jquery.form.js提交表单上传文件

    方法: 1.formSerilize()  用于序列化表单中的数据,并将其自动整理成适合AJAX异步请求的URL地址格式. 2.clearForm()   清除表单中所有输入值的内容. 3.restF ...

  2. js函数防抖、节流实现

    防抖 Debounce 函数防抖就是,延迟一段时间再执行函数,如果这段时间内又触发了该函数,则延迟重新计算: // 简单实现 function debounce(fn, wait) { let t r ...

  3. 英语学习APP案例分析

    第一部分 调研, 评测 1.上手体验 界面简洁,有常规的词典翻译功能,针对四六级或考研的人有特别的"单词挑战"模块,以及针对口语训练的"我爱说英语"模块,多功能 ...

  4. 集美大学网络1413第十五次作业成绩(团队十) -- 项目复审与事后分析(Beta版本)

    题目 团队作业10--项目复审与事后分析(Beta版本) 团队作业10成绩 --团队作业10-1 Beta事后诸葛亮  团队/分值 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色 ...

  5. 【Alpha】第二次Daily Scrum Meeting

    GIT 一.今日站立式会议照片 二.会议内容 1.统计,收集整理礼物的资料与详情 2.确定网页的实现方式 三.燃尽图

  6. Swing-JList用法-入门

    注:本文所有素材均来源于How to Use Lists,本文为该文章的学习笔记. JList是Swing中的列表控件,形状如下所示: 实际上,JList有3种不同的样式: 分别为HORIZONTAL ...

  7. 201521123070 《JAVA程序设计》第7周学习总结

    1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码: pub ...

  8. 201521123119《Java程序设计》第1周学习总结

    1.本周学习总结    1.Java语言是一种多用途的语言.并发的语言.以类为基础,面向对象的语言. 2.Java比C++更加方便,有辅助输入,编写速度大大加快. 3.Java根据应用领域不同,区分为 ...

  9. 201521123059 《Java程序设计》第十一周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 1.实现线程有两种方法:实现Ruannable接口和继承Thread类: 2.使用线程的start()方法启动线程 ...

  10. 201521123089 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 常用异常 题目5-11.1 截图你的提交结果(出现学号) 1.2 自己以前编 ...