正解是二叉堆
by waioi_lin @ 2022-08-07 19:01:47
AC 代码,可以参考
```c
#include <cstdio>
#include <queue>
#include <string>
#include <iostream>
using namespace std;
priority_queue<string, vector<string>, greater<string> > q;
bool check(string s, string s2)
{
for(int i=0;i<s2.size();i++)
{
if(s[i]!=s2[i])
return 0;
}
return 1;
}
int main()
{
int n;
string s, s2, t;
scanf("%d", &n);
while(n--)
{
cin>>s;
q.push(s);
}
cin>>t;
while(!q.empty())
{
s2=q.top();
if(check(s2, t))
cout<<s2<<endl;
q.pop();
}
return 0;
}
```
by waioi_lin @ 2022-08-07 19:02:15
其实这只是一个小根堆
by waioi_lin @ 2022-08-07 19:04:57
```cpp
这样也行
#include<bits/stdc++.h>
using namespace std;
string s[100005],a;
int main()
{
int n,i;
cin>>n;
for(i=1;i<=n;i++)
cin>>s[i];
cin>>a;
sort(s+1,s+n+1);
for(i=1;i<=n;i++)
if(s[i].find(a)<1)
cout<<s[i]<<'\n';
return 0;
}
```
by FanSizhe127 @ 2022-08-10 13:20:25