当前位置: 首页 > news >正文

2025天梯赛 L2专项训练

L2-049 鱼与熊掌 - 团体程序设计天梯赛-练习集

思路就是模拟,正常写就完事

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a, b;
	cin >> a >> b;
	vector<vector<int>>arr(a, vector<int>(0));
	for (int i = 0; i < a; i++)
	{
		int ok;
		cin >> ok;
		for (int j = 0; j < ok; j++)
		{
			int op;
			cin >> op;
			arr[i].push_back(op);
		}
	}
	int q;
	cin >> q;
	for (int i = 0; i < q; i++)
	{
		int A, B;
		cin >> A >> B;
		int cnt = 0;
		for (int i = 0; i < a; i++)
		{
			int flag = 0;
			for (int j = 0; j < arr[i].size(); j++)
			{
				if (arr[i][j] == A)
				{
					flag++;
				}
				if (arr[i][j] == B)
				{
					flag++;
				}
				if (flag == 2)
				{
					cnt++;
					break;
				}
			}
		}
		cout << cnt << endl;
	}
	

}



L2-050 懂蛇语 - 团体程序设计天梯赛-练习集

这个题目,写出来几个问题,来看第一版代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin >> n;
	vector<string>arr(n);
	vector<string>brr(n);
	getchar();
	for (int i = 0; i < n; i++)
	{
		getline(cin, arr[i]);
		brr[i] = arr[i][0];
		for (int j = 1; j < arr[i].size(); j++)
		{
			if (arr[i][j] == ' ')
			{
				while (1)
				{
					j++;
					if (arr[i][j] != ' ')
					{
						brr[i] += arr[i][j];
						break;
					}
				}
			}
		}
	}

	int q;
	cin >> q;
	getchar();
	for (int i = 0; i < q; i++)
	{
		string man;
		getline(cin, man);
		string ok;
		ok += man[0];
		for (int j = 1; j < man.size(); j++)
		{
			if (man[j] == ' ')
			{
				while (1)
				{
					j++;
					if (man[j] != ' ')
					{
						ok += man[j];
						break;
					}
				}
			}
		}

		int cnt = 0;
		vector<string>ans(0);
		for (int i = 0; i < n; i++)
		{
			if (ok == brr[i])
			{
				ans.push_back(arr[i]);
				cnt++;
			}
		}
		if (cnt == 0)
		{
			cout << man;
		}
		if (cnt == 1)
		{
			cout << ans[0];
		}
		if (cnt > 1)
		{
			sort(ans.begin(), ans.end());
			cout << ans[0];
			for (int i = 1; i < ans.size(); i++)
			{
				cout << '|' << ans[i];
			}
		}
		cout << endl;
	}

}

有以下错误:

遍历查询会爆,应该用键值对

分词的时候不要手动分用自动的;

来看修改代码:

#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
int main()
{
	int n;
	cin >> n;
	unordered_map<string, vector<string>>dip;
	getchar();
	for (int i = 0; i < n; i++)
	{
		string A;
		getline(cin, A);
		string B;                // 存储缩写
		stringstream ss(A);      // 将字符串 A 转为流
		string word;             // 临时存储每个单词
		while (ss >> word) {     // 自动按空格分词
			B += word[0];        // 取每个单词的首字母
		}
		dip[B].push_back(A);
	}
	//预处理答案:
	for (auto it : dip)
	{
		if (it.second.size() > 1)
		{
			sort(dip[it.first].begin(), dip[it.first].end());
		}
	}
	int q;
	cin >> q;
	getchar();
	for (int i = 0; i < q; i++)
	{
		string man;
		getline(cin, man);
		string ok;
		stringstream ss(man);
		string word;
		while (ss >> word)
		{
			ok += word[0];
		}
		int flag = 0;
		if (dip[ok].size() > 0)
		{
				cout << dip[ok][0];
				if (dip[ok].size() > 1)
				{
					for (int ooo = 1; ooo < dip[ok].size(); ooo++)
					{
						cout << '|' << dip[ok][ooo];
					}
				}
		}
		else
			cout << man;
		
		cout << endl;
	}

}

相关文章:

  • 项目中引入 Redis 及 常用五种数据类型
  • Django:高效构建现代Web应用的利器
  • MAC Mini M4 上测试Detectron2 图像识别库
  • 青少年编程与数学 02-016 Python数据结构与算法 19课题、矩阵算法
  • colorful一词的常见中译
  • 模版初阶及STL简介
  • 快速入手K8s+Docker+KubeSphere+DevOps
  • 基于STM32、HAL库的MAX3109ETJ总线转UART驱动程序设计
  • Python 机器学习 第6章 机器学习的通用工作流程实例
  • RAG(Retrieval-Augmented Generation)召回算法是检索增强生成模型中的关键组件
  • 扩增子分析|基于R语言microeco包进行微生物群落网络分析(network网络、Zi-Pi关键物种和subnet子网络图)
  • java中使用微服务的痛点有哪些,怎么解决
  • 哈希扩展——一致性哈希
  • vivo X200 Ultra前瞻系列(2):vivo X200 Ultra影像技术沟通会总结
  • 考研数据结构之二叉树(二):二叉树的遍历与线索二叉树(包含真题实战)
  • 人工智能基础-matplotlib基础
  • PCL 点云RANSAC提取平面(非内置函数)
  • 超越CUDA:ROCm与oneAPI在异构计算中的性能对比实验(国产GPU生态下的开发路径探索)
  • x86 保护模式中的GDT表是什么?
  • 人力资源管理方向论文怎么写?
  • 连演三场,歌剧《义勇军进行曲》在上海西岸大剧院上演
  • 美军空袭也门拘留中心,已致68人死亡
  • 十四届全国人大常委会第十五次会议在京举行,审议民营经济促进法草案等
  • 点燃“文化活火”,上海百年街区创新讲述“文化三地”故事
  • 伊朗港口爆炸已造成25人死亡,灭火行动已近尾声
  • 5月动漫|“爱死机”即将回归,《明末》或是下一个大IP?