蓝桥杯备赛第十天

问题描述

  《审美的历程》课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手。老师请同学们分辨哪些画的作者是梵高,但是老师自己并没有答案,因为这些画看上去都像是小朋友画的……老师只想知道,有多少对同学给出的答案完全相反,这样他就可以用这个数据去揭穿披着皇帝新衣的抽象艺术了(支持帅老师^_^)。

  答案完全相反是指对每一幅画的判断都相反。

输入格式

  第一行两个数n和m,表示学生数和图画数;

  接下来是一个n*m的01矩阵A:

  如果aij=0,表示学生i觉得第j幅画是小朋友画的;

  如果aij=1,表示学生i觉得第j幅画是梵高画的。

输出格式

  输出一个数ans:表示有多少对同学的答案完全相反。 

分析:

首先想到的是 暴力遍历 依次对比相应位数上的值是否相同 一旦有相同就break 进入下一个同学的判断进行比较

采用的是使用nextint来获取数据,据说在数据很大时会出现超时的情况 需要使用字符流


 

/**

* Copyright (C), 2015-2019

* FileName: AestheticsCopy

* Author: zun

* Date: 2019/2/23 11:58

* Description: 审美课 网上参考

* History:

* <author> <time> <version> <desc>

* pengzijun 2019/2/23 11:58 1.0 审美课 网上参考

*/



import java.io.IOException;

import java.io.InputStreamReader;

import java.io.Reader;

import java.util.HashMap;



/**

* 〈一句话功能简述〉

* 〈审美课 网上参考〉

*

* @author zun

* @create 2019/2/23

* @since 1.0.0

*/





import java.util.Map.Entry;



public class AestheticsCopy {

private static Reader reader;



public static void main(String[] args) {

reader = new InputStreamReader(System.in);

int n, m;

n = getInt();

m = getInt();

HashMap<Integer, Integer> hm = new HashMap<>(n);

for (int i = 0; i < n; ++i) {

int num = 0, x = 0;

for (int j = 0; j < m; j++) {

x = getInt();

num = (num << 1) + x;

}

hm.put(num, hm.containsKey(num) ? hm.get(num) + 1 : 1);

}

int sum = 0, maxn = (1 << m) - 1;

for (Entry<Integer, Integer> entry : hm.entrySet()) {

if (maxn / 2 < entry.getKey())

continue;

int key = entry.getKey() ^ maxn;

if (hm.containsKey(key))

sum += hm.get(key) * entry.getValue();

//这部分就看不太懂了



}

System.out.println(sum);

}



public static int getInt() {

int res = 0, read;

try {

while ((read = reader.read()) != -1) {

if (java.lang.Character.isDigit(read)) {// 因为全是非负数,不需要判断负号‘-’,只要是数字就行

res = read - '0';

while ((read = reader.read()) != -1) {// 继续得到能得到的数字

if (java.lang.Character.isDigit(read)) {

res = res * 10 + (read - '0');

} else {

break;

}

}

break;

}

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return res;

}

}

发布了19 篇原创文章 · 获赞 7 · 访问量 9921

猜你喜欢

转载自blog.csdn.net/weixin_42297075/article/details/87929466