PTA L2-039 清点代码库(STL)

4.18刚比完了中国高校计算机大赛-团体程序设计天梯赛,本蒟蒻第一次参加GPLT,差9分二等,啊啊啊我好菜(QAQ),应该再摸一题L3的
在这里插入图片描述

然后接下来有时间的话挑几题发发思路和代码

【问题描述】
首先假设两个功能模块如果接受同样的输入,总是给出同样的输出,则它们就是功能重复的;其次我们把每个模块的输出都简化为一个整数(在 i n t int int范围内)。
于是我们可以设计一系列输入,检查所有功能模块的对应输出,从而查出功能重复的代码。你的任务就是设计并实现这个简化问题的解决方案。

【输入格式】
输入在第一行中给出 2 2 2个正整数,依次为 N N N M M M,对应功能模块的个数和系列测试输入的个数。
随后 N N N行,每行给出一个功能模块的 M M M个对应输出,数字间以空格分隔。

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

【数据范围】
1 ≤ N ≤ 1 0 4 1≤N≤10^4 1N104
1 ≤ M ≤ 100 1≤M≤100 1M100

【输入样例】

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

【分析】


本题考查的就是 S T L STL STL的使用,对于输入的每组数据,将其存入vector后映射至map上,统计其出现的次数,此时map已按vector的字典序排好序了。然后将map中的每对元素以pair形式存入vector中,将每组数据出现次数放在first上,由于sort是按pairfirst进行从小到大排序的,因此存入时需在次数前加负号。然后将sort后的结果输出就行
注:不可用sort(ans.begin(), ans.end(), greater<pair<int, vector<int> > >());否则会打乱map中vector的顺序


【代码】

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <map>
using namespace std;

const int N = 10010, M = 110;
map<vector<int>, int> cnt;
vector<pair<int, vector<int> > > ans;
int n, m;

int main()
{
    
    
	scanf("%d%d", &n, &m);
	for (int i = 0; i < n; i++)
	{
    
    
		vector<int> temp;
		for (int j = 0; j < m; j++)
		{
    
    
			int x;
			scanf("%d", &x);
			temp.push_back(x);
		}
		cnt[temp]++;
	}
	for (auto &u : cnt) ans.push_back({
    
     -u.second, u.first });
	//for (auto &[u, v] : cnt) ans.push_back({ -v, u });//C++新特性,PTA不支持
	sort(ans.begin(), ans.end());
	printf("%d\n", cnt.size());
	for (auto &u : ans)
	{
    
    
		printf("%d", -u.first);
		for (auto &v : u.second)
			printf(" %d", v);
		puts("");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_51755720/article/details/116457511#comments_26012019