• <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>
            xiaoguozi's Blog
            Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····

            下面的代碼(比較垃圾)在vs2008下有運行錯誤...我找了很久,終于找到錯誤...不過不知道什么地方有問題...

              1 #include <iostream>
              2 #include <queue>
              3 
              4 using namespace std;
              5 struct Node
              6 {
              7     int rate;
              8     int index;
              9     Node(int r=0,int i=0):rate(r),index(i){};
             10     bool operator<(const Node& c)const{
             11         if(rate!=c.rate)return rate<c.rate;
             12         return index>c.index;
             13     };
             14 };
             15 priority_queue<Node> que1,que2;
             16 int main()
             17 {
             18     int n,t;
             19     while(cin>>n>>t){
             20         while(!que1.empty())que1.pop();
             21         while(!que2.empty())que2.pop();
             22         int r;
             23         for(int i=1;i<=n;i++){
             24             cin>>r;
             25             Node tmp(r,i);
             26             que1.push(tmp);
             27         }
             28         if(n==1){
             29             for(int i=0;i<t;i++)
             30                 cout<<r<<endl;
             31             continue;
             32         }
             33         int num=0;
             34         while(1){
             35             cout<<que1.top().index<<endl;        
             36             num++;
             37             if(num==t)break;
             38             int mo=que1.top().rate%(n-1);
             39             int ev=(que1.top().rate-mo)/(n-1);
             40             que1.top().rate=0;
             41             Node tj=que1.top();
             42             //tj.rate=0;
             43             if(que1.top().index<=mo){
             44                 que1.pop();
             45                 while(!que1.empty()){
             46                     Node tp=que1.top();
             47                     if(tp.index<=mo+1){
             48                         tp.rate+=1+ev;
             49                     }
             50                     else tp.rate+=ev;
             51                     que1.pop();
             52                     que2.push(tp);
             53                 }
             54                 que2.push(tj);
             55             }
             56             else {
             57                 que1.pop();
             58                 while(!que1.empty()){
             59                     Node tm=que1.top();
             60                     if(tm.index<=mo){
             61                         tm.rate+=1+ev;
             62                     }
             63                     else tm.rate+=ev;
             64                     que1.pop();
             65                     que2.push(tm);
             66                 }
             67                 que2.push(tj);
             68             }
             69 
             70             cout<<que2.top().index<<endl;
             71             num++;
             72             if(num==t)break;
             73 
             74             mo=que2.top().rate%(n-1);
             75             ev=(que2.top().rate-mo)/(n-1);
             76             que2.top().rate=0;
             77             tj=que2.top();
             78             //tj.rate=0;
             79             if(que2.top().index<=mo){
             80                 que2.pop();
             81                 while(!que2.empty()){
             82                     Node tp=que2.top();
             83                     if(tp.index<=mo+1){
             84                         tp.rate+=1+ev;
             85                     }
             86                     else tp.rate+=ev;
             87                     que2.pop();
             88                     que1.push(tp);
             89                 }
             90                 que1.push(tj);
             91             }
             92             else {
             93                 que2.pop();
             94                 while(!que2.empty()){
             95                     Node tm=que2.top();
             96                     if(tm.index<=mo){
             97                         tm.rate+=1+ev;
             98                     }
             99                     else tm.rate+=ev;
            100                     que2.pop();
            101                     que1.push(tm);
            102                 }
            103                 que1.push(tj);
            104             }
            105         }
            106     }
            107     return 0;
            108 }
            修改后無錯誤的代碼:
              1 #include <iostream>
              2 #include <queue>
              3 
              4 using namespace std;
              5 struct Node
              6 {
              7     int rate;
              8     int index;
              9     Node(int r=0,int i=0):rate(r),index(i){};
             10     bool operator<(const Node& c)const{
             11         if(rate!=c.rate)return rate<c.rate;
             12         return index>c.index;
             13     };
             14 };
             15 priority_queue<Node> que1,que2;
             16 int main()
             17 {
             18     int n,t;
             19     while(cin>>n>>t){
             20         while(!que1.empty())que1.pop();
             21         while(!que2.empty())que2.pop();
             22         int r;
             23         for(int i=1;i<=n;i++){
             24             cin>>r;
             25             Node tmp(r,i);
             26             que1.push(tmp);
             27         }
             28         if(n==1){
             29             for(int i=0;i<t;i++)
             30                 cout<<r<<endl;
             31             continue;
             32         }
             33         int num=0;
             34         while(1){
             35             cout<<que1.top().index<<endl;        
             36             num++;
             37             if(num==t)break;
             38             int mo=que1.top().rate%(n-1);
             39             int ev=(que1.top().rate-mo)/(n-1);
             40             //que1.top().rate=0;
             41             Node tj=que1.top();
             42             tj.rate=0;
             43             if(que1.top().index<=mo){
             44                 que1.pop();
             45                 while(!que1.empty()){
             46                     Node tp=que1.top();
             47                     if(tp.index<=mo+1){
             48                         tp.rate+=1+ev;
             49                     }
             50                     else tp.rate+=ev;
             51                     que1.pop();
             52                     que2.push(tp);
             53                 }
             54                 que2.push(tj);
             55             }
             56             else {
             57                 que1.pop();
             58                 while(!que1.empty()){
             59                     Node tm=que1.top();
             60                     if(tm.index<=mo){
             61                         tm.rate+=1+ev;
             62                     }
             63                     else tm.rate+=ev;
             64                     que1.pop();
             65                     que2.push(tm);
             66                 }
             67                 que2.push(tj);
             68             }
             69 
             70             cout<<que2.top().index<<endl;
             71             num++;
             72             if(num==t)break;
             73 
             74             mo=que2.top().rate%(n-1);
             75             ev=(que2.top().rate-mo)/(n-1);
             76             //que2.top().rate=0;
             77             tj=que2.top();
             78             tj.rate=0;
             79             if(que2.top().index<=mo){
             80                 que2.pop();
             81                 while(!que2.empty()){
             82                     Node tp=que2.top();
             83                     if(tp.index<=mo+1){
             84                         tp.rate+=1+ev;
             85                     }
             86                     else tp.rate+=ev;
             87                     que2.pop();
             88                     que1.push(tp);
             89                 }
             90                 que1.push(tj);
             91             }
             92             else {
             93                 que2.pop();
             94                 while(!que2.empty()){
             95                     Node tm=que2.top();
             96                     if(tm.index<=mo){
             97                         tm.rate+=1+ev;
             98                     }
             99                     else tm.rate+=ev;
            100                     que2.pop();
            101                     que1.push(tm);
            102                 }
            103                 que1.push(tj);
            104             }
            105         }
            106     }
            107     return 0;
            108 }
            原因分析(個人):vs08有檢查機制,當對pq頂部直接改沒問題,但是又調用pop的時候,其實現在的堆已不是正常的
            了。所以回出現錯誤,而03下沒檢查機制,所以不會出現錯誤.如果想對pq的頂部改時,好的習慣是先彈出,修改后再壓回去...
            posted on 2008-07-22 19:18 小果子 閱讀(129) 評論(0)  編輯 收藏 引用 所屬分類: 學習筆記
            一97日本道伊人久久综合影院 | 国产精品99久久久久久www| 欧美久久久久久| 久久丝袜精品中文字幕| 国产综合免费精品久久久| 久久久国产99久久国产一| 一级做a爰片久久毛片看看| 亚洲中文精品久久久久久不卡| 精品国产91久久久久久久| 青青草国产精品久久| 婷婷国产天堂久久综合五月| 国产毛片欧美毛片久久久 | 一97日本道伊人久久综合影院| 亚洲va久久久噜噜噜久久狠狠| 色综合久久久久| 国内精品伊人久久久久妇| 国产精品免费久久久久久久久 | 久久精品国产亚洲AV嫖农村妇女| 久久久网中文字幕| 日韩人妻无码一区二区三区久久 | 久久亚洲春色中文字幕久久久| 欧美激情精品久久久久| 久久精品国产亚洲av麻豆图片 | 伊人久久大香线蕉精品不卡| 国产精品美女久久久m| 欧美亚洲色综久久精品国产| 久久久久亚洲精品无码网址 | 国产美女久久久| 精品国产乱码久久久久软件| 国产精品免费久久久久电影网| 国产成人精品免费久久久久| 国产成年无码久久久免费| 亚洲国产精品一区二区三区久久| 国产精品伊人久久伊人电影 | 久久精品国产色蜜蜜麻豆| 狠狠狠色丁香婷婷综合久久五月| 97精品伊人久久大香线蕉| 久久久无码精品亚洲日韩软件| 久久婷婷人人澡人人| 亚洲一区精品伊人久久伊人| 蜜臀久久99精品久久久久久|