• <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 小果子 閱讀(131) 評論(0)  編輯 收藏 引用 所屬分類: 學習筆記
            91久久精品国产成人久久| 亚洲国产成人久久一区久久| 久久精品青青草原伊人| 性做久久久久久久久老女人| 日本五月天婷久久网站| 久久精品国产乱子伦| 亚洲AV无码久久精品蜜桃| 国产情侣久久久久aⅴ免费| www.久久热.com| 久久99精品久久久久久不卡| 久久伊人亚洲AV无码网站| 久久SE精品一区二区| 久久99精品国产一区二区三区| 欧美伊人久久大香线蕉综合69| 亚洲国产成人精品女人久久久 | 久久亚洲国产精品成人AV秋霞| 日本久久久久亚洲中字幕| 99久久精品日本一区二区免费| 青春久久| 91精品国产综合久久香蕉 | 9999国产精品欧美久久久久久| 国内精品人妻无码久久久影院导航| 伊人久久精品线影院| 中文精品久久久久人妻不卡| 久久综合欧美成人| 色欲久久久天天天综合网| 婷婷久久综合| 久久狠狠一本精品综合网| 久久人人爽人人爽人人AV东京热| 伊人色综合九久久天天蜜桃 | 久久精品国产一区| 亚洲欧洲久久av| 久久久久亚洲AV成人网人人软件| 99久久人妻无码精品系列蜜桃| 国产欧美久久久精品影院| 久久精品无码av| 久久精品国产99国产电影网| 性欧美大战久久久久久久久| 99久久免费国产精品特黄| 亚洲精品无码久久久| 青青草国产97免久久费观看|