努力ing
你浪费的今天是昨天死去的人所渴望的明天!!!

简单的贪心算法

开始的时候真的很郁闷,将第一个for循环中i++写在括号内,当循环j==m时,跳出,i没有自加1;测试数据是过了,以为题目很简单,就没有去测其他数据了,这就悲剧了。

#include<iostream>
#include<algorithm>
using namespace std;
int a[20005],b[20005];
int main()
{
 int n,m;
 
 while(cin>>n>>m,n+m)
 {
  int num=0,i;
  for(i=0;i<n;i++)
   cin>>a[i];
  for(i=0;i<m;i++)
   cin>>b[i];
  if(m<n){cout<<"Loowater is doomed!"<<endl;continue;}
  sort(a,a+n);
  sort(b,b+m);
  int j=0;
  for(i=0;i<n;)
  {
  /* while(j<m&&a[i]>b[j])
   {
    j++;
   }
   
   if(j>=m) break;
   num+=b[j++];
   i++;
   */
    
   for(;j<m;j++)
   {
    if(a[i]<=b[j])
    {
     num+=b[j];
     j++;
     break;
    }
   } 
   i++;
   if(j>=m)
    break;   
  }
 // cout<<i<<' ';
  if(i==n)cout<<num<<endl;
  else cout<<"Loowater is doomed!"<<endl;
 }
 return 0;
}

 

posted on 2013-05-06 21:49  努力ing  阅读(124)  评论(0)    收藏  举报