zoukankan      html  css  js  c++  java
  • UVa 1445

    统计正面看高度为i的竖条个数为cnt1[i], 统计侧面看高度为i的竖条个数为cnt2[i];

    ans = sum( i * max( cnt1[i], cnt2[i] ) ); ( 1 <= i <= 20 )

    若使方块数最少,则令高度为i的竖条从正面看和侧面看都是同一条即可。

    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <algorithm>
    
    using namespace std;
    
    int cnt1[30];
    int cnt2[30];
    
    int main()
    {
        int W, D;
        while ( scanf( "%d%d", &W, &D ), W || D )
        {
            memset( cnt1, 0, sizeof(cnt1) );
            memset( cnt2, 0, sizeof(cnt2) );
            for ( int i = 0; i < W; ++i )
            {
                int a;
                scanf( "%d", &a );
                ++cnt1[a];
            }
            for ( int i = 0; i < D; ++i )
            {
                int a;
                scanf( "%d", &a );
                ++cnt2[a];
            }
            int ans = 0;
            for ( int i = 0; i < 30; ++i )
                ans += i*max( cnt1[i], cnt2[i] );
            printf( "%d
    ", ans );
        }
        return 0;
    }
  • 相关阅读:
    hdu5289 RMQ+二分
    poj1459 最大流Dinic
    poj2391 最大流+拆点
    poj1087&&hdu1526 最大流
    NOI2004 郁闷的出纳员
    Treap入门(转自NOCOW)
    poj 2892
    vijos 1512
    对拍程序
    poj 3264
  • 原文地址:https://www.cnblogs.com/GBRgbr/p/3315606.html
Copyright © 2011-2022 走看看