首页 > 其他分享 >CF1914F Programming Competition

CF1914F Programming Competition

时间:2023-12-20 11:38:08浏览次数:37  
标签:hson CF1914F int siz Programming Competition son MAXN include

原题链接

感觉有点类似 agc034e Complete Compress,但那题比这个难得多。

定义 \(f_x\) 为以 \(x\) 为根的子树中,尽可能组队后最多剩下多少人,\(siz_x\) 为子树大小。

记 \(y\in son(x)\) 中 \(f_y\) 最大的点为 \(hson_x\)。

当 \(\sum\limits_{y\in son(x),y\not=hson_x} siz_y < f_{hson_x}\) 时,说明即使其他子树中的人都来跟 \(hson_x\) 子树中的点配对,也无法配对完,还是会剩下 \(f_{hson_x}-\sum\limits_{y\in son(x),y\not=hson_x} siz_y\) 即 \(f_{hson_x}-(siz_x-1-siz_{hson_x})\) 个人。

否则就是尽可能可以配对完,那么这时会剩下 \((siz_x-1)\bmod 2\) 个人。证明考虑每次选出所有剩余 \(f_y\) 中最大的两个,一起 \(-1\),这样就相当于最后只会剩 \(0\sim 1\) 个 \(1\),就等于 \(siz_x-1\) 的奇偶性。

最后要使 \(f_x\) 加上 \(x\) 自己。综上

\(f_x=\begin{cases} f_{hson_x}-(siz_x-1-siz_{hson_x})+1 & f_hson_x>(siz_x-1-siz_{hson_x}) \\ (siz_x-1)\bmod 2 +1 & f_hson_x\leq (siz_x-1-siz_{hson_x}) \end{cases}\)

答案为 \(\dfrac{n-f_{root}}{2}\)。

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int MAXN=2e5+10;
int t,n,fa[MAXN],siz[MAXN],f[MAXN],hson[MAXN];
vector <int> v[MAXN];
void dfs(int x)
{
    for(int y:v[x])
    {
        dfs(y),siz[x]+=siz[y];
        if(f[y]>f[hson[x]]) hson[x]=y;
    }
    if(f[hson[x]]>siz[x]-siz[hson[x]])
        f[x]=f[hson[x]]-(siz[x]-siz[hson[x]]);
    else f[x]=(siz[x]&1);f[x]+=1,siz[x]+=1;return ;
}
int main()
{
#ifdef ONLINE_JUDGE
    cin.tie(0),cout.tie(0);
    ios::sync_with_stdio(0);
#endif
    cin>>t;
    while(t--)
    {
        cin>>n;
        for(int i=2;i<=n;++i)
            cin>>fa[i],v[fa[i]].push_back(i);
        dfs(1);cout<<(n-f[1])/2<<'\n';
        for(int i=1;i<=n;++i)
            v[i].clear(),fa[i]=siz[i]=f[i]=hson[i]=0;
    }
    return 0;
}

标签:hson,CF1914F,int,siz,Programming,Competition,son,MAXN,include
From: https://www.cnblogs.com/int-R/p/CF1914F.html

相关文章

  • (15-418)Lecture 3 Parallel Programming Abstractions
    抽象VS实现实例:ISPC程序ISPC是一种SPMD(singleprogrammultipledata)编译器。利用ISPC编写的计算sin(x)的程序如下图:ISPC提供了一种抽象,当调用ISPC函数时(即程序中调用sinx的语句),会产生一个gang,这个gang含有多个ISPC实例,每个实例会执行自己的代码,当每个实例都执行完后,恢复原先......
  • 2023 China Collegiate Programming Contest (CCPC) Guilin Onsite (The 2nd Universa
    题解:https://files.cnblogs.com/files/clrs97/2023Guilin_Tutorial.pdf Code:A.EasyDiameterProblem#include<bits/stdc++.h>usingnamespacestd;constintN=300;constintmod=1e9+7;typedefpair<int,int>pii;vector<pair<int,int......
  • Toyota Programming Contest 2023#8(AtCoder Beginner Contest 333)
    ToyotaProgrammingContest2023#8(AtCoderBeginnerContest333)A-ThreeThrees代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e6+10;typedefpair<ll,ll>pii;#definefifirst#definesesecondvoid......
  • docker启动容器报错:Error response from daemon: driver failed programming external
    安装的docker启动报错如下:Errorresponsefromdaemon:driverfailedprogrammingexternalconnectivityonendpointnacos(2b0f4edff8f640559af9626936d1b38d965302ef525af483716e8e8c9121583e):(iptablesfailed:iptables--wait-tnat-ADOCKER-ptcp-d0/0--dp......
  • 《Function Programming in C++》
    说明《FunctionalProgramminginC++》书中代码练习测试以及一些笔记,部分代码需要用到C++20可以使用在线编译器编译代码地址:https://coliru.stacked-crooked.com/或者自己编译gcc-11.2及以上版本安装1介绍1.1什么是函数式编程用常用的函数范式模板代替一些循环等,比如std......
  • 2023 CCPC Henan Provincial Collegiate Programming Contest
    Preface徐神在训练前宣称要复习计通网,结果最后还是相当于全程参与了我们的训练这场我纯纯战犯表现,Easy题E狂挂7发最后发现原来是多测没清空干净,直接红温占用中期1h机时但好在祁神稳切了一手压轴计算几何,同时最后2h把卡着的题都过完了,最后又靠着题数捧杯(唉还在打弱省省赛找自信)......
  • Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331)
    DaiwaSecuritiesCo.Ltd.ProgrammingContest2023(AtCoderBeginnerContest331)A-Tomorrow解题思路:模拟。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;typedefpair<int,int>pii;#definefifirst#definesesecondcons......
  • The Main Idea of Basic Dynamic Programming Side A
    Front对zjk的BasicDynamicProgrammingSideA的补充、总结以及Code。SideA:DP状态设计。常见的DP状态树树上DP常见的状态是考虑子树内的情况,然后通过子树的状态向上合并。复杂度一般是\(O(n^3)\),一些特殊的DP转移方程通常可以通过分析优化掉一个\(n\)。......
  • Programming Abstractions in C阅读笔记:p196
    《ProgrammingAbstractionsinC》学习第63天,p196总结。涉及到编程之外的知识,依然是读起来很费劲,需要了解作者在书中提到的人物(EdouardLucas)、地点(Benares)、神话传说(Brahma)等等。虽然深知自己做不到对人文知识,历史知识精通,但也希望能记住,从而在下次遇到的时候能够阅读下去,......
  • The 13th Shandong ICPC Provincial Collegiate Programming Contest
    A.Orders按照订单的结束时间排序,然后遍历一遍即可#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongusingpii=pair<int,int>;usingi32=int32_t;voidsolve(){intn,k;cin>>n>>k;vector<pii>p(n);f......