码迷,mamicode.com
首页 > 其他好文 > 详细

集训 T2-监考老师

时间:2020-05-17 17:49:03      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:一个   printf   sig   大致   getch   def   string   void   define   

大致题意:

  • 找出一个位置可以选出最大的"横排总和+竖列总和"。

基本思路

  • 利用前缀和的思想在读入的时候把每一列每一行的总和都算出来,
  • 然后暴力枚举每一个点,每一个点的答案就是这一行和这一列的和,
  • 最后找出最大的。

Code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <list>
using namespace std;
#define R read()
#define GC getchar()
#define ll long long
#define ull unsigned long long
#define INF 0x7fffffff
#define LLINF 0x7fffffffffffffff
ll read(){
    ll s=0,f=1;
    char c=GC;
    while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-f;c=GC;}
    while(c>=‘0‘&&c<=‘9‘){s=s*10+c-‘0‘;c=GC;}
    return s*f;
}
void fre(){
    freopen("teacher.in","r",stdin);
    freopen("teacher.out","w",stdout);
}
int n,m;
int mp[110][110];
int x[110],y[110];//x[i]表示第i行的总和,y[i]表示第i列的总和
int ans;
int main(){
    fre();
    n=R;m=R;
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            mp[i][j]=R;//读入
            x[i]+=mp[i][j];//记录第i行的总和
            y[j]+=mp[i][j];//记录第i列的总和
        }
    }
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){//暴力枚举每一个点
            ans=max(ans,x[i]+y[j]);//找出最大的
        }
    }
    printf("%d",ans);//输出
    return 0;
}

集训 T2-监考老师

标签:一个   printf   sig   大致   getch   def   string   void   define   

原文地址:https://www.cnblogs.com/FUXyao/p/12905917.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!