zoukankan      html  css  js  c++  java
  • Hdu 3666 THE MATRIX PROBLEM(差分约束)

    取对数将乘除转化为加减。

        L<=m[i][j]*a[i]/b[j]<=U

        log(L/m[i][j])<=log(a[i])-log(b[j])<=log(U/m[i][j])

    则 :

        log(a[i])<=log(b[j])+log(U/m[i][j])

        log(b[j])<=log(a[i])+log(m[i][j]/L)

    还是没什么区别,简单的见图,spfa

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 using namespace std;
     7 const int oo=1e8;
     8 const int mn=161000;
     9 const int mm=961000;
    10 int edge,n,m;
    11 double l,u;
    12 int ver[mm],next[mm];
    13 double dis[mn],cost[mm];
    14 int head[mn],vis[mn],q[mn],outque[mn];
    15 void addedge(int u,int v,double c)
    16 {
    17     ver[edge]=v,cost[edge]=c,next[edge]=head[u],head[u]=edge++;
    18 }
    19 bool spfa()
    20 {
    21     int i,u,v,l,r=0;
    22     double tmp;
    23     for(i=1;i<=n+m;i++) dis[i]=oo,vis[i]=1,outque[i]=0,q[r++]=i;
    24     dis[1]=0;
    25     for(l=0;l!=r;(++l>mn)?l=0:l)
    26         for(i=head[u=q[l]],vis[u]=0;i>=0;i=next[i])
    27             if(dis[v=ver[i]]>(tmp=dis[u]+cost[i]))
    28             {
    29                 dis[v]=tmp;
    30                 if(vis[v])  continue;
    31                 if(++outque[v]>(int)sqrt((n+m)*1.0))    return false;
    32                 vis[q[r++]=v]=1;
    33                 if(r>=mn) r=0;
    34             }
    35     return true;
    36 }
    37 int main()
    38 {
    39     int x,i,j;
    40     while(~scanf("%d%d%lf%lf",&n,&m,&l,&u))
    41     {
    42         edge=0;
    43         memset(head,-1,sizeof(head));
    44         for(i=1;i<=n;i++)
    45             for(j=1;j<=m;j++)
    46             {
    47                 scanf("%d",&x);
    48                 addedge(j+n,i,log10(double(u/x)));
    49                 addedge(i,j+n,log10(double(x/l)));
    50             }
    51         if(spfa()) puts("YES");
    52         else puts("NO");
    53     }
    54 }
  • 相关阅读:
    【转】Ubuntu 20.04修改ip地址
    试用 Portable Allegro Serve
    看完了 Source Code
    Common Lisp 参数传递的几种形式
    Irony 一个 .NET 语言实现工具包
    PPT 技巧学习
    LISP 练习:quick sort
    关于 Business Rule Engine
    转换 PDF 格式为适合电纸书阅读的版本
    IIS 7 SMTP configuration
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/7766974.html
Copyright © 2011-2022 走看看