[NKU]sweet @ Google && TopCoder && CodeForces

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            33 Posts :: 1 Stories :: 15 Comments :: 0 Trackbacks
          上午10:00,絕好的SRM時間……

          250:給出一個字符串,長度為N(N<=50),由字母'D'和‘I’構成,‘D’表示 a[i]>a[i+1]; 'I' 表示 a[i]<a[i+1]; 根據這個字符串,求一個長度為N+1的排列,如果多解存在,求字典序最小的……
          乍一看有點懵……然后自然想到想辦法縮減問題規模……剛開始想給1定位,然后縮減成2~N的子問題,不太好想……
          于是反過來給N定位,由于要求字典序最小,我們盡量把N往右邊放;因為N是最大的,所以肯定是“I”上去的……于是找到最右邊的I,讓他=N……然后如果后面有D,則順序的N-1,N-2……然后問題就縮小了……

          class PermutationSignature {
              
          public int[] reconstruct (String str){
                  Str 
          = "I"+str;
                  
          int n = str.length();
                  
          int[] ans = new int[n];
                  
          int right = n;
                  
          int now = n;
                  
          for (int i = n-1;i >= 0;i--){
                      
          if (str.charAt(i)=='I') {
                          
          for (int j = i;j<right;j++) {
                              ans[j] 
          = now --;
                          }
                          right 
          = i;
                      }
                  }
                  
          return ans;
              }
          }

          之后的550,一個小編譯器式的問題……我表示這種題我最苦手了……戰略放棄……
          之后的1000,大概是給你A,B,N,K,Upper_bound 和Lower_bound(long 級別),問 A*K %N , (A+1)*K %N ....(B)*K%N這些數里面,有多少個<=Upper_bound 且 >=Lower_bound的,寫了寫……最后交了個樣例都不過的程序,瞬間被cha……
          看了看神人的程序,思路大方向沒問題,但是計數上面我的方法太拙劣了……

          然后,不幸的是數據似乎出了點問題,一直都在rejudge……
          最后rating 1493->1565,歷史最高……又黃回去了~~

          posted on 2011-02-11 13:55 sweetsc 閱讀(213) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 永胜县| 伊川县| 衢州市| 鄂温| 措美县| 龙南县| 苗栗市| 松潘县| 交城县| 大余县| 镇远县| 长顺县| 合阳县| 故城县| 山东省| 民权县| 桃江县| 南丹县| 黄冈市| 金阳县| 山东省| 开鲁县| 玉门市| 乃东县| 临沂市| 辽宁省| 杭锦后旗| 托克逊县| 平乐县| 葫芦岛市| 林周县| 五常市| 兴宁市| 巩义市| 阿坝| 乐平市| 洪江市| 德保县| 米脂县| 中卫市| 滦南县|