题目链接:http://poj.org/problem?id=3802
题目描述:给出主视图和右视图,问最少需要多少个方块
解题思路:
题目里有提示,行列变换不会影响结果,所以不妨先排一下序(没啥用,为了看着舒服)
在行数组里遍历,如果列数组那边有和行数组一样的数,说明这个xoy平面点上只需要w[ i ] 个方块就可以了
注意标记一下和break,不然就不对了
挺简单的题,不过比赛时候想了半天才有头绪,事实上最后还是成希凡敲出来的
事后诸葛亮....今早起来突然想起这题还没自己写过,几分钟就写完了 = =
AC代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int w[12],d[12],vis[12];
int main()
{
freopen("input.txt","r",stdin);
int m,n,i,j;
while(cin>>m>>n,m||n)
{
memset(w,0,sizeof(w));
memset(d,0,sizeof(d));
memset(vis,0,sizeof(vis));
int sum=0;
for(i=0;i<m;i++)
{
cin>>w[i];
sum+=w[i];
}
for(i=0;i<n;i++)
{
cin>>d[i];
sum+=d[i];
}
sort(w,w+m);
sort(d,d+n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(w[i]==d[j]&&!vis[j])
{
sum -= w[i];
vis[j]=1;
break;
}
}
}
cout<<sum<<endl;
}
return 0;
}
AC截图: