L2-039 清点代码库 - java
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相关推荐
- 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分)
文章目录 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分) 一.题目 二.题解 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分) 一.题目 二.题解 我这个做法 ...
- 简单题 6 清点代码库 (25 分)
链接::题目详情 - L2-039 清点代码库 (25 分) (pintia.cn) 上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请 ...
- 7-23 清点代码库(简洁AC+多方法)
7-23 清点代码库 分数 25 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请 ...
- 天梯赛--清点代码库
L2-3 清点代码库 (25 分) 上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请设计一个程序,能够将代码库中所有功能重复的代码找出 ...
- 天梯赛:L2-039 清点代码库 (25 分)
题目详情 - L2-039 清点代码库 (25 分) (pintia.cn) 这就是一道纯stl题,用map存数组(不能是字符串,因为有负数).然后用vector转存map,进行按值排序.无脑用函数就 ...
- L2-3 清点代码库【STL】
L2-3 清点代码库[STL] #include<bits/stdc++.h> using namespace std;#define int long longint n,m; stru ...
- 2021天梯赛 L2-039 清点代码库 题解
L2-039 清点代码库 (25 分) 题目: 上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请设计一个程序,能够将代码库中所有功能重 ...
- L2-039 清点代码库 (25 分)-PAT 团体程序设计天梯赛 GPLT
上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请设计一个程序,能够将代码库中所有功能重复的代码找出.各位大佬有啥想法,我当时就懵了,然 ...
- 7-12 清点代码库 (25 分)
上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请设计一个程序,能够将代码库中所有功能重复的代码找出.各位大佬有啥想法,我当时就懵了,然 ...
最新文章
- CornerNet 测试:
- Windows下Appium环境搭建(java版)
- go--基本数据类型
- java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...
- Java字符串处理之返回指定字符串下标(indexOf)
- [VNC] 云服务器 Ubuntu 16.04 安装 gnome 桌面并配置 VNC
- 防备电脑死机故障技巧的8个方法
- 虚拟现实建模语言VRML
- python之os.listdir
- 计算机组成原理学习通题目汇总
- 需求与商业模式分析-1-商业模式画布
- ipv4转ipv6 山石防火墙命令(教育网)
- [走过的路]联想时光——人艰不拆(店员篇+推销员篇)
- 压缩文件已损坏怎么办?恢复压缩文件,解决方法看这里
- Hibernate 列映射 – 解决其他类型映射命名冲突
- 人到五十岁以后做什么生意最好?
- android 头部伸缩listview,AndroidUIAndroid中listview可折叠伸缩仿手风琴效果(静态) -电脑资料...
- 关于使用Windows10系统,使用LR11录制app脚本的方法说明
- 【推荐工具】connected papers:文献知识图谱神器
- Python3 math模块以及运算优先级