问题描述

  《审美的历程》课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手。老师请同学们分辨哪些画的作者是梵高,但是老师自己并没有答案,因为这些画看上去都像是小朋友画的……老师只想知道,有多少对同学给出的答案完全相反,这样他就可以用这个数据去揭穿披着皇帝新衣的抽象艺术了(支持帅老师^_^)。
  答案完全相反是指对每一幅画的判断都相反。
输入格式
  第一行两个数n和m,表示学生数和图画数;
  接下来是一个n*m的01矩阵A:
  如果aij=0,表示学生i觉得第j幅画是小朋友画的;
  如果aij=1,表示学生i觉得第j幅画是梵高画的。
输出格式
  输出一个数ans:表示有多少对同学的答案完全相反。
样例输入
3 2
1 0
0 1
1 0
样例输出
2
样例说明
  同学1和同学2的答案完全相反;
  同学2和同学3的答案完全相反;
  所以答案是2。
数据规模和约定
  对于50%的数据:n<=1000;
  对于80%的数据:n<=10000;
  对于100%的数据:n<=50000,m<=20。
 
思路:如果暴力求解的话,三层for循环肯定超时,这道题可以考虑把每个同学的答案看为一个二进制的数字,我们把他转为一个十进制的数字存在一个数组里面,并且根据,相反答案的关系求出有多少对,
比如01 和10 是一对相反答案,并且我们发现01=1,10=2,并且1+2=2^2-1,同理对于110和001,我们发现110=6,001=1,并且6+1=23-1,以此类推,我们可以通过此关系求出所要的答案,时间复杂度可以缩短为o(n2)
 import java.util.Scanner;
public class Main {
public static int [][]array=new int [][];
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
int array1[]=new int[];
for (int i = ; i <n; i++) {
array1[i]=;
for(int j=;j<m;j++)
{
array[i][j]=scanner.nextInt();
}
for(int j=;j<m;j++)
{
array1[i]+=array[i][j]*Math.pow(, j);
}
}
int a1=(int) Math.pow(, m)-;
int sum=;
for(int i=;i<n-;i++)
{
for(int j=i+;j<n;j++)
{
if(array1[i]==(a1-array1[j])) {
sum++;
}
}
}
System.out.println(sum);
} }

其实这个代码的复杂度已经很低了,但是在蓝桥杯官网上运行时发现超时,只能得到70分,但是写成c++却可以得到满分,这可能因为c++比java速度快的原因吧,希望能看到你们的更好的答案。

最新文章

  1. mysql connection refused
  2. Java中遍历Map集合的四种方法
  3. vs2010 打包 SQL server compact 4.0 驱动程序
  4. 内核移植和文件系统制作(3)Ramdisk简介和常见问题
  5. http安全篇
  6. 【转】Ubuntu 10.04 LTS 的窗口控制按钮从左上角调整到右上角
  7. Servlet过滤器——创建过滤器
  8. 使用Common.Logging与log4net的组件版本兼容问题
  9. Zim学习笔记 (Fedora)
  10. C# 7.0 特性
  11. shadow dom 隔离代码 封装
  12. linq中group by
  13. mysql--构造数据、导入导出
  14. AttributeError: &#39;LoginForm&#39; object has no attribute &#39;is_bound&#39; , object has no attribute &#39;is_bound&#39;
  15. jira6.3.6创建问题不自动发邮件通知的问题
  16. rest-framework之解析器
  17. Loadrunner&#160;脚本开发-从文件读取数据并参数化
  18. 【CF717G】Underfail 费用流
  19. mysql中查看一个字段中,有几个逗号
  20. seaborn基础整理

热门文章

  1. JavaScript 使用技巧(持续更新)
  2. php数据结构课程---3、队列(队列实现方法)
  3. ashx页面缓存
  4. 解决jquery动态创建元素绑定事件失效问题
  5. [原]NYOJ-子串和44
  6. luogu1754卡特兰数
  7. Marionettejs
  8. 记一次肉机事件--yam
  9. canvas线条笔帽及连接
  10. ES6学习之数组扩展