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

            zoj2770

            Burn the Linked Camp

            Time Limit: 2 Seconds      Memory Limit: 65536 KB

            It is well known that, in the period of The Three Empires, Liu Bei, the emperor of the Shu Empire, was defeated by Lu Xun, a general of the Wu Empire. The defeat was due to Liu Bei's wrong decision that he divided his large troops into a number of camps, each of which had a group of armies, and located them in a line. This was the so-called "Linked Camps".

            Let's go back to that time. Lu Xun had sent many scouts to obtain the information about his enemy. From his scouts, he knew that Liu Bei had divided his troops into n camps, all of which located in a line, labeled by 1..n from left to right. The ith camp had a maximum capacity of Ci soldiers. Furthermore, by observing the activities Liu Bei's troops had been doing those days, Lu Xun could estimate the least total number of soldiers that were lived in from the ith to the jth camp. Finally, Lu Xun must estimate at least how many soldiers did Liu Bei had, so that he could decide how many troops he should send to burn Liu Bei's Linked Camps.

            Input:

            There are multiple test cases! On the first line of each test case, there are two integers n (0<n<=1,000) and m (0<=m<=10,000). On the second line, there are n integers C1??Cn. Then m lines follow, each line has three integers i, j, k (0<i<=j<=n, 0<=k<2^31), meaning that the total number of soldiers from the ith camp to the jth camp is at least k.

            Output:

            For each test case, output one integer in a single line: the least number of all soldiers in Liu Bei's army from Lu Xun's observation. However, Lu Xun's estimations given in the input data may be very unprecise. If his estimations cannot be true, output "Bad Estimations" in a single line instead.

            Sample Input:

            3 2
            1000 2000 1000
            1 2 1100
            2 3 1300
            3 1
            100 200 300
            2 3 600
            

             

            Sample Output:

            1300
            Bad Estimations

            查分約束系統(tǒng),可以當(dāng)作模版

            建立邊的時(shí)候要注意有四組不等式

            分別在代碼中注釋出了

            注意,這里的邊是有向邊,舉例,a-b<c的邊應(yīng)該是從b指向a,權(quán)值為c

            #include<algorithm>
            #include
            <iostream>
            #include
            <cstring>
            #include
            <cstdio>
            #include
            <cstdlib>
            #include
            <string>
            #include
            <cmath>
            using namespace std;
            #define inf 0x7ffffff
            #define maxn 1050
            #define maxm 50000
            int n,m;
            int c[maxn];
            int dist[maxn];
            int d[maxn];
            int ei;
            struct node
            {
                
            int u,v,w;
            }
             edge[maxm];
            void init()
            {
                
            int i;
                memset(d,
            0,sizeof(d));
                ei
            =0;
                
            for(i=0; i<=n; i++) dist[i]=inf;
                dist[n]
            =0;
            }

            bool bellman_ford()
            {
                
            int i,k,t;
                
            for(i=0; i<n; i++)
                
            {
                    
            for(k=0; k<ei; k++)
                    
            {
                        t
            =dist[edge[k].u]+edge[k].w;
                        
            if (dist[edge[k].u]!=inf&&t<dist[edge[k].v])
                        
            {
                            dist[edge[k].v]
            =t;
                        }

                    }

                }

                
            for(k=0; k<ei; k++)
                
            {
                    t
            =dist[edge[k].u]+edge[k].w;
                    
            if (dist[edge[k].u]!=inf && t<dist[edge[k].v])
                    
            {
                        
            return false;
                    }

                }

                
            return true;
            }

            int main()
            {
                
            int u,v,w,i;
                
            while (scanf("%d%d",&n,&m)!=EOF)
                
            {
                    init();
                    
            for(i=1; i<=n; i++)
                    
            {
                        scanf(
            "%d",&c[i]);
                        edge[ei].u
            =i-1;//每個(gè)大營不能超過上限
                        edge[ei].v=i;
                        edge[ei].w
            =c[i];
                        ei
            ++;
                        edge[ei].u
            =i;//每個(gè)大營人數(shù)大于0
                        edge[ei].v=i-1;
                        edge[ei].w
            =0;
                        ei
            ++;
                        d[i]
            =d[i-1]+c[i];
                    }

                    
            for(i=0; i<m; i++)
                    
            {
                        scanf(
            "%d%d%d",&u,&v,&w);
                        edge[ei].u
            =v;//u到v的大營總?cè)藬?shù)不少于w
                        edge[ei].v=u-1;
                        edge[ei].w
            =-w;
                        ei
            ++;
                        edge[ei].u
            =u-1;//u到v的大營總?cè)藬?shù)少于上限
                        edge[ei].v=v;
                        edge[ei].w
            =d[v]-d[u-1];
                        ei
            ++;
                    }

                    
            if (!bellman_ford())
                    
            {
                        printf(
            "Bad Estimations\n");
                    }

                    
            else
                    
            {
                        printf(
            "%d\n",dist[n]-dist[0]);
                    }

                }

                
            return 0;
            }

            posted on 2012-04-03 17:13 jh818012 閱讀(256) 評論(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)題查看
            • --王私江
            久久伊人精品青青草原日本| 国产一区二区久久久| 亚洲国产精品综合久久网络| 久久成人精品视频| 久久久无码精品亚洲日韩蜜臀浪潮| 人妻中文久久久久| 色偷偷88欧美精品久久久| 久久精品国产亚洲Aⅴ蜜臀色欲| 亚洲成色999久久网站| 99精品久久精品| 国产激情久久久久影院小草 | 综合网日日天干夜夜久久| 中文字幕无码av激情不卡久久| 亚洲成av人片不卡无码久久| 武侠古典久久婷婷狼人伊人| 奇米影视7777久久精品人人爽| 思思久久99热只有频精品66| 伊人久久大香线蕉AV色婷婷色| 久久99精品久久久大学生| 人妻精品久久久久中文字幕69| 久久天堂AV综合合色蜜桃网| 日本精品久久久中文字幕| 久久精品国产99久久丝袜| 久久久国产99久久国产一| 亚洲中文久久精品无码ww16| 粉嫩小泬无遮挡久久久久久| 国产精品丝袜久久久久久不卡| 久久这里只精品99re66| 久久精品国产亚洲精品2020| 久久狠狠一本精品综合网| 亚洲国产精品无码久久久蜜芽| 久久婷婷久久一区二区三区| 日韩久久无码免费毛片软件 | 久久精品国产精品青草| 久久精品免费大片国产大片| 亚洲精品无码久久久久| 亚洲国产天堂久久综合网站| 中文字幕人妻色偷偷久久| 精品视频久久久久| 久久久久国产精品人妻| 国产精品伊人久久伊人电影|