Acwing第 46 场周赛【完结】

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;
}

猜你喜欢

转载自blog.csdn.net/qq_46527915/article/details/124846947