newplan

阿基米德在洗澡時發現浮力原理,高興得來不及穿㆖褲子,跑到街㆖大喊:Eureka(我找到了)。
posts - 39, comments - 26, trackbacks - 0, articles - 4
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

acm_GREEDY_排队

Posted on 2008-05-13 23:48 山泉弯延 阅读(541) 评论(1)  编辑 收藏 引用
/*
 *有N个人排队到R个水龙头去打水,他们装满水桶的时间
 *为T1,T2,…,Tn为整数且各不相等,应如何安排他们
 *的打水顺序才能使他们花费的时间最少?
 *分析:由于排队时,越靠前面的计算的次数越多,显然越小
 *的排在越前面得出的结果越小(可以用数学方法简单证明,
 *这里就不再赘述),所以这道题可以用贪心法解答
 */
/*------------INCLUDES---------------*/
#include 
<cstdlib>
#include 
<iostream>
#include 
<queue>
#include 
<fstream>
/*------------INCLUDES---------------*/

/*---------------STD-----------------*/
using std::ifstream;
using std::queue;
using std::vector;
using std::greater;
using std::priority_queue;
/*---------------STD----------------*/

/*------------GLOBAL VAL------------*/
int  M[5];
/*------------GLOBAL VAL------------*/

/*---------------MAIN---------------*/
int main(int argc, char *argv[])
{   ifstream  Fin;
    Fin.open(
"queue.txt");
    
    priority_queue
<int,vector<int>,greater<vector<int>::value_type> >   iqueue;
    
    
int a;
    
while(Fin>>a)
    {
       iqueue.push(a);
    }
    
    
int flag=0;
    
int i=0;
    
    
while(!iqueue.empty())
    {
      
if(flag==0)
      {M[i]
=iqueue.top();
       iqueue.pop(); 
       i
++;     
       
if(i==5)
       flag
=1;
      }
      
else if(flag==1)
      {
       M[i]
=iqueue.top();
       iqueue.pop(); 
       i
--;
       
if(i==0)
       flag
=0;    
      }
      
    }
    
    system(
"PAUSE");
    return EXIT_SUCCESS;
}
/*---------------MAIN---------------*/


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理