• <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 閱讀(210) 評論(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
            • 評論內容較長,點擊標題查看
            • --王私江
            久久久WWW免费人成精品| 久久天堂AV综合合色蜜桃网| 国产亚洲精久久久久久无码| 欧美精品一本久久男人的天堂 | 国产精品久久久久久久久久免费| 久久人妻少妇嫩草AV蜜桃| 亚洲熟妇无码另类久久久| 99精品久久精品| 久久久一本精品99久久精品88| 久久A级毛片免费观看| 日韩欧美亚洲综合久久| 国产精品免费久久久久影院| 2021国内精品久久久久久影院| 久久精品天天中文字幕人妻 | 久久久久九九精品影院| 久久久久亚洲AV无码麻豆| 久久久久亚洲爆乳少妇无| 国产精品久久久天天影视| 欧美日韩精品久久久久| 99久久免费只有精品国产| 久久国产欧美日韩精品| 亚洲第一永久AV网站久久精品男人的天堂AV| 人妻少妇久久中文字幕一区二区| 久久精品国产精品亚洲| 2020久久精品国产免费| 久久综合给合久久狠狠狠97色| 久久93精品国产91久久综合| 蜜桃麻豆www久久国产精品| 国产精品一区二区久久精品| 亚洲国产精品久久久久久| 色综合久久久久久久久五月| 九九久久自然熟的香蕉图片| 久久人做人爽一区二区三区| 久久亚洲中文字幕精品一区四| 九九久久精品无码专区| 国产午夜福利精品久久| 99久久夜色精品国产网站| 成人精品一区二区久久久| 国产免费久久久久久无码| 天天久久狠狠色综合| 精品水蜜桃久久久久久久|