• 隔壁


    /*
      最大体积很显然
      最小体积用贪心做的,如果横向和纵向的高度一样,那么这个位置的高度就固定了,最后如果一整行或一整列的高度都没固定,就找一个合适的位置固定。
    */
    #include<cstdio>
    #include<iostream>
    #define N 1010
    using namespace std;
    int map[N][N],zhu[N],zuo[N],n,m;
    int vzhu[N],vzuo[N];
    void work1()
    {
        for(int i=1;i<=n;i++)
          for(int j=1;j<=m;j++)
            if(zhu[i]==zuo[j]&&!vzhu[i]&&!vzuo[j])
            {
                map[i][j]=zhu[i];
                vzhu[i]=1;vzuo[j]=1;
            }
        for(int i=1;i<=n;i++)
          if(!vzhu[i])
          {
              for(int j=1;j<=m;j++)
                if(zhu[i]<=zuo[j]&&!map[i][j])
                {
                    map[i][j]=zhu[i];
                    if(zhu[i]==zuo[j])vzuo[j]=1;
                    break;
              }
          }
        for(int j=1;j<=m;j++)
          if(!vzuo[j])
          {
              for(int i=1;i<=n;i++)
                if(zuo[j]<=zhu[i]&&!map[i][j])
                {
                    map[i][j]=zuo[j];
                    break;
              }
          }
        int tot=0;
        for(int i=1;i<=n;i++)
          for(int j=1;j<=m;j++)
            tot+=map[i][j];
        printf("%d ",tot);
    }
    void work2()
    {
        int tot=0;
        for(int i=1;i<=n;i++)
          for(int j=1;j<=m;j++)
            tot+=min(zhu[i],zuo[j]);
        printf("%d",tot);
    }
    int main()
    {
        //freopen("jh.in","r",stdin);
        //freopen("neighbor.in","r",stdin);
        //freopen("neighbor.out","w",stdout);
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
          scanf("%d",&zhu[i]);
        for(int i=1;i<=m;i++)
          scanf("%d",&zuo[i]);
        work1();
        work2();
        return 0;
    }
    View Code
  • 相关阅读:
    centos7下查看端口是否被占用
    centos7通过yum安装redis
    centos7下mysql远程连接
    centos7通过yum安装JDK1.8
    Jwt系列2:使用
    Jwt系列1:简介
    Python基础语法
    排序
    利用MultipartFile来进行文件上传
    服务器端跳转和客户端跳转
  • 原文地址:https://www.cnblogs.com/harden/p/5933065.html
Copyright © 2020-2023  润新知