L2-039 清点代码库


Java (javac)
时间限制
1500 ms
内存限制
128 MB

Python (python3)
时间限制
1500 ms
内存限制
64 MB

其他编译器
时间限制
500 ms
内存限制
64 MB


上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。”
这里我们把问题简化一下:首先假设两个功能模块如果接受同样的输入,总是给出同样的输出,则它们就是功能重复的;其次我们把每个模块的输出都简化为一个整数(在 int 范围内)。于是我们可以设计一系列输入,检查所有功能模块的对应输出,从而查出功能重复的代码。你的任务就是设计并实现这个简化问题的解决方案。

输入格式:
输入在第一行中给出 2 个正整数,依次为 N( ≤ 10410^{4}104 )和 M( ≤ 10210^{2}102 ),对应功能模块的个数和系列测试输入的个数。
随后 N 行,每行给出一个功能模块的 M 个对应输出,数字间以空格分隔。

输出格式:
首先在第一行输出不同功能的个数 K。随后 K 行,每行给出具有这个功能的模块的个数,以及这个功能的对应输出。数字间以 1 个空格分隔,行首尾不得有多余空格。输出首先按模块个数非递增顺序,如果有并列,则按输出序列的递增序给出。
注:所谓数列 A1,...,AM{ A_{1} , ... , A_{M} }A1​,...,AM​ 比 B1,...,BM{ B_{1} , ... , B_{M} }B1​,...,BM​ 大,是指存在 1 ≤ i < M ,使得 A1=B1,...,Ai=BiA_{1} = B_{1} ,...,A_{i} = B_{i}A1​=B1​,...,Ai​=Bi​ 成立,且 Ai+1>Bi+1A_{i + 1} > B_{i + 1}Ai+1​>Bi+1​ 。

输入样例:
7 3
35 28 74
-1 -1 22
28 74 35
-1 -1 22
11 66 0
35 28 74
35 28 74

输出样例:
4
3 35 28 74
2 -1 -1 22
1 11 66 0
1 28 74 35


输入n组数,找出n组数相同的数组并统计 ,最后将统计结果输出


emmmmmm

自己写一个对象 对象中去判断当前的是否与其他的相同

用map存储对象

然后用数组存储map中的值

给数组排序

最后输出即可


