UVALive - 4636 Cubist Artwork(贪心)

topic link

 

meaning of the title

Given front and side views, determine the minimum number of cubes

 

analyze

If there are cubes of the same height, the side with the most number will prevail.

#include <iostream>  
#include <cstdio>  
#include <cstring>  
#include <algorithm>  
using namespace std;  
const int MAXN = 30;  
  
int num1[MAXN],num2[MAXN];  
int n,m;  
  
int main(){  
    while (scanf("%d%d",&m,&n) != EOF && n+m){  
        memset(num1,0,sizeof(num1));  
        memset(num2,0,sizeof(num2));  
        int x;  
        for (int i = 0; i < m; i++){  
            scanf("%d",&x);  
            num1[x]++;  
        }  
        for (int i = 0; i < n; i++){  
            scanf("%d",&x);  
            num2[x]++;  
        }  
        int ans = 0;  
        for (int i = 1; i < 25; i++)  
            ans += i*max(num1[i],num2[i]);  
        printf("%d\n",ans);  
    }  
    return 0;  
}  

 

  1. #include <iostream>  
  2. #include <cstdio>  
  3. #include <cstring>  
  4. #include <algorithm>  
  5. usingnamespace std;   
  6. const int  MAXN = 30;   
  7.   
  8. int num1[MAXN],num2[MAXN];  
  9. int n,m;  
  10.   
  11. int  main(){  
  12.     while (scanf("%d%d",&m,&n) != EOF && n+m){  
  13.         memset(num1,0,sizeof(num1));  
  14.         memset(num2,0,sizeof(num2));  
  15.         int x;  
  16.         for (int i = 0; i < m; i++){  
  17.             scanf("%d",&x);  
  18.             num1[x]++;  
  19.         }  
  20.         for (int i = 0; i < n; i++){  
  21.             scanf("%d",&x);  
  22.             num2[x]++;  
  23.         }  
  24.         int  years = 0;  
  25.         for (int i = 1; i < 25; i++)  
  26.             ans += i*max(num1[i],num2[i]);  
  27.         printf("%d\n",ans);  
  28.     }  
  29.     return 0;  
  30. }  

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325090053&siteId=291194637