Acwing第 48 场周赛完结
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Acwing第 48 场周赛完结相关的知识,希望对你有一定的参考价值。
https://www.acwing.com/activity/content/1698/
目录
4410. 吃鸡蛋【模拟】
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int st[N],n,m,ans;
int main(void)
cin>>n>>m;
for(int i=1;i*m<=1e3;i++) st[i*m]=1;
for(int i=1;i<N;i++)
if(st[i-1]) ans++;
else
if(n) n--,ans++;
else break;
cout<<ans;
return 0;
4411. 三仙归洞【找周期】
#include<bits/stdc++.h>
using namespace std;
int a[15][15]=
0,1,2,
1,0,2,
1,2,0,
2,1,0,
2,0,1,
0,2,1,
;
int main(void)
int n,x; cin>>n>>x;
n=n%6;
cout<<a[n][x];
return 0;
4412. 构造数组【思维】
思维你会发现,将这些区间合并。答案==2^(区间个数-1)
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const int N=1e5*2+10;
const int mod= 998244353;
int a[N],n;
map<int,vector<int>>mp;
int main(void)
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) mp[a[i]].push_back(i);
vector< pair<int,int> >ve;
for(auto i=mp.begin();i!=mp.end();i++)
auto temp=i->second;
ve.push_back(temp[0],temp[temp.size()-1]);
sort(ve.begin(),ve.end());
int l=ve[0].first,r=ve[0].second;
int cnt=1;//区间合并,看有多少个不相交的区间
for(int i=1;i<ve.size();i++)
int j=i,temp=-1;
while(j<ve.size()&&ve[j].first<r) temp=max(temp,ve[j].second),j++;
if(temp!=-1) r=temp,i=j-1;
else cnt++,l=ve[i].first,r=ve[i].second;
LL sum=1;
for(int i=2;i<=cnt;i++) sum=sum*2%mod;
cout<<sum;
return 0;
以上是关于Acwing第 48 场周赛完结的主要内容,如果未能解决你的问题,请参考以下文章