Acwing第 12 场周赛未完结

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Acwing第 12 场周赛未完结相关的知识,希望对你有一定的参考价值。

3803. 数组去重 【难度: 一般 / 知识点: 模拟】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const int inf=0x3f3f3f3f;
int a[N];
int main(void)
{
    int t; cin>>t;
    while(t--)
    {
        int n; cin>>n;
        map<int,int>mp;
        for(int i=0;i<n;i++) cin>>a[i],mp[a[i]]++;
        cout<<mp.size()<<endl;
        for(int i=0;i<n;i++)
        {
            if(mp[a[i]]==1) cout<<a[i]<<" ";
            else mp[a[i]]--;
        }
        cout<<endl;
    }
	return 0;
}

3804. 构造字符串 【难度: 一般 / 知识点: 贪心 模拟】


用一个vector来保存一下字符的集合。
如果要构造的字符串长于给定的字符串,直接前面一样,后面补最小的字母即可。
如果构造的字母要短于,给定的字符,则直接前面一模一样,然后从后往前依次遍历集合找到可以替换的即可。
替换过后,后面的都用最小的字母来补齐。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const int inf=0x3f3f3f3f;
int t,n,k;
map<char,int> mp;
string s;
string dfs(int n,int k,vector<char> ve)
{
	string ans=s;
	if(k<=n)
	{
	    bool flag=false;
	    ans=s.substr(0,k);
	    int index=0;
	    for(int i=ans.size()-1;i>=0;i--)
	    {
	        for(int j=0;j<ve.size();j++)
	        {
	            if(ve[j]>ans[i])
	            {
	                ans[i]=ve[j];
	                flag=true;
	                index=i;
	                break;
	            }
	            if(flag) break;
	        }
	        if(flag) break;
	    }
	    for(int i=index+1;i<ans.size();i++) ans[i]=ve[0];
	    return ans;
	}
	else
	{
	    for(int i=1;i<=k-n;i++) ans+=ve[0];
	    return ans;
	}
}
int main(void)
{
    cin>>t;
    while(t--)
    {
        cin>>n>>k;
        cin>>s;
        vector<char> ve;
        for(int i=0;i<s.size();i++) 
        {
        	if(mp[s[i]]) continue;
        	else ve.push_back(s[i]),mp[s[i]]++;
        }
        sort(ve.begin(),ve.end());
        
        string ans=dfs(n,k,ve);
        cout<<ans<<endl;
        
        mp.clear(); 
        s.clear();
    }
	return 0;
}

以上是关于Acwing第 12 场周赛未完结的主要内容,如果未能解决你的问题,请参考以下文章

Acwing第 70 场周赛未完结

Acwing第 70 场周赛未完结

Acwing第 70 场周赛未完结

Acwing第 65 场周赛未完结

Acwing第 65 场周赛未完结

Acwing第 65 场周赛未完结