zoukankan      html  css  js  c++  java
  • T2 监考老师 题解

    第二题,他并不是多难的算法。甚至连搜索都不用,他的题目要求和数据断定了他第二题的地位。

    在一个大试场里,有 n 行 m 列的考生,小王和众多同学正在考试,这时,有一部分考生
    作弊,当然,监考老师能发现他们。但是只有一个监考老师,他由于高度近视,只能发现与
    他同行同列的作弊者,而且由于监考老师年老体弱,在考试过程中无法移动。现在已知 n*m
    个考生中谁在作弊,请帮监考老师找一个位置,可以发现最多的作弊者(监考老师可以和某
    个考生在同一位置)。如果监考老师的位置上的考生在作弊,那么监考老师先前后看,发现
    他作弊,再左右看,又发现他作弊,算做发现 2 个考生作弊
    对于 50%的数据,0<n,m<=10
    对于 100%的数据,0<n,m<=100,所有数据都在 longint 范围内
    

    看这个样子,我们只需要求出每行每列各有多少作弊者,然后双层for循环遍历就可以了啊。

    看起来是这样,实际上呢?

    实际上就是这样。

    题目说的很清楚了,要抓到最多的学生,那我们直接把所有的地方遍历一遍,看看哪里抓到的数量最多就好了。

    (嗯,说了2遍题解呢……)

    现在就是神圣的代码时间:

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    long long h[205],s[205],shu,n,m,a;
    int main()
    {
    	freopen("teacher.in","r",stdin);//至关重要的freopen,不加会0分的哦
    	freopen("teacher.out","w",stdout);
    	scanf("%lld%lld",&n,&m);
    	for(int i=0;i<n;i++)
    	{
    		for(int j=0;j<m;j++)
    		{
    			scanf("%lld",&a);//输入
    			if(a==1)//他是作弊者
    			{
    				h[i]++;//他身处的这行增加了一个作弊者
    				s[j]++;//他身处的这列增加了一个作弊者
    			}
    		}
    	}
    	for(int i=0;i<n;i++)
    	{
    		for(int j=0;j<m;j++)
    		{
    			shu=max(shu,h[i]+s[j]);//遍历所有点,找最大值。
    		}
    	}
    	printf("%lld
    ",shu);//输出最大值
    	return 0;
    }
    

    嗯,这个题优雅的结束了,我们下一题见。

  • 相关阅读:
    安装 Java 开发工具包JDK(Windows版本)
    在sublime text 3中让.vue文件的内容变成彩色
    iOS之禁止所有输入法的表情
    iOS之UIButton扩大按钮的响应区域
    iOS之利用腾讯Bugly程序调试,测试代码bug、卡顿等情况
    iOS之在本地搭建IPv6环境测试你的app
    iOS之让UISearchBar搜索图标和placeholder靠左显示
    iOS之限制TextField的输入长度
    iOS之oc与html之间的交互(oc中调用js的方法)
    iOS之面试题:腾讯三次面试以及参考思路
  • 原文地址:https://www.cnblogs.com/lichangjian/p/12906791.html
Copyright © 2011-2022 走看看