import java.io.*;
import java.math.*;
import java.util.*;public class Main
{static class edge implements Comparable<edge>{int shu[];int cnt = 0;public edge(int shu[]){this.shu = shu;}public boolean equals(edge other) // 看添加进来的是否又出现过{for (int i = 0; i < this.shu.length; i++){if (this.shu[i] != other.shu[i])return false;}return true;}@Overridepublic int compareTo(edge other) // 排序{if (this.cnt != other.cnt)return other.cnt - this.cnt;for (int i = 0; i < this.shu.length; i++){if (this.shu[i] != other.shu[i])return this.shu[i] - other.shu[i];}return 0;}}public static void main(String[] args) throws IOException{int n = ini(), m = ini();TreeMap<edge, Integer> mp = new TreeMap<edge, Integer>();for (int i = 1; i <= n; i++){int shu[] = new int[m];for (int j = 0; j < m; j++)shu[j] = ini();mp.merge(new edge(shu), 1, Integer::sum);}int len = mp.size();edge res[] = new edge[len + 10];int pos = 0;// 遍历存到数组里for (edge i : mp.keySet()){pos++;res[pos] = i;res[pos].cnt = mp.get(i);}Arrays.sort(res, 1, len + 1);// 输出个数out.println(len);for (int i = 1; i <= len; i++){StringBuilder t = new StringBuilder();t.append(res[i].cnt);for (int j = 0; j < m; j++)t.append(" " + res[i].shu[j]);out.println(t);}out.flush();out.close();}static StreamTokenizer sc = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static PrintWriter out = new PrintWriter(System.out);static int ini() throws IOException{sc.nextToken();return (int) sc.nval;}}

merge
merge
merge

hashmap.merge(key, value, remappingFunction)
key - 键
value - 值
remappingFunction - 重新映射函数,用于重新计算值返回值

lambda表达式:( 参数 ) - > 表达式

merge我个人觉得和普通的containsKey()查找相同再存进去一样,不过merge更方便点 第三个 里( 可以 ( 那个我也不确定 ,但是这种形式我觉得是lambda表达式) )放lambda表达式( 而 lambda表达式 也觉得是是释放双手的一个东东,它可以将参数里面的数进行表达式运算再传出答案 )求个数

lambda表达式

StringBuilder

对象数组排序


如果有说错的 或者 不懂的 尽管提 嘻嘻

一起进步!!!


闪现

L2-039 清点代码库 - java相关推荐

  1. 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分)

    文章目录 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分) 一.题目 二.题解 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分) 一.题目 二.题解 我这个做法 ...

  2. 简单题 6 清点代码库 (25 分)

    链接::题目详情 - L2-039 清点代码库 (25 分) (pintia.cn) 上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请 ...

  3. 7-23 清点代码库(简洁AC+多方法)

    7-23 清点代码库 分数 25 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请 ...

  4. 天梯赛--清点代码库

    L2-3 清点代码库 (25 分) 上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请设计一个程序,能够将代码库中所有功能重复的代码找出 ...

  5. 天梯赛:L2-039 清点代码库 (25 分)

    题目详情 - L2-039 清点代码库 (25 分) (pintia.cn) 这就是一道纯stl题,用map存数组(不能是字符串,因为有负数).然后用vector转存map,进行按值排序.无脑用函数就 ...

  6. L2-3 清点代码库【STL】

    L2-3 清点代码库[STL] #include<bits/stdc++.h> using namespace std;#define int long longint n,m; stru ...

  7. 2021天梯赛 L2-039 清点代码库 题解

    L2-039 清点代码库 (25 分) 题目: 上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请设计一个程序,能够将代码库中所有功能重 ...

  8. L2-039 清点代码库 (25 分)-PAT 团体程序设计天梯赛 GPLT

    上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请设计一个程序,能够将代码库中所有功能重复的代码找出.各位大佬有啥想法,我当时就懵了,然 ...

  9. 7-12 清点代码库 (25 分)

    上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请设计一个程序,能够将代码库中所有功能重复的代码找出.各位大佬有啥想法,我当时就懵了,然 ...

最新文章

  1. CornerNet 测试:
  2. Windows下Appium环境搭建(java版)
  3. go--基本数据类型
  4. java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...
  5. Java字符串处理之返回指定字符串下标(indexOf)
  6. [VNC] 云服务器 Ubuntu 16.04 安装 gnome 桌面并配置 VNC
  7. 防备电脑死机故障技巧的8个方法
  8. 虚拟现实建模语言VRML
  9. python之os.listdir
  10. 计算机组成原理学习通题目汇总
  11. 需求与商业模式分析-1-商业模式画布
  12. ipv4转ipv6 山石防火墙命令(教育网)
  13. [走过的路]联想时光——人艰不拆(店员篇+推销员篇)
  14. 压缩文件已损坏怎么办?恢复压缩文件,解决方法看这里
  15. Hibernate 列映射 – 解决其他类型映射命名冲突
  16. 人到五十岁以后做什么生意最好?
  17. android 头部伸缩listview,AndroidUIAndroid中listview可折叠伸缩仿手风琴效果(静态) -电脑资料...
  18. 关于使用Windows10系统,使用LR11录制app脚本的方法说明
  19. 【推荐工具】connected papers:文献知识图谱神器
  20. Python3 math模块以及运算优先级

热门文章

  1. 为什么运放一般要反比例放大?
  2. 卫星影像免费下载地址
  3. 西瓜微数独家工具! 超全微博粉丝分析!!!
  4. 无盘疑难杂症的处理和网络的设置(转)
  5. 谈谈第一次Web项目的感想(上)
  6. uiuc的计算机工程硕士学费标准,美国计算机硕士留学费用全都在这了!
  7. 一个英语学渣是如何通过英语六级的
  8. BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略)
  9. 凤凰牌老熊对支付的系统讲解
  10. c语言烧录芯片,入门扫盲!芯片程序的烧录过程,没想象那么难跟着走就行!...