poj3159 Candies

这题实质为裸的差分约束。

先看最短路模型:若d[v] >= d[u] + w, 则连边u->v,之后就变成了d[v] <= d[u] + w , 即d[v] – d[u] <= w。

再看题目给出的关系:b比a多的糖果数目不超过c个,即d[b] – d[a] <= c ,正好与上面模型一样,

所以连边a->b,最后用dij+heap求最短路就行啦。

ps:我用vector一直TLE,后来改用链式前向星才过了orz。。。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #include<queue>
  5. #include<vector>
  6. #include<set>
  7. #define CLR(a,b) memset((a),(b),sizeof((a)))
  8. using namespace std;
  9.  
  10. const int N = ;
  11. const int M = ;
  12. const int inf = 0x3f3f3f3f;
  13.  
  14. int n, m;
  15. bool s[N];
  16. int head[N];
  17. int cnt;
  18. struct edge{
  19. int nex;
  20. int v, w;
  21. }g[M];
  22. struct node{
  23. int v, w;
  24. node(int _v=,int _w=):v(_v),w(_w){}
  25. bool operator < (const node&r)const{
  26. return r.w < w;
  27. }
  28. };
  29. void add_edge(int u,int v,int w){
  30. g[cnt].v = v;
  31. g[cnt].w = w;
  32. g[cnt].nex = head[u];
  33. head[u] = cnt++;
  34. }
  35. void dij(){
  36. int i, u, v, w;
  37. node t;
  38. CLR(s, );
  39. priority_queue<node>q;
  40. q.push(node(,));
  41. while(!q.empty()){
  42. t = q.top(); q.pop();
  43. u = t.v;
  44. if(s[u]) continue;
  45. s[u] = ;
  46. if(u == n) break;
  47. for(i = head[u]; ~i; i = g[i].nex){
  48. v = g[i].v;
  49. if(!s[v]){
  50. w = t.w + g[i].w;
  51. q.push(node(v, w));
  52. }
  53. }
  54. }
  55. printf("%d\n", t.w);
  56. }
  57. int main(){
  58. int i, j, a, b, c;
  59. scanf("%d %d", &n, &m);
  60. cnt = ;
  61. CLR(head, -);
  62. for(i = ; i <= m; ++i){
  63. scanf("%d %d %d", &a, &b, &c);
  64. add_edge(a,b,c);
  65. }
  66. dij();
  67. return ;
  68. }

poj3159 Candies(差分约束,dij+heap)的更多相关文章

  1. POJ 3159 Candies 差分约束dij

    分析:设每个人的糖果数量是a[i] 最终就是求a[n]-a[1]的最大值 然后给出m个关系 u,v,c 表示a[u]+c>=a[v] 就是a[v]-a[u]<=c 所以对于这种情况,按照u ...

  2. POJ-3159.Candies.(差分约束 + Spfa)

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 40407   Accepted: 11367 Descri ...

  3. [poj3159]Candies(差分约束+链式前向星dijkstra模板)

    题意:n个人,m个信息,每行的信息是3个数字,A,B,C,表示B比A多出来的糖果不超过C个,问你,n号人最多比1号人多几个糖果 解题关键:差分约束系统转化为最短路,B-A>=C,建有向边即可,与 ...

  4. poj3159 Candies(差分约束)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Candies Time Limit: 1500MS   Memory Limit ...

  5. POJ3159 Candies —— 差分约束 spfa

    题目链接:http://poj.org/problem?id=3159 Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submiss ...

  6. POJ-3159(差分约束+Dijikstra算法+Vector优化+向前星优化+java快速输入输出)

    Candies POJ-3159 这里是图论的一个应用,也就是差分约束.通过差分约束变换出一个图,再使用Dijikstra算法的链表优化形式而不是vector形式(否则超时). #include< ...

  7. [poj 3159]Candies[差分约束详解][朴素的考虑法]

    题意 编号为 1..N 的人, 每人有一个数; 需要满足 dj - di <= c 求1号的数与N号的数的最大差值.(略坑: 1 一定要比 N 大的...difference...不是" ...

  8. poj 3159 Candies 差分约束

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 22177   Accepted: 5936 Descrip ...

  9. Candies(差分约束)

    http://poj.org/problem?id=3159 题意: flymouse是幼稚园班上的班长,一天老师给小朋友们买了一堆的糖果,由flymouse来分发,在班上,flymouse和snoo ...

随机推荐

  1. Adding Value To Combo List at Runtime in Oracle Forms

    You want to add a value in Combo List item in Oracle Forms, by typing it in combo list box text area ...

  2. ABAP Enhancement:第二部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. HDU 5826 physics(物理)

     physics(物理) Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)   D ...

  4. VS生成事件

    源自:http://www.cnblogs.com/FreeDong/p/3406737.html 如果说磨刀不误砍柴工,同样用好Visual Studio,会大大增加咱.NET程序猿效率.本文说的就 ...

  5. Quick-Cocos2d-x v3.3 异步加载Spine方案 转

    Quick-Cocos2d-x v3.3 异步加载Spine方案 浩月难求也与2015-03-25 15:06:3441 次阅读 背景 项目中使用了Quick-Cocos2d-x 3.3,由于Spin ...

  6. MVC服务器前台提示

    [HttpPost] public ActionResult AddMsg(MsgModel model) { string strSql = "insert into tbl_msg(ti ...

  7. 细心看完这篇文章,刷新对Javascript Prototype的理解

    var person={name:'ninja'}; person.prototype.sayName=function(){ return this.name; } 分析上面这段代码,看看有没有问题 ...

  8. 从网页(WEB)登录SAP

    以下这篇文章写得很详细,照着做就可以了: http://www.doc88.com/p-293361232332.html   设好后, 默认的端口是80$$, 其中$$是安装SAP时的instanc ...

  9. 学习日记day7:代码结构规范

    1:绝对定位不是随便用的. 2:一定要用相对定位控制文档流,在相对定位里面使用绝对定位控制具体的位置. 3:代码结构尽量简化. 不要加不必要的span: 不要加不必要的类: 4:控制字体样式的类尽量写 ...

  10. poj3384Feng Shui(半平面交)

    链接 将边长向内推进r,明显这样把第一个圆的圆心放在新的边长是肯定是最优的,与原本边相切,然后再找新多边上的最远的两点即为两圆心. #include <iostream> #include ...