洛谷 [语言月赛 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😭

浙公网安备 33010602011771号