您的位置:首页 > 编程语言 > Go语言

11292 - Dragon of Loowater (Time limit: 1.000 seconds)

2016-03-19 09:51 477 查看


题目






解题思路

1.将两个数组进行升序排序,这里的数据规模为20000,所以需要n^2以下的复杂度

2.排好序之后,将两个数组从小到大进行匹配,这里的算法思想是贪心,可以证明这样做是正确的

3.写代码时,主要不要混用C和C++,UVa的judge对此比较严格

4.算法的时间复杂度是O(nlogn+mlogm),空间复杂度是O(n+m)


通过代码

#include<iostream>
#include<algorithm>

using namespace std;

int N[20005];
int M[20005];

int main(){

int n,m;
int i,j;
int min;

while(true)
{
cin>>n;
cin>>m;

if(n*m==0)
break;

for(int x=0;x<n;++x)
cin>>N[x];

for(int x=0;x<m;++x)
cin>>M[x];

sort(N,N+n);
sort(M,M+m);

min=i=j=0;
while(i!=n&&j<m)
{
if(M[j]>=N[i]){
min+=M[j];
++i;++j;
//printf("debug: N=%d  M=%d\n",N[i-1],M[j-1]);
}
else
++j;
}

if(i==n)
cout<<min<<endl;
//printf("%d\n",min);
else
cout<<"Loowater is doomed!"<<endl;
}

return 0;
}



运行截图





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: