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 场周赛完结的主要内容,如果未能解决你的问题,请参考以下文章