洛谷 [语言月赛 202508] 共享航班 题解

这道题我感觉我有点小题大作了,我的思路就是先拿一个map进行映射(这里可以用哈希表map,因为我们只要映射),接下来拿set存储,去重(联盟),接着找一下剩下的里面有没有满足条件的,输出即可
代码展示:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n,m;
	cin>>n>>m;
	unordered_map<string,int> mp;
	for(int i=0;i<m;i++)
	{
		int c;
		cin>>c;
		for(int j=0;j<c;j++)
		{
			string pf;
			cin>>pf;
			mp[pf]=i;
		}
	}
	set<tuple<int,string,string,string>> st;
	int ans=0;
	for(int i=0;i<n;i++)
	{
		string fl;
		cin>>fl;
		vector<string> v;
		{
			stringstream ss(fl);
			string t;
			while(getline(ss,t,'-'))v.push_back(t);
		}
		string cd=v[0];
		string dp=v[1];
		string ds=v[2];
		string tm=v[3];
		string al=cd.substr(0,2);
		if(mp.count(al))
		{
			int ai=mp[al];
			st.insert(make_tuple(ai,dp,ds,tm));
		} 
		else ans++;
	}
	cout<<st.size()+ans;
	return 0;
}

这道题把我硬控1h😭

posted @ 2025-08-25 14:58  CCCsuper  阅读(29)  评论(3)    收藏  举报
萌ICP备20256293号