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

            Uriel's Corner

            Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
            posts - 0, comments - 50, trackbacks - 0, articles - 594

                5.15 2011復旦ACM省賽, 悲劇, 第5個銅... 繼續(xù)全銅悲劇... 膜拜jjllqq學長, 全銅后最后銀獎結(jié)束ACM生涯... ...

                正式賽, 照舊我從前看, MEC從中間看, 光光先建工程然后從中間開始。發(fā)現(xiàn)A理解不能, 就先看了B, 發(fā)現(xiàn)G快被板刷了, 于是去看, 17min 1A。然后繼續(xù)看完C。光光開始敲J, 說是DP, 敲完后說沒有想清楚, 坐一邊接著想去了。發(fā)現(xiàn)A有幾個隊出了, 硬著頭皮努力理解。還是有點不確定, 就和MEC討論了一下, 終于理解了, 由于一貫對數(shù)學題很恐懼, 就交給MEC推公式了。E有人出了, 就看E去了。光光說J(DP)那題不太靠譜, 先想D(字符串)去。跟我說了下大概思路, 后綴數(shù)組, 想了一下, 比較靠譜。當了下碼工, 幫光光敲了后綴數(shù)組模板, 然后聽MEC說A的思路。光光的D題WA了, 查了幾遍沒有發(fā)現(xiàn)問題, 寫了個暴力程序?qū)ε? 發(fā)現(xiàn)是我模板有個變量敲錯了..- -||..改了后TLE了...于是我先JAVA敲A, 敲完想著會不會TLE, 于是想打表, 糾結(jié)了一會寫了打表要用的一段代碼后發(fā)現(xiàn)500個答案秒出, 于是擦掉了打表部分, 直接交了, 171min 1A。光光繼續(xù)改D, 終于199min 5A。然后決定去敲B, 跟MEC討論了下之后決定先讀入, 建BST樹, 然后按從小到大排序后可得到每個結(jié)點距離最左邊的位置(即為該結(jié)點排序后在結(jié)點中的位置)。然后BFS這棵樹, 一層一層輸出, 大概4h20min的時候出了sample, 結(jié)果WA。各種測數(shù)據(jù)沒有發(fā)現(xiàn)問題, 最后10min的時候跟光光說了B, 光光出的case沒有過。但是單case的話可以過, 于是懷疑是初始化問題。各種初始化之后依然沒有過那個sample, 一直糾結(jié)到比賽結(jié)束... ...
                組隊賽依然很不給力, 我的問題是雖然敲模板速度還過得去, 但是比較密的代碼很有可能敲錯, 數(shù)學題, DP都過分依賴隊友, JAVA還不是特別熟練...etc
                不甘心, 只好用光光的U盤拷了代碼回來繼續(xù)看。發(fā)現(xiàn)BFS那里l==r的時候會有下標越界的問題, 只要加一句話判一下就行, 晚上終于在UVA上A掉了。

            丑陋的代碼見下

            /*
             2011 ACM-ICPC Shanghai Invitational B Boring Homework

             -------Classify: BST & 模擬
             ----Description: 輸出一棵BST樹(按輸入建樹), 結(jié)點數(shù)<80
             ---Sample Input:

             3----------------//3 cases
             3 3 1 2----------//n nodes, value of each node
             6 4 5 6 1 3 2
             5 3 4 5 2 1

             --Sample Output:

             Case #1:
             +-o
             |
             o+
             |
             o
             Case #2:
             +--o+
             |   |
             o-+ o+
             |  |
             +o  o
             |
             o
             Case #3:
             +o+
             | |
             +o o+
             |   |
             o   o

             -----Time Limit: 1000Ms
             ---------Source: 2011 ACM-ICPC Shanghai Invitational B
             -------Solution: 建一棵BST樹, 再BFS一層一層輸出該樹
             ---------Status: AC C++ 
             -----------Date: 2011.05.15
             ------Reference: NULL
             -----------Code: 
             
            */


            #include
            <stdio.h>
            #include
            <stdlib.h>
            #include
            <string.h>
            #include
            <algorithm>
            using namespace std;
            #define N 1000

            struct node {
                
            int f, l, r, idx, pos;
            }
             t[N];

            struct M {
                
            int id, a, pos;
            }
             p[N];

            int n, nt, q[N * 2][2];
            bool flg[N];

            bool cmp(M a, M b) {
                
            return a.a < b.a;
            }


            void insert(int idx, int rt) {
                
            if (idx < t[rt].idx) {
                    
            if (~t[rt].l)
                        insert(idx, t[rt].l);
                    
            else {
                        t[rt].l 
            = nt;
                        t[nt].f 
            = rt;
                        t[nt].idx 
            = idx;
                        t[nt].l 
            = t[nt].r = -1;
                        
            ++nt;
                        
            return;
                    }

                }
             else {
                    
            if (~t[rt].r)
                        insert(idx, t[rt].r);
                    
            else {
                        t[rt].r 
            = nt;
                        t[nt].f 
            = rt;
                        t[nt].idx 
            = idx;
                        t[nt].l 
            = t[nt].r = -1;
                        
            ++nt;
                        
            return;
                    }

                }

            }


            void BFS() {
                
            int i, l = 0, r = 1, cen;
                
            char mp[2000], sk[2000];
                q[
            0][0= 0;
                q[
            0][1= 0;
                i 
            = 0;
                memset(mp, 
            0x00sizeof(mp));
                memset(sk, 
            0x00sizeof(sk));
                
            if (~t[0].l) {
                    q[r][
            1= 1;
                    q[r
            ++][0= t[0].l;
                    
            for (; i < t[t[0].l].pos; ++i)
                        mp[i] 
            = ' ';
                    mp[i
            ++= '+';
                    
            for (; i < t[0].pos; ++i)
                        mp[i] 
            = '-';
                }

                mp[i
            ++= 'o';
                
            if (~t[0].r) {
                    q[r][
            1= 1;
                    q[r
            ++][0= t[0].r;
                    
            for (; i < t[t[0].r].pos; ++i)
                        mp[i] 
            = '-';
                    mp[i
            ++= '+';
                }

                
            ++l;
                
            //printf("l=%d r=%d\n",l,r);
                puts(mp);
                cen 
            = 1;
                
            while (l < r) {
                    memset(mp, 
            0x00sizeof(mp));
                    memset(sk, 
            0x00sizeof(sk));
                    i 
            = 0;
                    
            while (q[l][1== cen) {
                        
            //printf("l=%d r=%d\n", l, r);
                        if (l == r)  //沒有這句導致比賽時WA到死... ...
                            
            break;
                        
            if (t[q[l][0]].l >= 0{
                            
            //printf("q=%d qq=%d\n",q[l][0],t[q[l][0]].l);
                            q[r][1= cen + 1;
                            
            //printf("q=%d qq=%d\n",q[l][0],t[q[l][0]].l);
                            q[r++][0= t[q[l][0]].l;
                            
            //printf("l=%d r=%d\n",l,r);
                            
            //printf("q=%d qq=%d\n",q[l][0],t[q[l][0]].l);
                            for (; i < t[t[q[l][0]].l].pos; ++i)
                                mp[i] 
            = ' ';
                            
            //printf("q=%d qq=%d\n",q[l][0],t[q[l][0]].l);
                            mp[i++= '+';
                            
            //printf("q=%d qq=%d\n",q[l][0], t[q[l][0]].l);
                            for (; i < t[q[l][0]].pos; ++i)
                                mp[i] 
            = '-';
                        }

                        i 
            = t[q[l][0]].pos;
                        sk[i] 
            = '|';
                        mp[i
            ++= 'o';
                        
            if (~t[q[l][0]].r) {
                            
            //if(q[l][0]==6) puts("*****");
                            q[r][1= cen + 1;
                            q[r
            ++][0= t[q[l][0]].r;
                            
            for (; i < t[t[q[l][0]].r].pos; ++i)
                                mp[i] 
            = '-';
                            mp[i
            ++= '+';
                        }

                        
            ++l;
                    }

                    
            ++cen;
                    
            for (i = n;; --i) {
                        
            if (mp[i] > 0)
                            
            break;
                    }

                    
            for (; i >= 0--i) {
                        
            if (!mp[i])
                            mp[i] 
            = ' ';
                    }

                    
            for (i = n;; --i) {
                        
            if (sk[i] > 0)
                            
            break;
                    }

                    
            for (; i >= 0--i) {
                        
            if (!sk[i])
                            sk[i] 
            = ' ';
                    }

                    puts(sk);
                    puts(mp);
                }

            }


            int main() {
                
            //freopen("d:\\in.txt","r",stdin);
                int cse, i, g = 1;
                scanf(
            "%d"&cse);
                
            while (cse--{
                    scanf(
            "%d"&n);
                    nt 
            = 0;
                    
            for (i = 0; i < n; ++i) {
                        p[i].a 
            = 0;
                        p[i].id 
            = 0;
                        p[i].pos 
            = 0;
                        t[i].f 
            = t[i].l = t[i].r = -1;
                        t[i].pos 
            = t[i].idx = 0;
                    }

                    
            for (i = 0; i < n; ++i) {
                        scanf(
            "%d"&p[i].a);
                        
            if (!i) {
                            t[
            0].f = -1;
                            t[
            0].idx = p[0].a;
                            t[
            0].l = t[0].r = -1;
                            nt
            ++;
                        }
             else {
                            insert(p[i].a, 
            0);
                        }

                        p[i].id 
            = i;
                    }

                    
            //        for(i=0;i<n;++i) {
                    
            //            printf("idx=%d l=%d r=%d f=%d\n",t[i].idx,t[i].l,t[i].r,t[i].f);
                    
            //        }
                    sort(p, p + n, cmp);
                    
            for (i = 0; i < n; ++i) {
                        p[p[i].id].pos 
            = i;
                        t[p[i].id].pos 
            = i;
                    }

                    printf(
            "Case #%d:\n", g++);
                    BFS();
                }

                
            return 0;
            }

            真希望作為僵尸級選手還有機會參加今年的Regional, 告別下全銅的悲劇生涯... ... 不知道考研 or 保研能不能給力... ...

            Feedback

            # re: 2011.05.15 ACM Shanghai Invitational 小結(jié) & B Boring Homework ---BST+模擬  回復  更多評論   

            2011-05-16 12:19 by ZYY
            碩強加油,期待你們在Regional上奪金~這次就當是攢RP吧~~~
            久久久国产精品网站| 久久精品无码一区二区日韩AV| 青草国产精品久久久久久| 精品久久久久中文字幕日本| 国产精品欧美亚洲韩国日本久久 | 亚洲人成无码www久久久| 无码任你躁久久久久久老妇| 狠狠色丁香久久婷婷综合_中| AV无码久久久久不卡蜜桃| 久久精品成人国产午夜| 狠狠色丁香久久婷婷综合蜜芽五月| 成人免费网站久久久| 久久露脸国产精品| 国产69精品久久久久777| 亚洲国产成人久久精品99| 久久精品视频网| 中文字幕日本人妻久久久免费| 久久精品成人免费观看97| 久久亚洲精品无码AV红樱桃| 综合久久精品色| 久久人人爽人人精品视频| 青青青国产成人久久111网站| 人妻少妇久久中文字幕| 一本色道久久88综合日韩精品| 亚洲精品国产成人99久久| 久久国产亚洲高清观看| 99精品久久久久久久婷婷| 国产精品久久新婚兰兰| 久久青青草原亚洲av无码| 久久天堂电影网| 久久91综合国产91久久精品| 久久国产亚洲精品无码| 久久精品国产亚洲AV麻豆网站| 日产精品久久久一区二区| 伊人久久精品无码av一区| 老男人久久青草av高清| av色综合久久天堂av色综合在| 伊人久久大香线蕉亚洲| 无码人妻久久一区二区三区免费丨 | 日韩人妻无码精品久久久不卡| 伊人久久大香线蕉av不卡|