Acwing第 59 场周赛完结
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Acwing第 59 场周赛完结相关的知识,希望对你有一定的参考价值。
题目难度较简单,思维题为主。
https://www.acwing.com/activity/content/competition/problem_list/2015/
目录
4491. 数组操作 【思维】
#include<bits/stdc++.h>
using namespace std;
const int N=1e5*10;
typedef long long int LL;
int a[N],s[N],temp,n;
int main(void)
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],s[i]=s[i-1]+a[i],temp=min(temp,s[i]);
cout<<s[n]-temp;
return 0;
4492. 减法操作【思维】
质数的话,一步数到位。偶数的话次数就是除以2。其他情况则是因子都是质奇数。
那么暴力的找最小的减,此时一个奇数-一个奇数。结果就变偶数了下一步就直接一步到位了。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5*10;
typedef long long int LL;
LL n,cnt;
void solve(LL n)
while(n)
if(n%2==0)
cnt+=n/2;
break;
for(LL i=3;i<=n;i+=2)
if(n%i==0)
cnt++;
n-=i;
break;
bool check(LL n)
if(n==1) return true;
for(LL i=2;i<=n/i;i++) if(n%i==0) return false;
return true;
int main(void)
cin>>n;
if(check(n)) cout<<1<<endl;
else solve(n),cout<<cnt<<endl;
return 0;
4493. 环形连通分量【找干净的环】
cf的某次的原题,当时的做法忘了咋做了。又写了一种写法。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5*5+10;
int p[N],st[N],d[N],n,m;
int find(int x)
if(x!=p[x]) p[x]=find(p[x]);
return p[x];
vector< pair<int,int> >ve;
int main(void)
cin>>n>>m;
for(int i=1;i<=n;i++) p[i]=i;
int cnt=0;
while(m--)
int a,b; cin>>a>>b;
d[a]++,d[b]++;
ve.push_back(a,b);
for(int i=1;i<=n;i++) if(d[i]>2) st[i]=1;//标记为坏的
for(int i=0;i<ve.size();i++)
int a=ve[i].first,b=ve[i].second;
if(find(a)==find(b)&&!st[find(a)]) cnt++;//是一个环 且无多余的边
else
if(st[find(a)]) st[find(b)]=1;//合并前将好坏合并
p[find(a)]=find(b);
cout<<cnt;
return 0;
以上是关于Acwing第 59 场周赛完结的主要内容,如果未能解决你的问题,请参考以下文章