首页 > 其他分享 >B. Christmas Spruce

B. Christmas Spruce

时间:2024-05-16 18:40:42浏览次数:21  
标签:int dfs next flag Spruce now Christmas dp

原题链接

题解

犯了对变量定义不清晰的错误

code

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[300005]={0};
vector<int> G[1005];
int dp[1005]={0};//当前节点的叶子节点的数量
int flag=1;
void dfs(int now)
{
    for(auto next:G[now])
    {
        dfs(next);
        dp[now]+=(G[next].size()==0);//判断叶子节点
    }
    flag&=(dp[now]>=3||G[now].size()==0);
}
int main()
{
    int t=1;
    //cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        for(int i=2;i<=n;i++)
        {
            int x;
            cin>>x;
            G[x].push_back(i);
        }

        dfs(1);
        puts(flag?"Yes":"No");
    }
    return 0;
}

标签:int,dfs,next,flag,Spruce,now,Christmas,dp
From: https://www.cnblogs.com/pure4knowledge/p/18196516

相关文章

  • CF1846D Rudolph and Christmas Tree 题解
    因为\(n\)个三角形有重叠部分,所以我们可以倒序处理每个三角形,并对其进行分类讨论:若当前三角形编号为\(n\),则直接将总面积加上\(\dfrac{d\timesh}{2}\)。否则,再次分出两种情况:若当前三角形的\(y_i+h>y_{i+1}\)(即编号为\(i,i+1\)的三角形有重叠),则如下图所示:......
  • ABC334G Christmas Color Grid 2
    第一次AKabc,写篇题解记录一下。原题传送门分析发现实际上是要求删去每个绿点之后会多出几个连通块。发现这跟割点的定义很像,于是考虑建图,在相邻的绿点之间连边。然后就只要知道每个点到底被包含在几个点双里。我们使用圆方树,此时就只需要统计每个点的度数就可以了。代码#in......
  • ABC334F Christmas Present
    非常好dp,使我线段树旋转。原题传送门分析首先由于两点之间直线线段最短,我们肯定是希望从头一直送到尾,最后回家。但是有了\(k\)的限制,就麻烦了。考虑一个dp。我们设\(dp[i]\)表示刚送完第\(i\)个孩子时所要跑的最短距离。转移的时候我们枚举上一次回家是在送完哪一个孩......
  • E - Christmas Color Grid 1
    E-ChristmasColorGrid1https://atcoder.jp/contests/abc334/tasks/abc334_e思路https://www.cnblogs.com/Lanly/p/17923753.htmlCodehttps://atcoder.jp/contests/abc334/submissions/49243194inth,w;bools[1005][1005];intc[1005][1005];//c-classlongl......
  • B - Christmas Trees
    B-ChristmasTreeshttps://atcoder.jp/contests/abc334/tasks/abc334_b 思路对于起始种树点A在[L,R]区间的位置情况,三种A<LA>RA>=L,A<=R Codehttps://atcoder.jp/contests/abc334/submissions/48822474LLa,m,l,r;intmain(){cin>>a>&g......
  • [ABC334E] Christmas Color Grid 1 题解
    题目传送门一道dfs题。先统计出绿连通块数量,然后对于每个红色方块统计涂成绿色方块后会变成多少个连通块。正常涂成绿色后应该会增加一个大小为\(1\)的绿连通块,但若是有不同的绿连通块与其相邻,答案又会减少\(1\)。Code#include<bits/stdc++.h>constlonglongIMX=1......
  • AtCoder Beginner Contest 334 G Christmas Color Grid 2
    洛谷传送门AtCoder传送门考虑相当于把每个标记点的边全部断掉,然后求连通块个数。考虑一条边\((u,v)\)(设\(u<v\))的出现时间,不难发现是\([1,u-1]\cup[u+1,v-1]\cup[v+1,n]\)。于是考虑直接套线段树分治和可撤销并查集。时空复杂度均为\(O(n^2\logn)\)......
  • 题解 ABC334G【Christmas Color Grid 2】
    先求出初始时绿连通块数量。将一个绿色格子染成红色,会改变绿连通块数量,当且仅当这个绿色格子是孤点或割点。如果是孤点,会使得绿连通块数量减少一;如果是割点,会使得绿连通块数量增加它所在的点双数量减一。根据上述规则可以求出每个绿色格子染红后的绿连通块数量,求平均值即可。时......
  • 题解 ABC334F【Christmas Present 2】
    设\(f_i\)表示假设只有编号为\(1\simi\)的点,此时的答案。\(f_n\)即为所求。显然有:\[f_i=\min\limits_{i-k\lej<i}\{f_j+dis(s\toj+1\toj+2\to\cdots\toi)\}+dis(i\tos)\]当\(i\toi+1\)时,大括号内部全局增加\(dis(i\toi+1)\),可以全局打标记后单调队列维护。......
  • 题解 ABC334E【Christmas Color Grid 1】
    先求出初始时绿连通块数量。枚举每个红色格子,将其染成绿色本应增加一个绿连通块,但是它每与一个绿连通块相邻,就又会减少一个绿连通块。根据上述规则可以求出每个红色格子染绿后的绿连通块数量,求平均值即可。时间复杂度\(O(nm)\)。//Problem:E-ChristmasColorGrid1//Co......