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

            The Fourth Dimension Space

            枯葉北風寒,忽然年以殘,念往昔,語默心酸。二十光陰無一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢令

            #

            網絡流題目集錦(轉)

            最大流
            POJ 1273 Drainage Ditches
            POJ 1274 The Perfect Stall (二分圖匹配)
            POJ 1698 Alice's Chance
            POJ 1459 Power Network
            POJ 2112 Optimal Milking (二分)
            POJ 2455 Secret Milking Machine (二分)
            POJ 3189 Steady Cow Assignment (枚舉)
            POJ 1637 Sightseeing tour (混合圖歐拉回路)
            POJ 3498 March of the Penguins (枚舉匯點)
            POJ 1087 A Plug for UNIX
            POJ 1149 Pigs (構圖題)
            ZOJ 2760 How Many Shortest Path (邊不相交最短路的條數)
            POJ 2391 Ombrophobic Bovines (必須拆點,否則有BUG)
            WHU 1124 Football Coach (構圖題)
            SGU 326 Perspective (構圖題,類似于 WHU 1124)
            UVa 563 Crimewave
            UVa 820 Internet Bandwidth
            POJ 3281 Dining (構圖題)
            POJ 3436 ACM Computer Factory
            POJ 2289 Jamie's Contact Groups (二分)
            SGU 438 The Glorious Karlutka River =) (按時間拆點)
            SGU 242 Student's Morning (輸出一組解)
            SGU 185 Two shortest (Dijkstra 預處理,兩次增廣,必須用鄰接陣實現,否則 MLE)
            HOJ 2816 Power Line
            POJ 2699 The Maximum Number of Strong Kings (枚舉+構圖)
            ZOJ 2332 Gems
            JOJ 2453 Candy (構圖題)
            SOJ3312 Stockholm Knights
            SOJ3353 Total Flow
            SOJ2414 Leapin' Lizards ­
            最小割
            SOJ3106 Dual Core CPU
            SOJ3109 Space flight
            SOJ3107 Select
            SOJ3185 Black and white
            SOJ3254 Rain and Fgj
            SOJ3134 windy和水星 -- 水星交通
            HOJ 2634 How to earn more
            ZOJ 2071 Technology Trader (找割邊)
            HNU 10940 Coconuts
            ZOJ 2532 Internship (找關鍵割邊)
            POJ 1815 Friendship (字典序最小的點割集)
            POJ 3204 Ikki's Story I - Road Reconstruction (找關鍵割邊)
            POJ 3308 Paratroopers
            POJ 3084 Panic Room
            POJ 3469 Dual Core CPU
            ZOJ 2587 Unique Attack (最小割的唯一性判定)
            POJ 2125 Destroying The Graph (找割邊)
            ZOJ 2539 Energy Minimization
            TJU 2944 Mussy Paper (最大權閉合子圖)
            POJ 1966 Cable TV Network (無向圖點連通度)
            HDU 1565 方格取數(1) (最大點權獨立集)
            HDU 1569 方格取數(2) (最大點權獨立集)
            POJ 2987 Firing (最大權閉合子圖)
            SPOJ 839 Optimal Marks (將異或操作轉化為對每一位求最小割)
            HOJ 2811 Earthquake Damage (最小點割集)
            2008 Beijing Regional Contest Problem A Destroying the bus stations ( BFS 預處理 )(網絡流題目集錦(轉)http://acmicpc-live-archive.uva.es/nuevoportal/data/problem.php?p=4322)
            ZOJ 2676 Network Wars (參數搜索)
            POJ 3155 Hard Life (參數搜索)
            ZOJ 3241 Being a Hero

            有上下界
            ZOJ 2314 Reactor Cooling (無源匯可行流)
            POJ 2396 Budget (有源匯可行流)
            SGU 176 Flow Construction (有源匯最小流)
            ZOJ 3229 Shoot the Bullet (有源匯最大流)
            HDU 3157 Crazy Circuits (有源匯最小流)

            最小費用流
            HOJ 2715 Matrix3
            HOJ 2739 The Chinese Postman Problem
            POJ 2175 Evacuation Plan (消一次負圈)
            POJ 3422 Kaka's Matrix Travels (與 Matrix3 類似)
            POJ 2516 Minimum Cost (按物品種類多次建圖)
            POJ 2195 Going Home
            BUAA 1032 Destroying a Painting
            POJ 2400 Supervisor, Supervisee (輸出所有最小權匹配)
            POJ 3680 Intervals
            HOJ 2543 Stone IV
            POJ 2135 Farm Tour
            BASHU2445 餐巾問題
            ---------------------------------------------onmylove原創

            最大流題目:

            TC

            Single Round Match 200 Round 1 – Division I, Level Three

            Single Round Match 236 Round 1 – Division I, Level Three

             

            Single Round Match 399 Round 1 – Division I, Level Three

            Hoj1024: http://acm.hust.edu.cn/thx/problem.php?id=1024

             

             

            2003 TCO Semifinal Round 4 – Division I, Level Three

            2004 TCCC Championship Round – Division I, Level Three

            2005 TCO Sponsor Track Round 3 – Division I, Level One

             

             

             

             

             

            混合圖的歐拉回路

            Poj1637: http://acm.pku.edu.cn/JudgeOnline/problem?id=1637

            zju1992http://acm.zju.edu.cn/show_problem.php?pid=1992 
              
              

            求增廣邊:

            Poj3204http://acm.pku.edu.cn/JudgeOnline/problem?id=3204

            類似:Hoj1082: http://acm.hust.edu.cn/thx/problem.php?cid=1017&pid=6

             

             

             

             

            項目選擇問題:

            Poj3469http://acm.pku.edu.cn/JudgeOnline/problem?id=3469

            Zoj2930http://acm.zju.edu.cn/show_problem.php?pid=2930

            求項目選擇項目最多的方案。

             

             

            建圖:

            Poj1149http://acm.pku.edu.cn/JudgeOnline/problem?id=1149

            Poj3436http://acm.pku.edu.cn/JudgeOnline/problem?id=3436

            Poj3281http://acm.pku.edu.cn/JudgeOnline/problem?id=3281

             

             

            連通度:

            點連通度Poj1966: http://acm.pku.edu.cn/JudgeOnline/problem?id=1966

            Uva563, http://icpcres.ecs.baylor.edu/onlinejudge/ 
            點不交的路徑條數問題,需要拆點

             

             

             

            最小割:

            Poj2914http://acm.pku.edu.cn/JudgeOnline/problem?id=2914

            stoer-Wagner

             

             

             

             

            基本題:

            Poj3498http://acm.pku.edu.cn/JudgeOnline/problem?id=3498

            枚舉:n次最大流。

             

            Poj1087http://acm.pku.edu.cn/JudgeOnline/problem?id=1087

            可以用最大流做,也可以用二分圖匹配做。

             

             

             

            Poj1273http://acm.pku.edu.cn/JudgeOnline/problem?id=1273

             

            Poj1274http://acm.pku.edu.cn/JudgeOnline/problem?id=1274

             

            Poj1325: http://acm.pku.edu.cn/JudgeOnline/problem?id=1325

             

            poj1459http://acm.pku.edu.cn/JudgeOnline/problem?id=1459

              

            Poj1797http://acm.pku.edu.cn/JudgeOnline/problem?id=1797

             

            Poj1815http://acm.pku.edu.cn/JudgeOnline/problem?id=1815

             

             

            poj2112http://acm.pku.edu.cn/JudgeOnline/problem?id=2112

             

            poj2239http://acm.pku.edu.cn/JudgeOnline/problem?id=2239

             

            poj2289: http://acm.pku.edu.cn/JudgeOnline/problem?id=2289

             

            Poj2391http://acm.pku.edu.cn/JudgeOnline/problem?id=2391

             

            Poj2987http://acm.pku.edu.cn/JudgeOnline/problem?id=2987

             

            Poj3308http://acm.pku.edu.cn/JudgeOnline/problem?id=3308

            提示:最大權閉包,轉化成最大流

             

            Poj3155: http://acm.pku.edu.cn/JudgeOnline/problem?id=3155

             

            SGU 176 http://acm.sgu.ru/problem.php?contest=0&problem=176 
            容量有上下界的網絡流問題,有難度
              
            Spoj660http://www.spoj.pl/problems/QUEST4/ 
            Spoj377http://www.spoj.pl/problems/TAXI/ 
              
            UVA  
            http://icpcres.ecs.baylor.edu/onlinejudge/ 
            753, 
            820,  
            10122,  
            10330,  
            10511,  
            10735. 

            posted @ 2010-11-06 13:18 abilitytao 閱讀(869) | 評論 (0)編輯 收藏

            SGU 185 Two shortest -一切皆是網絡流

            題意:求1->n的兩條不相交的最短路(兩條路徑可以共頂點但是不能共邊)

            心得:看了AC的博客學的,呵呵,這題充分展示了一切皆是網絡流的核心思想。
            做法:首先找出以1為頂點的最短路徑樹,1到樹中任意一點的連線都是最短路徑,首先把這些邊加到網絡流的邊集中,容量為1。
            然后再枚舉下邊,將不在最短路徑樹上但是在最短路上的邊也加到網絡流的邊集中,容量為1。跑一遍1到n的最大流,如果流量>=2則有解,再從原點深搜路徑即可。

            確切的來說,只要在后來建的圖中隨便找一條路徑均是原點到該點的最短路(注意邊是單向的),又因為限制了流量是1,所以一條邊只能選取一次,這樣跑出來的流量就一定是不相交最短路的條數。

            int mat[maxn][maxn];
            int n,m;

            int dis[maxn];
            int use[maxn];
            void SPFA(int n,int s)
            {
                fill(dis,dis
            +n,INF);
                fill(use,use
            +n,0);
                queue
            <int>Q;
                dis[s]
            =0;
                use[s]
            =1;
                Q.push(s);
                
            while(!Q.empty())
                
            {
                    
            int x=Q.front();Q.pop();
                    use[x]
            =0;
                    
            for(int i=0;i<n;i++)
                    
            {
                        
            if(dis[x]+mat[x][i]<dis[i])
                        
            {

                            dis[i]
            =dis[x]+mat[x][i];
                            
            if(!use[i])
                            
            {
                                use[i]
            =1;
                                Q.push(i);
                            }

                        }

                    }

                }

            }

            int flag=0;
            void dfs(int x)
            {
                
            if(flag==1)return;
                
            if(x==n-1)
                
            {
                    flag
            =1;
                    printf(
            "%d\n",x+1);
                    
            return;
                }

                
            else printf("%d ",x+1);

                
            for(node *p=adj[x];p;p=p->next)
                
            {
                    
            if((p-edge)&1)continue;
                    
            if(p->flow==0{
                        p
            ->flow=-1;
                        dfs(p
            ->v);
                        
            if(flag==1)
                            
            return;
                    }

                }


            }



            int main()
            {
                scanf(
            "%d %d",&n,&m);
                
            int a,b,c;
                
            for(int i=0;i<n;i++)
                
            {
                    
            for(int j=0;j<n;j++)
                    
            {
                        
            if(i==j)mat[i][j]=0;
                        
            else mat[i][j]=INF;
                    }

                }

                
            for(int i=0;i<m;i++)
                
            {
                    scanf(
            "%d%d%d",&a,&b,&c);
                    a
            --;b--;
                    
            if(c<mat[a][b])
                        mat[a][b]
            =mat[b][a]=c;
                }

                SPFA(n,
            0);
                
            for(int i=0;i<n;i++)
                    
            for(int j=0;j<n;j++)
                    
            {
                        
            if(i==j)continue;
                        
            if(dis[i]+mat[i][j]==dis[j])
                            insert(i,j,
            1);
                    }

                    
            int ans=sap(n,0,n-1);
                    
            if(ans<2){
                        printf(
            "No solution\n");
                        
            return 0;
                    }

                    flag
            =0;
                    dfs(
            0);
                    flag
            =0;
                    dfs(
            0);
                    
            return 0;
            }
            很難得的一次寫對了SPFA...

            參考了AC大神的代碼,遞歸刪除邊的時候將流量置為-1,不錯的想法。另外我用p-edge的奇偶性判斷正反邊,但是一直沒弄明白p和edge都是地址而且地址相差并不是1的時候減出來卻是1。。。

            posted @ 2010-11-05 15:38 abilitytao 閱讀(1994) | 評論 (0)編輯 收藏

            HDOJ 3397 線段樹大綜合

                 摘要: 實在不行,改了方法。SET 0和SET 1用延遲標記,翻轉不用任何標記,直接更新到底。800+MS AC. #include<cstdlib>#include<iostream>#include<algorithm>#include<cstdio>using namespace std;int const m...  閱讀全文

            posted @ 2010-11-03 00:55 abilitytao 閱讀(1215) | 評論 (0)編輯 收藏

            HDOJ 2871 Memory Control 經典線段樹懶操作

                 摘要: 這題有點像Hotel的包裝版,非常經典,讓我進一步熟悉了線段樹的區間操作(主要是延遲標記的使用)。唯一的問題出在自己寫的二分函數上,死活都是TLE,后來參考了小HH的二分才過掉,不知道自己哪寫掛了,郁悶。。。。PS:順便問一下,高質量的內存管理難道真的是用線段樹實現的? #include<iostream>#include<algorithm>#include<ve...  閱讀全文

            posted @ 2010-10-30 20:00 abilitytao 閱讀(1677) | 評論 (0)編輯 收藏

            HDOJ 1540 Tunnel Warfare 線段樹

            題意:可以標記區間上某些節點或者取消標記,并查詢與x連續的未被標記的結點數。
            這題和Hotel類似,由于換成了單節點操作,不需要區間操作的延遲標記,維護起來更方便。

            #include<iostream>
            #include
            <algorithm>
            using namespace std;
            int const maxn=50010;
            #define LL(i) (i<<1)
            #define RR(i) ((i<<1)+1)

            struct node
            {

                
            int l,r;
                
            int lval,rval;
                
            int len()
                
            {
                    
            return r-l+1;
                }

            }
            ST[maxn*4];
            int n,m;

            void build(int l,int r,int i)
            {
                ST[i].l
            =l;
                ST[i].r
            =r;
                
            if(l==r)
                
            {
                    ST[i].lval
            =1;
                    ST[i].rval
            =1;
                    
            return;
                }

                
            int mid=(l+r)>>1;
                build(l,mid,LL(i));
                build(mid
            +1,r,RR(i));
                ST[i].lval
            =ST[i].len();
                ST[i].rval
            =ST[i].len();
            }



            void update(int x,int op,int i)
            {

                
            if(ST[i].l==ST[i].r)
                
            {
                    
            if(op==1)
                        ST[i].lval
            =ST[i].rval=0;
                    
            else if(op==0)
                        ST[i].lval
            =ST[i].rval=1;
                    
            return;
                }

                
            int mid=(ST[i].l+ST[i].r)>>1;
                
            if(x<=mid) update(x,op,LL(i));
                
            else update(x,op,RR(i));

                ST[i].lval
            =ST[LL(i)].lval;
                ST[i].rval
            =ST[RR(i)].rval;

                
            if(ST[LL(i)].lval==ST[LL(i)].len())
                    ST[i].lval
            +=ST[RR(i)].lval;
                
            if(ST[RR(i)].rval==ST[RR(i)].len())
                    ST[i].rval
            +=ST[LL(i)].rval;
            }



            int Query(int x,int i)
            {
                
            if(ST[i].l==ST[i].r)
                    
            return ST[i].lval;
                
            int mid=(ST[i].l+ST[i].r)>>1;
                
            if(x<=mid)
                
            {
                    
            if(x<=ST[i].lval)
                        
            return ST[i].lval;
                    
            if(x>=ST[LL(i)].r-ST[LL(i)].rval+1)
                        
            return ST[LL(i)].rval+ST[RR(i)].lval;
                    
            else return Query(x,LL(i));
                }

                
            else
                
            {
                    
            if(x>=ST[i].r-ST[i].rval+1)
                        
            return ST[i].rval;
                    
            if(x<=ST[RR(i)].l+ST[RR(i)].lval-1)
                        
            return ST[RR(i)].lval+ST[LL(i)].rval;
                    
            else return Query(x,RR(i));
                }

            }



            int d[maxn];
            int pd=0;

            int main()
            {
                
            while(scanf("%d%d",&n,&m)!=EOF)
                
            {
                    build(
            1,n,1);
                    
            char op[100];
                    
            int x;
                    pd
            =0;
                    
            for(int i=0;i<m;i++)
                    
            {

                        scanf(
            "%s",op);
                        
            if(op[0]=='D')
                        
            {
                            scanf(
            "%d",&x);
                            update(x,
            1,1);
                            d[pd
            ++]=x;
                        }

                        
            else if(op[0]=='Q')
                        
            {

                            scanf(
            "%d",&x);
                            printf(
            "%d\n",Query(x,1));
                        }

                        
            else
                        
            {
                            update(d[
            --pd],0,1);
                        }

                    }

                }

                
                
            return 0;
            }

            posted @ 2010-10-30 10:34 abilitytao 閱讀(1247) | 評論 (0)編輯 收藏

            HDOJ 2795 Billboard 簡單線段樹

                 很顯而易見的線段樹,只是有一點需要注意,題目中雖然給了h的范圍可以達到10^9,但是由于布告總共只有200000條,最壞情況下只需要200000個線段樹的葉子節點,所以可以直接無視h的范圍,線段樹總結點開200000*4即可。維護的時候,注意利用回溯,自底向上地更新。
                
            #include<iostream>
            using namespace std;
            int const maxn=200010;

            int h,w,n;
            int num[maxn];
            struct node
            {
                
            int size;
                
            int l,r;
            }
            ST[maxn*6];

            void creat(int l,int r,int i)
            {
                ST[i].l
            =l;
                ST[i].r
            =r;
                
            if(l==r)
                
            {
                    ST[i].size
            =w;
                    
            return;
                }

                
            int mid=(l+r)>>1;
                creat(l,mid,i
            *2);
                creat(mid
            +1,r,i*2+1);
                ST[i].size
            =w;
            }


            int ans;
            void Query(int i,int x)
            {
                
            if(ST[i].l==ST[i].r)
                
            {
                    ans
            =ST[i].l;
                    ST[i].size
            -=x;
                    
            return ;
                }

                
            if(ST[i*2].size>=x)
                    Query(i
            *2,x);

                
            else if(ST[i*2+1].size>=x)
                    Query(i
            *2+1,x);
                ST[i].size
            =max(ST[i*2].size,ST[i*2+1].size);
            }


            int main()
            {

                
            while(scanf("%d%d%d",&h,&w,&n)!=EOF)
                
            {
                    creat(
            1,min(h,200000),1);
                    
            for(int i=0;i<n;i++)
                    
            {

                        
            int x;
                        scanf(
            "%d",&x);
                        
            if(ST[1].size<x)
                            printf(
            "-1\n");
                        
            else
                        
            {

                            Query(
            1,x);
                            printf(
            "%d\n",ans);
                        }


                    }



                }

                
            return 0;


            }

            posted @ 2010-10-22 23:29 abilitytao 閱讀(1355) | 評論 (0)編輯 收藏

            POJ 3468 A Simple Problem with Integers Splay樹區間操作

                 摘要:     接連做了維修數列和這個題,看來線段樹能做的區間操作,用splay樹應該也是可以的(都是打一個延遲標記嘛),做這題時發現有一點很重要,就是當我們壓入延遲標記的時候(不管是push_down還是C a,b,c時都需要)一定要保證這個結點代表區間的最新信息。    #include <iostream>using...  閱讀全文

            posted @ 2010-10-22 22:26 abilitytao 閱讀(2021) | 評論 (0)編輯 收藏

            SomeThing For The Test

            就是實現一個簡單的集合類IntSet

            //"IntSet.h"
            //Coded By abilitytao
            //2010年9月27日
            #include<vector>
            #include
            <algorithm>
            #include
            <iostream>
            using namespace std;

            class IntSet
            {
            public:
                vector
            <int> data;
                IntSet()
                
            {data.clear();}
                
            ~IntSet(){}
                
            void insert(int x)
                
            {
                    
            int i;
                    
            for(i=0;i<data.size();i++)
                    
            {
                        
            if(data[i]==x)
                            
            return;
                    }

                    data.push_back(x);
                }

                
            bool IsEqual(IntSet s)
                
            {
                    sort(data.begin(),data.end());
                    
            if(data.size()!=s.data.size())
                        
            return false;
                    
            for(int i=0;i<data.size();i++)
                    
            {

                        
            if(data[i]!=s.data[i])
                            
            return false;
                    }

                    
            return true;
                }

                IntSet union2(IntSet s1,IntSet s2)
                
            {
                    IntSet ans;
                    
            for(int i=0;i<s1.data.size();i++)
                        
            for(int j=0;j<s2.data.size();j++)
                        
            {

                            
            if(s1.data[i]==s2.data[j])
                                ans.insert(s1.data[i]);
                        }

                    
            return ans;
                }

                IntSet incorporate2(IntSet s1,IntSet s2)
                
            {
                    IntSet ans;
                    
            for(int i=0;i<s1.data.size();i++)
                    
            {
                        ans.insert(s1.data[i]);
                    }

                    
            for(int j=0;j<s2.data.size();j++)
                    
            {
                        ans.insert(s2.data[j]);
                    }

                    
            return ans;
                }

                
            void print()
                
            {
                    
            for(int i=0;i<data.size();i++)
                        printf(
            "%d ",data[i]);
                }

            }
            ;


            //"IntSet.cpp"
            //Coded By abilitytao
            //2010年9月27日
            #include"IntSet.h"
            #include
            <iostream>
            using namespace std;


            int main()
            {

                IntSet s1,s2,s3,s4;
                
            int x;
                
            for(cin>>x;x!=0;cin>>x)
                
            {
                    s1.insert(x);
                }

                
            for(cin>>x;x!=0;cin>>x)
                
            {
                    s2.insert(x);
                }

                
            if(s1.IsEqual(s2))
                    cout
            <<"s1 is equal s2"<<endl;
                s3
            =s3.union2(s1,s2);
                s4
            =s4.incorporate2(s1,s2);
                cout
            <<"\ns1:";
                s1.print();
                cout
            <<"\ns2:";
                s2.print();
                cout
            <<"\ns3:";
                s3.print();
                cout
            <<"\ns4:";
                s4.print();
                
            return 0;
            }

            posted @ 2010-09-27 17:09 abilitytao 閱讀(255) | 評論 (0)編輯 收藏

            果斷轉載 哈爾濱賽區總結 by Latsyrc @ SYSU_Vermouth and zhshzhen (MikeZheng)

                  前一天晚上12點就睡了,睡得不是很好,做了幾個夢,醒來了幾次,其中夢到cyl卡F
            題,然后很水的B題最后才過。沒想到夢也成真了,只不過題號有偏差。

                鑒于集訓的時候我們隊錯誤較多,加上熱身賽的觀察,我們并不覺得自己速度上有太 大劣勢,于是決定采取謹慎的策略,每題提交前再看一遍代碼,檢查檢查。

                還是老策略:我從前往后看,kb看中間,cyl看后面。看了A題,發現看不懂,再看了
            一遍,還是不懂,這是kb跟我說C題是3D凸包,求面數,大水題,果斷要過來,但是沒有馬
            上開。繼續讀B題,感覺是一個貪心,跟kb說了一個方法,kb也跟我說了一個方法,突然發
            現我們的方法截然相反,于是我丟給他想,果斷上去寫C題吧。后來證實我們的算法其實是
            一樣的。寫C題的時候看了一下board,發現有人過F,問了問cyl,他說他在規劃了,我說
            隨時推我下來。之后他利落的過掉了F題。然后我繼續寫C,cyl接手B,kb在想E。經過他們
            討論后證明了算法正確性,cyl上機,提交,結果錯了,看程序,發現了他一個很弱智的錯
            誤,修改后就過了。我利用空閑斷斷續續的寫好了C,由于很容易錯,于是打印出來檢查。
            kb上去寫A,其間kb跟cyl說了H的做法,cyl規劃好了構圖方法,讓我過了C后幫他敲一個費
            用流的模板。在59分鐘我很利落的一次過了C題,也是全場第一個。之后很長時間都沒有人
            過,第二個應該是石頭哥。之后kb的A題返回wrong answer,他跟cyl討論了一下,發現對
            題目的理解有問題,迅速修改。我和cyl也在kb改A的時候討論好了D題,一個裸的dancing
             links,商量好構圖后,決定讓我來寫,其實我沒有太大的信心,因為這個東西是在來哈爾濱的火車上學的,還從
            來沒有寫過,同時還討論了已經很多 
            油ü腅題,結果不會。很快kb的A過了。我幫cyl敲完了H的模板,他構圖寫進去也很順利
            的通過了。就這樣前2個鐘我們過了5個題目,手頭上還有2個題目在做,形勢不錯。

                然后讓cyl暴力E打表找規律,畢竟很多隊過了,不會太麻煩,其間我一直在寫D,寫得
            很糾結。事實上當時我們的排名一直在往下掉,我敲D的時候手一直很僵,頭很暈,補了一
            塊巧克力,好了一點。最終經過努力,kb還是在209分鐘過掉了E題。我們終于緩了一口氣
            。在cyl的幫助下,我的D也搞定了,測了幾組簡單的數據沒有錯,我問他要不要提交,他
            說交,怕什么?說實話我是沒有任何信心的,首先這個東西不熟,其次覺得自己寫得很亂
            ,畢竟200多行的代碼,錯誤在所難免,最后就是這題只給了1秒的時限,感覺蠻緊的。結
            果居然返回一個YES。我和cyl都叫了出來,頓時士氣大振。在我調試D題的時候,kb和cyl
            討論了J,沒想到什么好方法,用四邊形不等式只能優化到O(n^2),肯定不行,但是沒有題
            目,還是讓kb硬著頭皮上了。然后cyl弄I題,kb說自己的肯定過不了,于是讓我再想J。我
            列了一條式子,發現具有單調性,然后跟kb討論了一下,被他質疑了,其實我還是很肯定
            的,于是還是給他寫完吧,我繼續想。他提交毫無疑問返回了超時,我也在書中翻出了類
            似于我列出的那條式子的式子,還剩下30分鐘,時間還足夠,于是果斷搶過機器,利用kb
            之前寫的預處理,直接把dp寫了上去,寫完后他們一起幫我查錯,提交,答案錯了,再檢查,發現打反了一個符號,修改,再提交,一個大大的綠色的YES。 我大喊了一聲:“哥立功了!”。真是內牛滿面。然后我就果斷打醬油了,他們兩個在討
            論那個積分題,后來才發現算錯了一個東西,不夠時間改了。最終定格8題,5題一次過的
            ,2個wrong answer,一個TLE。其中那兩個wrong answer完全可以避免。

                后來跟石頭哥他們討論才發現G題他們的方法跟kb想的一樣,kb覺得時間太緊于是沒有
            做,實在太可惜了,最后10多分鐘寫一個SPFA也不是什么難事的。其實想想卡E和D的期間
            上G也是一個不錯的選擇。總結這次比賽,最大的敗筆就是E題,一個毫無疑問的大水題,
            我們被卡了很久很久,浪費了很多時間,似乎我們的3個隊對于這類題目都很水,還得加強
            鍛煉。或許如果比賽前期就丟J給我,我們對于時間的安排就會更為合理。至于我個人的發
            揮,我比較滿意,兩個200多行的代碼都是1AC,J題也頂住壓力絕殺成功,事實上08年在北
            京我也是最后30分鐘絕殺一道單調性dp的題目。

                說說隊員間的配合。我們隊算是磨合得比較好的,其中D題的構圖是我和cyl討論出來
            的,B題的正確性是kb和cyl討論出來的,H題算法是kb提出,模板是我抄的,其他代碼由c
            yl完成。J題kb提供了預處理。

                最后bless 1,2,8隊在下一站天津賽區中再創佳績!
            --




            其實結果就一句話:“混水摸到魚了。”

            農歷八月十七,中秋節后,經過漫漫四十多個小時的火車,我們終于到了這個傳說中冰天
            雪地的哈爾濱。下火車,天氣好,晴朗陽光下伴著瑟瑟涼風,有點凍……

            星期天早上九點多,比賽正式開始。
            開ball,我調機器,然后從前看,石頭哥D開始,訓哥后面看題。
            看完A后,我發現題目規模巨大,馬上淡定了,心想應該不用什么復雜的博弈,但還是放了 下來。
            這時,石頭哥看完C、D,說D用在火車上新學會的dancing link可以搞搞,C是純模板題,
            然后果斷讓位給石頭哥拍C模板。
            我繼續看B,好像原來B更水,幾番思前想后,我還是直接搶斷石頭哥的C,自己敲B,因為
            B真的好像很水……B的做法是兩次排序然后for一下,直接過了。
            刷board,有人過F,chyx也跟風很快過掉了F。
            再刷board,發現A、E、H都可做。換人,石頭哥繼續敲模板。訓哥接過他的菜數學題E,無
            奈說了好多次不會做……囧。不管了,于是我拉他過來小討論了下A,發現真的挺水,就敲
            了,就過了……
            剩下E、H。E是數學題,我想還是訓哥繼續糾結一下吧。H是明顯的費用流,我想好建圖后
            ,上模板,直接又過掉……看來今天我的手風還是挺好的。
            E嘛,訓哥還在說不會做……囧,好奇怪,我推了下居然好像就推出來了,又不管了,搶過
            機器,試了下,發現樣例都錯了,改了下,就過掉了……

            此時5題,全是1AC,華麗了……
            期間,石頭哥的C交了,然后錯了。叫他加上判重點、共線、共面后,還是不過……無奈之
            下,訓哥作為解放出來的生產力,去敲I了,說不想浪費機時,先敲個輸入輸出。
            石頭哥說應該C沒錯的呀,但還是先放下了C,接過訓哥給的G,說好像半平面交能做……我
            對著石頭哥C的程序和石頭模板,發現真的沒敲錯,不過有個新加的判共線的地方很詭異,
            問之,石頭哥說傻B了,一改,救過了C,搞了這么久的C終于過掉了……石頭哥狀態不佳啊
            ,囧。

            6題在手,但比賽時間還有好多好多,此時成績并不足夠。
            到了后期,訓哥一直在糾結I,說之前一直在研究這個數值積分,應該沒問題的啦,但還是
            過不了……換模板,發現模板上的精度更水,就又繼續埋頭糾結了。
            其實我一早就接過訓哥的J,但想起上次百度之星寫過一個類似的當時寫得我很糾結的單調
            性DP,馬上就頹了……石頭哥說可以四邊形不等式優化一下,發現還是TLE,然后我就不得
            不重溫上次的悲劇了,一邊手寫J的單調性DP,時不時一邊看看石頭哥的G。
            話說石頭哥和訓哥討論后,拿出算法導論,發現G可以差分約束,然后猛男般地上去敲G…
            …改了幾個小bug,加了一個優化后,就神奇地過了G,無敵了……
            訓哥的I在最后不知道怎么根據函數的特點改變了積分的方法就過掉了,同樣離奇……

            比賽結束,我的J,寫到最后調出樣例和幾個水數據之后一直交不過。我的錯,小悲劇了…


            總體,中大的三個隊成績都挺滿意。三隊Vermoth第四,我們四隊Vodka第五,都金了,六
            隊波本也銀了,很好!


            下一站,杭州,坐等送死。
            --

            posted @ 2010-09-26 23:36 abilitytao 閱讀(387) | 評論 (0)編輯 收藏

            生產實習硬件實踐

            又是鍛煉匯編能力的訓練。發現自己在每次寫匯編程序之前都不知道基本的代碼模式...具體的實現倒不是很難,只是剛開始的時候由于不知道基本模式浪費了一些時間。
            1.步進電機控制應用程序設計
            .MODEL        SMALL
            .STACK
            .DATA
                    PORT  DW        0E460H
                 WELCOME  DB        
            'welcome to my programme,please make choice',0DH,0AH,'$'
                     OP1  DB        
            '1.clockwise',0DH,0AH,'$'
                     OP2  DB        
            '2.counter-clockwise',0AH,0DH,'$'
                     OP3  DB        
            '3.exit',0AH,0DH,'$'
                      OP  DB        
            'input your choice:','$'
                     TEM  DB        
            '?'
            .CODE
                SHOWMENU  PROC      NEAR
                          PUSH      AX
                          MOV       DX,OFFSET WELCOME
                          MOV       AH,09H
                          INT       21H
                          MOV       DX,OFFSET OP1
                          INT       21H
                          MOV       DX,OFFSET OP2
                          INT       21H
                          MOV       DX,OFFSET OP3
                          INT       21H
                          MOV       DX,OFFSET OP
                          INT       21H
                          POP       AX
                          RET
                SHOWMENU  ENDP

                   DELAY  PROC      NEAR
                          PUSH      DX
                          PUSH      BX
                          MOV       DX,0FFFH
                     T2:
                          MOV       BX,5FFFH
                     T1:
                          DEC       BX
                          JNZ       T1
                          DEC       DX
                          JNZ       T2
                          POP       BX
                          POP       DX
                          RET
                   DELAY  ENDP

            .startup
                          MOV       AX,@DATA
                          MOV       DS,AX
                    ABC:
                          CALL      SHOWMENU

                          MOV       AH,01H      ;input one 
            char
                          INT       21H
                          PUSH      AX
                          MOV       AH,02H
                          MOV       DL,0AH
                          INT       21H
                          MOV       DL,0DH
                          INT       21H
                          POP       AX

                          CMP       AL,
            '1'
                          JZ        OPTION1
                          CMP       AL,
            '2'
                          JZ        OPTION2
                          CMP       AL,
            '3'
                          JZ        EXIT

                OPTION1:
                          MOV       DX,PORT
                          MOV       AL,33H
                          MOV       CX,
            100
                  AGAIN:
                          OUT       DX,AL
                          CALL      DELAY
                          ROL       AL,
            1
                          LOOP      AGAIN
                          JMP       ABC
                OPTION2:
                          MOV       DX,PORT
                          MOV       AL,33H
                          MOV       CX,
            100
                 AGAIN2:
                          OUT       DX,AL
                          CALL      DELAY
                          ROR       AL,
            1
                          LOOP      AGAIN2
                          JMP       ABC
                   EXIT:
            .EXIT         
            0
                          END


            2.溫度測量與控制應用程序設計
            .model small
            .stack
            .data
            ten db 0AH
            port1 dw 0E460H
            port2 dw 0E480H
            heat db 0ffh
            cool db 00h
            wel    db 
            'welcome to my programme',0dh,0ah,'$'
            op1 db 
            '1.heat the device',0ah,0dh,'$'
            op0 db 
            '0.exit to dos',0ah,0dh,'$'
            warn db 
            '----->>>>>>warnning:if the TEMP is over 70,it will be cut off',0ah,0dh,'$'
            chioce db 
            'choice:','$'

            .code

            show proc near
               push dx
               push ax
               mov ah,09h
                mov dx,offset wel
                
            int 21h
                mov dx,offset op1
                
            int 21h
                mov dx,offset op0
                
            int 21h
                mov dx,offset warn
                
            int 21h
                mov dx,offset chioce
                
            int 21h
                pop ax
                pop dx
                ret
            show endp
            delay proc near
               push dx
               push bx
               mov dx,5fffh
            T2:
               mov bx,5fffh
            T1:
               dec bx
               jnz T1
               dec dx
               jnz T2
               pop bx
               pop dx
               ret
            delay endp
            change proc near;
            interface ax
                push ax
                push dx
                div ten
                mov dh,00h
                mov dl,ah
                push dx
                mov ah,
            0
                div ten
                mov dh,00H
                mov dl,ah
                push dx
                pop dx
                add dx,30h
                mov ah,02h
                
            int 21h
                pop dx
                add dx,30h
                
            int 21h
                mov dl,0ah
                
            int 21h
                mov dl,0dh
                
            int 21h

                pop dx
                pop ax
                ret
            change endp


            .startup
            init:
              call show


               mov dx,port1
               mov al,cool
               
            out dx,al

               mov ah,01h
               
            int 21h


               push ax
               mov ah,02h
               mov Dl,0ah
               
            int 21h
               mov Dl,0dh
               
            int 21h
               pop ax


               cmp al,
            '1'
               jnz exit

            option1:
                mov dx,port2
                mov ax,
            0
                
            out dx,al
                call delay
                mov dx,port1
                mov al,heat
                
            out dx,al
            again:
                   mov dx,port2
                mov ax,
            0
                
            out dx,al
                mov dx,port2
                
            in al,dx
                call delay

                mov ah,
            0
                call change
                cmp al,
            70
                ja init
                mov ah,01h
                
            int 16h
                jnz init


                jmp again





            exit:
            .exit 
            0
            end

            posted @ 2010-09-09 00:43 abilitytao 閱讀(256) | 評論 (0)編輯 收藏

            僅列出標題
            共42頁: First 5 6 7 8 9 10 11 12 13 Last 
            久久精品亚洲精品国产欧美| 久久男人AV资源网站| 久久露脸国产精品| 久久精品无码专区免费东京热 | 国内精品久久久久久久coent | 久久男人中文字幕资源站| 久久亚洲日韩精品一区二区三区| 久久国产高清一区二区三区| 久久精品国产亚洲AV电影| 亚洲欧美国产精品专区久久| 久久精品9988| 久久国产色AV免费看| 99久久国产亚洲综合精品| 国产高清美女一级a毛片久久w| 久久ww精品w免费人成| 97视频久久久| 无码任你躁久久久久久久| 国产精品免费久久| 久久亚洲国产精品一区二区| 嫩草伊人久久精品少妇AV| 久久国产免费直播| 久久综合亚洲鲁鲁五月天| 亚洲日韩欧美一区久久久久我| 久久www免费人成精品香蕉| 国产精品99久久久久久www| 久久777国产线看观看精品| 97精品国产91久久久久久| 亚洲精品无码久久千人斩| 久久久久免费精品国产| 欧美伊人久久大香线蕉综合| 精品久久久久成人码免费动漫 | 久久亚洲国产成人精品性色| 伊人久久大香线蕉亚洲五月天| 97香蕉久久夜色精品国产| 久久婷婷五月综合97色直播| 久久久久亚洲av综合波多野结衣 | 色综合久久久久| 久久国产乱子伦精品免费强| 国产精品岛国久久久久| 久久91精品久久91综合| 精品久久久久久亚洲|