• <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
             

            額,查分約束系統(tǒng)
            真心wa到爆,一直數(shù)組越界,最后發(fā)現(xiàn)邊數(shù)開少了

            用的spfa
            判斷 1 如果存在某頂點(diǎn)入隊(duì)次數(shù)超過sqrt(n),說明存在負(fù)權(quán)回路,
                   2 如果總?cè)腙?duì)次數(shù)超過2*nn的話,存在負(fù)權(quán)回路,
            不過第二種方法 速度比 第一種快多了
            #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

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當(dāng)于是 取余3的意思 因?yàn)?3 的 二進(jìn)制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
            • --王私江
            色综合久久精品中文字幕首页| 久久只有这精品99| 99久久久国产精品免费无卡顿 | 性欧美丰满熟妇XXXX性久久久 | 久久久久久久久无码精品亚洲日韩| 久久久久久久亚洲Av无码| 激情久久久久久久久久| 性色欲网站人妻丰满中文久久不卡| 一级做a爰片久久毛片人呢| 久久久久久国产精品无码下载| 狠狠色丁香久久婷婷综| 久久午夜夜伦鲁鲁片免费无码影视| 国内精品久久人妻互换| 亚洲国产天堂久久久久久| 久久亚洲国产中v天仙www| 中文无码久久精品| 精品国产一区二区三区久久蜜臀| 久久午夜福利无码1000合集| 国产精品久久久久久久午夜片 | 国产成年无码久久久免费| 国内精品久久久久久久久电影网 | 久久亚洲精品成人AV| 亚洲精品国产自在久久| 国产精品免费久久久久久久久| 少妇高潮惨叫久久久久久| 香蕉久久夜色精品国产2020| 久久精品国产亚洲7777| 国产高清美女一级a毛片久久w| 国产美女久久精品香蕉69| 亚洲va久久久噜噜噜久久| 久久无码AV一区二区三区| 色播久久人人爽人人爽人人片aV| 香港aa三级久久三级| 日韩精品久久久久久| 天天爽天天爽天天片a久久网| 久久国产乱子伦免费精品| 久久精品国产99久久无毒不卡 | 国产成人综合久久久久久| 久久久久综合网久久| 亚洲一区二区三区日本久久九| 久久99热狠狠色精品一区|