首页 > 其他分享 >牛客周赛 Round 8

牛客周赛 Round 8

时间:2024-06-08 20:43:43浏览次数:10  
标签:周赛 leq int dfs Round 牛客 权值 st 节点

D 小美的树上染色

题目描述

小美拿到了一棵树,每个节点有一个权值。初始每个节点都是白色。
小美有若干次操作,每次操作可以选择两个相邻的节点,如果它们都是白色且权值的乘积是完全平方数,小美就可以把这两个节点同时染红。
小美想知道,自己最多可以染红多少个节点?

输入描述

第一行输入一个正整数\(n\),代表节点的数量。
第二行输入\(n\)个正整数\(a_i\),代表每个节点的权值。
接下来的\(n-1\)行,每行输入两个正整数\(u,v\),代表节点\(u\)和节点\(v\)有一条边连接。
\(1\leq n \leq 10^5\)
\(1\leq a_i \leq 10^9\)
\(1\leq u,v \leq n\)

输出描述

输出一个整数,表示最多可以染红的节点数量。

解题思路

直接按照题意模拟,用dfs暴力搜索即可

代码实现

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
vector<int> g[N];
int st[N],w[N];
int ans;
void dfs(int u,int fa){
    for(auto x:g[u]){
        if(x==fa){
            continue;
        }
        dfs(x,u);
        if((int)sqrt(w[u]*w[x])*(int)sqrt(w[u]*w[x])==w[u]*w[x]&&(!st[x]&&!st[u])){//判断染色条件
            ans+=2;
            st[x]=1;
            st[u]=1;
        }
    }
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>w[i];//权值
    }
    for(int i=0;i<n-1;i++){
        int u,v;
        cin>>u>>v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    dfs(1,-1);
    cout<<ans;
    return 0;
}

标签:周赛,leq,int,dfs,Round,牛客,权值,st,节点
From: https://www.cnblogs.com/udiandianis/p/18238925

相关文章

  • GLaMM : Pixel Grounding Large Multimodal Model
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract大型多模态模型(LMM)将大语言模型扩展到视觉领域。最初的LMM使用整体图像和文本提示词来生成无定位的文本响应。最近,区域级LMM已被用于生成视觉定位响应。然而,它们仅限于一次仅引用单个目标类别,要求用户指定......
  • Codeforces Round 951 (Div. 2)
    A题没什么好说的。B题目读懂了基本就会了。首先很明显,如果x和y的某一位不一样,那这两位异或同一个数字自然也是不一样的。所以要做的就是找到二进制里面最长的连续相同的数量。这个时候看看样例,148全是2的整数次方,33554432,计算器算一下,发现居然也是。那就非常明显了。直接......
  • WPF button mouseover background change color
    <Applicationx:Class="WpfApp142.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-nam......
  • Codeforces Round 950 (Div. 3)G. Yasya and the Mysterious Tree(字典树处理区间异或
    Problem-G-Codeforces存个字典树板子。1#include<bits/stdc++.h>23usingi64=longlong;45constexprintN=1E7;67inttrie[N][2];8intcnt[N][2];910inttot=0;11intnewNode(){12intx=++tot;13trie......
  • Codeforces Round 949 (Div. 2)D. Turtle and Multiplication(欧拉路径、线性筛、思维
    Problem-D-Codeforces  按照官方正解做即可,顺带存个jiangly板子。1#include<bits/stdc++.h>23usingi64=longlong;4std::vector<int>minp,primes;56voidsieve(intn){7minp.assign(n+1,0);8primes.clear();910......
  • Codeforces Round 950 (Div. 3) A B C D E
    A.ProblemGeneratortimelimitpertest:1secondmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputVladisplanningtoholdm......
  • Codeforces Round 951 (Div. 2)
    A.GuesstheMaximum题意:给定一个数组,求一个k值,k满足对于任意的这个数组的区间的最大值max,k<max。求满足条件的最大k。思路:只考虑长度为2的区间即可。参与到比较中的数值一定是两个数中的大数,从所有大数中选出最小的一个即可。总结:赛时很快就A掉了,但是思考的不够细节,思维太......
  • codeforces round 961题解(A、B、C)
    A.GuesstheMaximum因为\(i<j\),所以所有的\([i,j]\)区间中都至少包含两个相邻元素,所以只要求出所有相邻元素中较大值的最小值即可。intn;inta[N];voidsolve(){cin>>n;intmin_v=1e9+1;for(inti=1;i<=n;i++){cin>>a[i];......
  • 活动预热丨在 AGI Playground 2024 遇见一群 RTE+AI 的 Builders
    6月22、23日,北京。 AGIPlayground2024,这个夏日最火热的AGI盛会。 王小川、杨植麟等AGI创业者悉数参加。 RTE开发者社区的builders和RTEOpenDay也将在现场! 我们将为大家呈现两大板块:01实时开发挑战WorkshopRTE开发者社区将联合「零一万物」发起w......
  • CodeForces Round #951(Div. 2) 补题记录(A~D)
    A容易发现对于任意一个长度为\(n\),下标从\(1\)开始的序列\(a\),若\(1\lel\ler<n\),则必然有\(\max\limits_{i=l}^ra_i\le\max\limits_{i=l}^{r+1}a_i\)。若\(1<l\ler\len\),则必然有\(\max\limits_{i=l}^ra_i\le\max\limits_{i=l-1}^ra_i\)。很显然Bob希望......