zoukankan      html  css  js  c++  java
  • ZOJ 1508 poj 1201 Intervals 差分约束系统

    比较巧妙的是令s[i]为集合Z中小于等于i的元素个数。
    则得到不等式组s[ai-1] - s[bi] <= -ci;
    还有隐含条件s[i] - s[i-1] <=1 && s[i]-s[i-1] >= 0

    用Bellman写感觉还不错,清晰明了。抄书上的思路的。

    贴代码:

    View Code
     1 #include <cstdio>
     2 #include <cstring>
     3 #define MAXN 50005
     4 int n,min,max;
     5 struct Arc
     6 {
     7     int u,v,w;
     8 } edge[MAXN];
     9 int dist[MAXN];
    10 int Bellman()
    11 {
    12     bool f = true;
    13     int i,t;
    14     memset(dist,0,sizeof(dist));
    15     while(f)
    16     {
    17         f = false;
    18         for(i=0; i<n; i++)
    19         {
    20             t = dist[edge[i].u]+edge[i].w;
    21             if(dist[edge[i].v] > t)
    22             {
    23                 dist[edge[i].v] = t;
    24                 f = true;
    25             }
    26         }
    27         for(i=min; i <= max; i++)
    28         {
    29             t = dist[i-1] + 1;
    30             if(dist[i] > t)
    31             {
    32                 dist[i] = t;
    33                 f = true;
    34             }
    35         }
    36         for(i = max; i>= min; i--)
    37         {
    38             t = dist[i];
    39             if(dist[i-1] > dist[i])
    40             {
    41                 dist[i-1] = t;
    42                 f= true;
    43             }
    44         }
    45     }
    46     return  -dist[min-1];
    47 }
    48 int main()
    49 {
    50 //    freopen("in.cpp","r",stdin);
    51     while(~scanf("%d",&n))
    52     {
    53         max = -1;
    54         min = 100000;
    55         for(int i=0; i<n; i++)
    56         {
    57             int u,v,w;
    58             scanf("%d%d%d",&u,&v,&w);
    59             if(v > max) max = v;
    60             if(u < min) min = u;
    61             edge[i].u = v;
    62             edge[i].v = u-1;
    63             edge[i].w = -w;
    64         }
    65         printf("%d\n",Bellman());
    66     }
    67     return 0;
    68 }
  • 相关阅读:
    js设计模式-迭代器模式
    js设计模式-代理模式
    js设计模式-策略模式
    js设计模式-单例模式
    js设计模式中的高阶函数的一些应用
    深入react技术栈记录(二)
    深入react技术栈记录(一)
    响应式开发(1)
    Angular Js 与bootstrap, angular 与 vue.js
    for in 中的index
  • 原文地址:https://www.cnblogs.com/allh123/p/2999746.html
Copyright © 2011-2022 走看看