https://www.acwing.com/problem/content/4399/
4396. 取石子【签到】
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
int n1,n2,k1,k2; cin>>n1>>n2>>k1>>k2;
if(n1<=n2) puts("Second");
else puts("First");
return 0;
}
4397. 卡牌【贪心】
#include<bits/stdc++.h>
using namespace std;
const int N=1e5*4+10;
int a[N],b[N],n,k;
bool cmp(pair<int,int> a,pair<int,int> b)
{
return (a.first-a.second)>(b.first-b.second);
}
int main(void)
{
cin>>n>>k;
int m=n-k,sum=0;
for(int i=0;i<n;i++) cin>>a[i],sum+=a[i];
for(int i=0;i<n;i++) cin>>b[i];
vector< pair<int,int> >ve;
for(int i=0;i<n;i++)
if(a[i]>b[i]) ve.push_back({
a[i],b[i]});
sort(ve.begin(),ve.end(),cmp);
for(int i=0;i<min((int)ve.size(),m);i++)
sum-=ve[i].first,sum+=ve[i].second;
cout<<sum;
return 0;
}
4398. 查询字符串【哈希表】
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
map<string,int>mp,st;
string s[N];
int main(void)
{
int n; cin>>n;
for(int i=0;i<n;i++) cin>>s[i];
for(int i=0;i<n;i++)
{
map<string,int>cnt;
for(int j=0;j<s[i].size();j++)
{
for(int k=1;j+k-1<s[i].size();k++)
{
string temp=s[i].substr(j,k);
if(!cnt[temp])
{
mp[temp]++;
st[temp]=i;
cnt[temp]++;
}
}
}
}
int m; cin>>m;
while(m--)
{
string a; cin>>a;
cout<<mp[a]<<" ";
if(mp[a]) cout<<s[st[a]]<<'\n';
else cout<<"-"<<'\n';
}
return 0;
}