zoukankan      html  css  js  c++  java
  • 自闭的D7

    先是一道**题然后我死了啊。

    A:

    哇人人都会我不会系列。 我们可以运用逆向思维啊,把它转化成若干个人从点1进来, 然后我们考虑深度 dep,用 num[dep] 表示深度大于等于这个点的有多少个,

    这样子我们会发现  对于每一个 dep,答案就是 dep+num[dep]-1,因为第一个走过来需要dep步,后面每一个1步就够了,答案就是所有dep取max。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 1e5+5;
     4 int a[N],n,x,y;
     5 vector<int>g[N];
     6 int f[N],dep[N];
     7 void dfs(int v,int fa,int d){
     8     dep[v] = d;
     9     for(auto u:g[v]){
    10         if(u==fa)
    11             continue;
    12         dfs(u,v,d+1);
    13     }
    14 }
    15 int main(){
    16     ios::sync_with_stdio(false);
    17     cin>>n;
    18     for(int i=1;i<=n;i++) cin>>a[i];
    19     for(int i=1;i<n;i++){
    20         cin>>x>>y;
    21         g[x].push_back(y);
    22         g[y].push_back(x);
    23     }
    24     dfs(1,1,0);
    25     for(int i=1;i<=n;i++){
    26         if(a[i])
    27             f[dep[i]]++;
    28     }
    29     for(int i=n;i>=1;i--){
    30         f[i]+=f[i+1];
    31     }
    32     int mx = 0;
    33     for(int i=1;i<=n;i++) {
    34         if(a[i])
    35             mx = max(f[dep[i]]+dep[i]-1,mx);
    36     }
    37     cout<<mx<<endl;
    38 }
    39 /**
    40 5
    41 0 1 0 1 0
    42 1 2
    43 1 3
    44 3 4
    45 4 5
    46  */
    View Code

    E:

    哇怎么是个人都会啊...好像自从我拿到衣服之后就开始疯狂降智了,,,不过这几天同步赛神仙变多了...话说我的T恤为什么还没来?

    我觉得好难啊...看的别人的题解

    https://blog.csdn.net/CaprYang/article/details/86659607

    这个我觉得还是很好理解的...主要是代码可读性很强啊...雾

    要记住是 从set里被删除才算一次插入才会标记,所以不能用pq,当然也有用优先队列的,,,还没看懂就是了...

    F:哇我听课听了些卜啊,今晚再补叭

    J:我不配与你们同台竞技,我退役了.哇这谁顶得住啊自闭了,不会。

  • 相关阅读:
    用__new__ 创建单例模式
    函数的列表作为默认参数
    循环闭包函数打印列表
    斐波那契函数和回调函数
    类的共享属性
    字典和format用法
    python 面试大全: 01_类变量在内部是作为字典处理的
    git 学习删除某次提交
    mysql调优
    re模块
  • 原文地址:https://www.cnblogs.com/MXang/p/10326056.html
Copyright © 2011-2022 走看看