• <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
            • 評論內容較長,點擊標題查看
            • --王私江
            久久综合欧美成人| 五月丁香综合激情六月久久| 99热都是精品久久久久久| 国产真实乱对白精彩久久| 99久久这里只精品国产免费| AV色综合久久天堂AV色综合在| 青青国产成人久久91网| 中文字幕无码久久人妻| 久久久青草青青亚洲国产免观| 久久无码国产| 亚洲国产精品久久久久网站| 久久久这里有精品| 成人精品一区二区久久| 精品久久无码中文字幕| 国产欧美久久久精品影院| 成人亚洲欧美久久久久| 久久精品aⅴ无码中文字字幕重口| 国产精自产拍久久久久久蜜| 久久精品aⅴ无码中文字字幕重口| 亚洲精品NV久久久久久久久久 | 国产精品久久久久乳精品爆| 亚洲国产日韩欧美久久| 精品久久久久久无码免费| 国产精品久久久久久福利漫画 | 色噜噜狠狠先锋影音久久| 久久国产热精品波多野结衣AV| 久久综合久久美利坚合众国| 色综合久久天天综线观看| 国产精品嫩草影院久久| 久久成人影院精品777| 国产成人精品久久一区二区三区| 男女久久久国产一区二区三区| 久久久久久精品久久久久| 久久狠狠爱亚洲综合影院 | 国产精品久久久久久久久鸭| 人妻精品久久久久中文字幕一冢本| 久久久久亚洲AV成人网人人网站 | 亚洲国产另类久久久精品| 777午夜精品久久av蜜臀| 亚洲精品美女久久777777| 人妻无码中文久久久久专区|