HDU 3361 Assignments

本题为简单的贪心算法,题目大意如下:给出两个元素为n的数组和一个数t,然后从两个数组中分别选出一个数加起来和t,比大小,如果比其大的话就把它加上,否则就加上0,本人愚见为:对两个数组中的其中一个进行升序排序,另外一个进行降序排序。然后对其进行相加
下面附上AC代码这里写代码片
cstdio
iostream
algorithm
using namespace std;

int cmp(int x, int y)
{
return x>y;
}
int a[1005],b[1005];
int main()
{
int n,t;
while(cin>>n>>t)
{
for(int i=0;i < n;i++)
{
scanf(“%d”,&a[i]);
}
for(int i=0;i < n;i++)
{
scanf(“%d”,&b[i]);
}
sort(a,a+n,cmp);
sort(b,b+n);
int sum=0;
for(int i=0;i < n;i++)
{
if(a[i]+b[i]>t)
{
sum+=a[i]+b[i]-t;
}
}
cout<< sum << endl;
}
return 0;
}

你可能感兴趣的:(贪心算法)