每日刷题15

资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
问题描述
  Chakra是一位年轻有为的企业家,最近他在进军餐饮行业。他在各地开拓市场,共买下了N个饭店。在初期的市场调研中,他将一天划分为M个时间段,并且知道第i个饭店在第j个时间段内,会有Aij位服务员当值和Bij位客户光临。他还分析了不同饭店不同时间段客户的需求,得到第i个饭店在第j个时间段内,平均每位客户消费Cij元。为了创设品牌形象,Chakra决定每个饭店每天只选择一个时间段营业,每个服务员至多接待一位顾客(若顾客数多于服务员数,超过部分的顾客当天就无法在该店消费了)。
  企业家的目的终究还是获利。请你安排营业时间,并告诉Chakra每天消费总额最多为多少。
输入格式
  第一行两个整数,N、M。
  第二行开始依次给出三个矩阵A(NM)、B(NM)、C(N*M)。
输出格式
  一行一个整数,最大消费总额。
样例输入
2 3
1 2 3
3 2 1
3 2 1
1 2 3
4 5 2
3 1 6
样例输出
16
数据规模和约定
  1 <= M,N <= 100
  1 <= Aij, Bij <= 5000
  0 <= Cij <= 10^9
解答:

#include<iostream>
using namespace std;
typedef long long ll;
const ll M = 1000;
const ll N = 1000;  
int A[M][N];
int B[M][N];
int C[M][N];
ll maxprice,maxnum,result;
int n,m;
// void setPara((int *)A,(int *)B,(int *)C,int n,int m){
    
// }
int main(){
    cin>>n>>m;
    
 for (int i = 1; i <= n; i++){
    for (int j = 1; j <= m; j++){
     cin>>A[i][j];//服务员的数量
    
    }
    
 }
     for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cin>>B[i][j];//顾客的数量
            if(B[i][j] < A[i][j])//如果顾客数量大于服务员的数量那就把服务员的数量改为顾客的数量
                A[i][j] = B[i][j];
        }

    }
     for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cin>>C[i][j];
        }
    }
    //这里有一个很重要的一点也就是每个商店只选一个时间段营业
    for (int i = 1; i <=n; i++)
    {
        for (int j =1; j <= m; j++)
        {
            if (maxnum < C[i][j]*A[i][j])
            {
                maxnum = C[i][j]*A[i][j];
            }

        }
        result += maxnum;
        maxnum = 0;
        
    }
    
    cout<<result;
    //写是写出来了但是答案分数只有40不知道错在哪了,欢迎大家指教。


    
}