Acwing第 40 场周赛完结

Posted 辉小歌

tags:

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

这把打的很烂,T2想的时间有点慢还wa了一发。
T3吃完饭后来写的,想到了dfs,不过最后一个点没过,debug到结束才搞出来。
总结,太废物了掉大分

目录

4305. 斐波那契字符串【签到】

#include<bits/stdc++.h>
using namespace std;
int n,f[50];
map<int,int>mp;
int main(void)

    f[1]=1,f[2]=1,mp[1]++;
    cin>>n;
    for(int i=3;i<=30;i++) f[i]=f[i-1]+f[i-2],mp[f[i]]++;
    for(int i=1;i<=n;i++)
    
        if(mp[i]) cout<<"O";
        else cout<<"o";
    
	return 0;

4306. 序列处理【贪心】


只能加,故直接排序模拟即可。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*2+10;
int n,a[N],mp[N];
vector<int>ve;
int main(void)

    cin>>n;
    for(int i=1;i<=n;i++) 
    
        cin>>a[i];
        if(mp[a[i]]) ve.push_back(a[i]);
        mp[a[i]]++;
    
    sort(ve.begin(),ve.end());
    int sum=0;
    for(int i=0;i<ve.size();i++)
    
        while(mp[ve[i]]) sum++,ve[i]++;
        mp[ve[i]]++;
    
    cout<<sum;
	return 0;

4307. 数字重构【dfs】

#include<bits/stdc++.h>
using namespace std;
int n,m,t,flag;
int cnt[105];
string s1,s2,ans;
bool cmp(char a,char b)return a>b;
void dfs(string s,int index)

    if(cnt[s2[index]-'0'])//选这一位
    
        string temp;
        temp+=s2[index]; cnt[s2[index]-'0']--;
        for(int i=0;i<=9;i++)
            for(int j=0;j<cnt[i];j++) temp=temp+to_string(i);
        temp=s+temp;
        if(temp<s2) dfs(s+s2[index],index+1);//最小的和小于b
        if(temp==s2) ans=s2,flag=1;//相等
        else cnt[s2[index]-'0']++;//最小的都大于b
    
	if(flag) return;
    for(int i=s2[index]-'0'-1;i>=0;i--) 
    
        if(cnt[i])
        
            s+=to_string(i);
            cnt[i]--;
            for(int k=9;k>=0;k--)
                for(int j=0;j<cnt[k];j++) s=s+to_string(k);
            ans=s;
            flag=1;
            break;
        
    

int main(void)

    cin>>s1>>s2;
    if(s1.size()<s2.size())
    
        sort(s1.begin(),s1.end(),cmp);
        cout<<s1;
        return 0;
    
    if(s1==s2)
    
        cout<<s1;
        return 0;
    
    for(int i=0;i<s1.size();i++) cnt[s1[i]-'0']++;
    dfs("",0);
    cout<<ans;
	return 0;

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

Acwing第 53 场周赛完结

Acwing第 31 场周赛完结

Acwing第 36 场周赛完结

Acwing第 56 场周赛完结

Acwing第 32 场周赛完结

Acwing第 59 场周赛完结