• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            hdu3666

            THE MATRIX PROBLEM

            Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
            Total Submission(s): 3993    Accepted Submission(s): 1022


            Problem Description
            You have been given a matrix CN*M, each element E of CN*M is positive and no more than 1000, The problem is that if there exist N numbers a1, a2, … an and M numbers b1, b2, …, bm, which satisfies that each elements in row-i multiplied with ai and each elements in column-j divided by bj, after this operation every element in this matrix is between L and U, L indicates the lowerbound and U indicates the upperbound of these elements.
             

            Input
            There are several test cases. You should process to the end of file.
            Each case includes two parts, in part 1, there are four integers in one line, N,M,L,U, indicating the matrix has N rows and M columns, L is the lowerbound and U is the upperbound (1<=N、M<=400,1<=L<=U<=10000). In part 2, there are N lines, each line includes M integers, and they are the elements of the matrix.
             

            Output
            If there is a solution print "YES", else print "NO".
             

            Sample Input
            3 3 1 6 2 3 4 8 2 6 5 2 9
             

            Sample Output
            YES
             

            Source
            2010 Asia Regional Harbin
             

            額,查分約束系統
            真心wa到爆,一直數組越界,最后發現邊數開少了

            用的spfa
            判斷 1 如果存在某頂點入隊次數超過sqrt(n),說明存在負權回路,
                   2 如果總入隊次數超過2*nn的話,存在負權回路,
            不過第二種方法 速度比 第一種快多了
            #include<math.h>
            #include
            <stdio.h>
            #include
            <string.h>
            #define maxm 330000
            #define maxn 1000
            int n,m;
            double l,u,ll,uu;
            int q[1200000];
            int head,tail;
            struct node
            {
                
            int v,next;
                
            double w;
            } edge[maxm];
            int p[maxn];
            int e;
            int nn;
            int sec[maxn];
            void add(int u,int v,double w)
            {
                edge[e].v
            =v;
                edge[e].next
            =p[u];
                edge[e].w
            =w;
                p[u]
            =e++;
            }
            bool spfa()
            {
                
            int i,j,now;
                
            int nnn;
                
            bool flag[maxn];
                
            double dist[maxn];
                nnn
            =(int)(sqrt((double)(nn)));
                memset(dist,
            0,sizeof(dist));
                memset(sec,
            0,sizeof(sec));
                memset(flag,
            0,sizeof(flag));
                head
            =0;
                tail
            =0;
                
            for(i=1; i<=n; i++)
                {
                    tail
            =tail%1200000+1;
                    q[tail]
            =i;
                    flag[i]
            =true;
                    sec[i]
            =1;
                }
                
            while (head!=tail)
                {
                    head
            =head%1200000+1;
                    now
            =q[head];
                    
            if (sec[now]>nnn)
                    {
                        
            return false;
                    }
                    
            for(i=p[now]; i!=-1; i=edge[i].next)
                    {
                        
            if (dist[edge[i].v]>dist[now]+edge[i].w)
                        {
                            dist[edge[i].v]
            =dist[now]+edge[i].w;
                            
            if (!flag[edge[i].v])
                            {
                                sec[edge[i].v]
            ++;
                                flag[edge[i].v]
            =true;
                                tail
            =tail%1200000+1;
                                q[tail]
            =edge[i].v;
                            }
                        }
                    }
                    flag[now]
            =false;
                }
                
            return true;
            }
            int main()
            {
                
            int i,j;
                
            double x;
                
            while (scanf("%d %d %lf %lf",&n,&m,&l,&u)!=EOF)
                {
                    e
            =0;
                    ll
            =log(l);
                    uu
            =log(u);
                    memset(p,
            -1,sizeof(p));
                    
            for(i=1; i<=n; i++)
                    {
                        
            for(j=1; j<=m; j++)
                        {
                            scanf(
            "%lf",&x);
                            x
            =log(x);
                            add(j
            +n,i,uu-x);
                            add(i,j
            +n,x-ll);
                        }
                    }
                    nn
            =n+m;
                    
            if (spfa())
                    {
                        printf(
            "YES\n");
                    }
                    
            else printf("NO\n");
                }
                
            return 0;
            }

            posted on 2012-04-04 19:10 jh818012 閱讀(211) 評論(0)  編輯 收藏 引用

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內容較長,點擊標題查看
            • --王私江
            91精品国产91久久久久久| 一级女性全黄久久生活片免费 | 亚洲欧美精品伊人久久| 日韩人妻无码精品久久久不卡 | 精产国品久久一二三产区区别| 久久婷婷五月综合国产尤物app| 伊人久久大香线焦AV综合影院 | 久久综合给合综合久久| 思思久久99热只有频精品66| 久久狠狠高潮亚洲精品| 日韩久久无码免费毛片软件| 国产精品久久久久影院色| 国内精品久久久久久久coent| 久久婷婷五月综合97色一本一本| 狠狠色综合久久久久尤物| 99久久综合狠狠综合久久止| 伊人情人综合成人久久网小说| 国产午夜福利精品久久2021| 亚洲国产成人久久精品99 | 久久久精品人妻一区二区三区蜜桃| 老司机国内精品久久久久| 亚洲午夜久久久影院| 久久久久亚洲av成人无码电影| 99久久精品费精品国产一区二区| 东方aⅴ免费观看久久av| 超级97碰碰碰碰久久久久最新| 久久香蕉综合色一综合色88| 精品久久久久久久无码| 久久久久久精品无码人妻| 亚洲а∨天堂久久精品| 久久久WWW成人免费精品| 97久久精品人人澡人人爽| 国产精品久久成人影院| 久久综合九色综合精品| www.久久精品| 色综合久久88色综合天天| 九九精品99久久久香蕉| 婷婷综合久久狠狠色99h| 久久99国产精品99久久| 91精品日韩人妻无码久久不卡| 久久精品人人做人人爽电影|