【...】
网上代码比较多我就尽量不挂了,简单讲下思路吧。
oj : acm.zcmu.edu.cn
【Problem A: 画正方形】
签到题,注意下输出格式(组与组之间有且仅有一个空行)就行。
至于怎么注意..判断第一组输出前不输出空行或者最后一组输出后不输出空行就行...反正几组数据都告诉你了。
如果几组数据未知就判断第一组然后改变状态即可。
【Problem B: 勇者斗恶龙】
简单贪心。把恶龙每个头的直径和骑士的能力存到数组里然后升序(或者降序也行)排序,然后按恶龙(或者骑士也行)的头的直径从小到大去匹配能力从小到大的骑士,保证最优解,如果头最大的那个可以匹配到对应的骑士,那么就输出解,否则无解。这里我用了sort()函数,因为方便,自行百度头文件和用法,还可以结构体排序哦。
//其中一种做法
#include<bits/stdc++.h> //这其实是万能头文件了,自行百度
using namespace std;
main()
{
int n,m,i,j,a[20005],b[20005];
while(~scanf("%d%d",&n,&m),n&&m)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
for(i=0;i<m;i++)
scanf("%d",&b[i]);
sort(b,b+m);
int sum=0;
i=0,j=0;
while(i<n&&j<m)
{
if(b[j]>=a[i])
{
sum+=b[j];
i++;
}
j++;
}
if(i==n) printf(