1 条题解

  • 0
    @ 2025-11-19 16:38:50

    E70 树形DP+二分 P3554 POI2013 LUK-Triumphal arch

    // 树形DP+二分 O(nlogn)
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    const int N=300005;
    int idx,head[N];
    struct E{int v,ne;}e[N<<1];
    void add(int x,int y){
      e[++idx]={y,head[x]};
      head[x]=idx;
    }
    int n,f[N],mid;
    
    void dfs(int u,int fa){
      for(int i=head[u];i;i=e[i].ne){
        int v=e[i].v;
        if(v==fa) continue;
        dfs(v,u);
        f[u]+=f[v]+1;
      }
      f[u]=max(f[u]-mid,0);
    }
    int main(){
      scanf("%d",&n);
      for(int i=1,x,y;i<n;i++){
        scanf("%d%d",&x,&y);
        add(x,y); add(y,x);
      }
      int l=-1,r=n;
      while(l+1<r){
        memset(f,0,sizeof(f));
        mid=(l+r)>>1; 
        dfs(1,0);
        if(!f[1]) r=mid;
        else l=mid;
      }
      printf("%d\n",r);
    }
    
    • 1

    「POI2013 R2」凯旋门 Triumphal arch

    信息

    ID
    5085
    时间
    5000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    3
    已通过
    2
    上传者