当前位置:网站首页>Acwing第 58 场周赛【完结】

Acwing第 58 场周赛【完结】

2022-07-05 02:37:00 辉小歌

没打,赛后vp了一下题目好简单。
15min做完
https://www.acwing.com/activity/content/competition/problem_list/1994/、

4488. 寻找1【签到】

#include<bits/stdc++.h> 
using namespace std;
int main(void)
{
    
	int n,x,flag=0;
	cin>>n;
	while(n--) 
	{
    
		cin>>x;
		if(x) flag=1;
	}
	if(flag) puts("YES");
	else puts("NO");
	return 0;
}

4489. 最长子序列【贪心 / 双指针】

在这里插入图片描述

#include<bits/stdc++.h> 
using namespace std;
const int N=1e5*3+10;
int n,a[N]; 
int main(void)
{
    
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	int cnt=1,last=1,ans=1;
	for(int i=2;i<=n;i++)
	{
    
		if(a[i]<=a[last]*2) cnt++,last=i;
		else last=i,cnt=1;
		ans=max(ans,cnt);
	}
	cout<<ans;
	return 0;
}

4490. 染色【思维】

在这里插入图片描述
画图,你会发现只要其颜色和父亲颜色不一样就加1.

#include<bits/stdc++.h> 
using namespace std;
const int N=1e5*3+10;
int h[N],e[N],ne[N],idx;
int w[N],n,cnt=1;
void add(int a,int b)
{
    
	e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs(int u,int fa)
{
    
	if(fa!=-1&&w[u]!=w[fa]) cnt++;
	for(int i=h[u];i!=-1;i=ne[i])
	{
    
		int j=e[i];
		if(j==fa) continue;
		dfs(j,u);
	}
}
int main(void)
{
    
	memset(h,-1,sizeof h);
	cin>>n;
	for(int i=2;i<=n;i++)
	{
    
		int x; cin>>x;
		add(x,i),add(i,x);
	}
	for(int i=1;i<=n;i++) cin>>w[i];
	dfs(1,-1);
	cout<<cnt; 
	return 0;
}
原网站

版权声明
本文为[辉小歌]所创,转载请带上原文链接,感谢
https://huixiaoge.blog.csdn.net/article/details/125591541