Description

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

Input

输入的第一行包含3个正整数,分别表示N、BMin、BMax分别表示数列的长度、B的下界、B的上界。输入的第二行包含N个整数,即数列{an}的值。

Output

输出一个整数,表示有多少b可以使等式存在非负整数解。

Sample Input

2 5 10
3 5

Sample Output

5

解题思路:

详见->洛谷跳楼机

其实就是成了n元

用其他n-1元在第n元模环境下最短路。

代码:

  1. #include<queue>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. typedef long long lnt;
  6. struct pnt{
  7. int hd;
  8. int no;
  9. lnt dis;
  10. bool vis;
  11. bool friend operator < (pnt x,pnt y)
  12. {
  13. return x.dis>y.dis;
  14. }
  15. }p[];
  16. struct ent{
  17. int twd;
  18. int lst;
  19. lnt vls;
  20. }e[];
  21. lnt a[];
  22. int n,m;
  23. int cnt;
  24. lnt Bmin,Bmax;
  25. lnt ans;
  26. std::priority_queue<pnt>Q;
  27. void ade(int f,int t,lnt v)
  28. {
  29. cnt++;
  30. e[cnt].twd=t;
  31. e[cnt].lst=p[f].hd;
  32. e[cnt].vls=v;
  33. p[f].hd=cnt;
  34. return ;
  35. }
  36. void Dij(void)
  37. {
  38. for(int i=;i<a[];i++)
  39. {
  40. p[i].dis=0x3f3f3f3f3f3f3f3fll;
  41. p[i].no=i;
  42. }
  43. p[].dis=;
  44. Q.push(p[]);
  45. while(!Q.empty())
  46. {
  47. int x=Q.top().no;
  48. Q.pop();
  49. if(p[x].vis)
  50. continue;
  51. p[x].vis=true;
  52. for(int i=p[x].hd;i;i=e[i].lst)
  53. {
  54. int to=e[i].twd;
  55. if(p[to].dis>p[x].dis+e[i].vls)
  56. {
  57. p[to].dis=p[x].dis+e[i].vls;
  58. Q.push(p[to]);
  59. }
  60. }
  61. }
  62. return ;
  63. }
  64. int main()
  65. {
  66. scanf("%d%lld%lld",&n,&Bmin,&Bmax);
  67. if(n==)
  68. {
  69. printf("0\n");
  70. return ;
  71. }
  72. for(int i=;i<=n;i++)
  73. {
  74. scanf("%lld",&a[i]);
  75. if(a[i]==)
  76. {
  77. n--;
  78. i--;
  79. }
  80. }
  81. for(int i=;i<=n;i++)
  82. for(int j=;j<a[];j++)
  83. ade(j,(j+a[i])%a[],a[i]);
  84. Dij();
  85. for(int i=;i<a[];i++)
  86. {
  87. if(p[i].dis>Bmax)
  88. continue;
  89. ans+=(Bmax-p[i].dis)/a[]+;
  90. if(p[i].dis<Bmin)
  91. ans-=(Bmin-p[i].dis-)/a[]+;
  92. }
  93. printf("%lld\n",ans);
  94. return ;
  95. }

BZOJ2118: 墨墨的等式(最短路构造/同余最短路)的更多相关文章

  1. 洛谷P3403跳楼机(最短路构造/同余最短路)

    题目-> 解题思路: 最短路构造很神啊. 先用前两个值跑在第三个值模意义下的同余最短路(这步贪心可以证明,如果第三步长为z,那么如果n+z可以达到,n+2z同样可以达到) 最后计算与楼顶差多少个 ...

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

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

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

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

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

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

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

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

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

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

  7. BZOJ2118 墨墨的等式[同余类最短路]

    声明:关于这题的$O(mn)$尚且未深入理解,虽然之前有跟这位神仙聊过做法但并没太懂.. $O(mn\log m)$同余最短路做法: 首先不妨抽出最小的$a_i=m$,那么剩余的$a$如果可以表示出$ ...

  8. 【同余最短路】【例题集合】洛谷P3403 跳楼机/P2371 墨墨的等式

    接触到的新内容,[同余最短路]. 代码很好写,但思路不好理解. 同余最短路,并不是用同余来跑最短路,而是通过同余来构造某些状态,从而达到优化时间空间复杂度的目的.往往这些状态就是最短路中的点,可以类比 ...

  9. Bzoj2118 墨墨的等式

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

随机推荐

  1. Android-Volley网络通信框架(StringRequest &amp; JsonObjectRequest)

    1.回想 上篇对 Volley进行了简介和对它的学习目的与目标,最后,为学习Volley做了一些准备 2.重点 2.1 RequestQueue 请求队列的建立 2.2 学习 StringReques ...

  2. h5 图片回显

    <form method="post" id="imgForm" action ="/hi/holdHead" enctype=&qu ...

  3. 22.dll调用技术

    1.dll文件: #include <Windows.h> _declspec(dllexport) void message_hello() { MessageBoxA(, ); } _ ...

  4. Lambda表达式相当于一个函数

    看来你对Lambda完全不懂.Lambda表达式相当于一个函数. 比如model => model.Name相当于string 一个函数(Model的类型 model) {     return ...

  5. css3 列表图片hover左右滚动效果

  6. vue-cli · Failed to download repo vuejs-templates/webpack-simple: tunneling socket could not be established, cause=connect ECONNREFUSED 127.0.0.1:8086 && vue init webpack-simple xxx

    vue init webpack-simple mywork报错如下: vue-cli · Failed to download repo vuejs-templates/webpack-simple ...

  7. 安装php-ldap模块

    php-ldap模块作用就是实现ldap认证,因此需要安装 1.安装软件包解决依赖 yum install openldapyum install openldap-devel 2.拷贝库文件 cp ...

  8. U-BOOT启动流程分析--start.s(二)

    一.概述 u-boot的启动流程: 从文件层面上看主要流程是在两个文件中:cpu/arm920t/start.s,lib_arm/board.c, 先来分析start.s    在flash中执行的引 ...

  9. 【C/C++】链表的理解与使用

    转载自:http://blog.csdn.NET/xubin341719/article/details/7091583/ 最近不是太忙,整理些东西,工作也许用得到. 1,为什么要用到链表 数组作为存 ...

  10. CODEVS——T1052 地鼠游戏

     http://codevs.cn/problem/1052/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 D ...