@atcoder - AGC034E@ Complete Compress】的更多相关文章

目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 N 个点的树,编号为 1, 2, ..., N.第 i 条边连接 ai 与 bi. 再给定一个长度为 N 的 01 串,第 i 个字符表示 i 号点上是否有一个棋子. 保证至少有一个点有棋子. 你可以执行如下操作若干次: 选择两个距离 >= 2 的棋子,将这两个棋子往靠近对方的方向分别移动 1 条边. 是否可以通过若干次操作将所有棋子集中于一个点.如果…
「AGC034E」 Complete Compress 显然可以枚举根. 然后把某两棵棋子同时往深度浅的方向提,即对不存在祖先关系的两个棋子进行操作. 如果能到达那么就更新答案. 问题转化为如何判定能够到达. 考虑对于某一个节点,合法的条件是什么. 设 \(f_u\) 为以 \(u\) 为根的子树中的棋子还需要移动多少步,容易发现对于节点 \(u\) 的所有孩子 \(v\),若存在一个 \(x\) 有 \(f_x>(\sum f_v)-f_x\),那么 \(f_x\) 一定不能移动完. 然后根据…
正题 题目链接:https://www.luogu.com.cn/problem/AT4995 题目大意 \(n\)个点的一棵树,上面有一些棋子,每次可以选择两个棋子移动到他们之间的路径上相邻的点上,求最少多少步能移动到一个点上. \(n\in[1,2000]\) 解题思路 如果固定最终节点的话,这个节点\(rt\)可行的话那么答案一定是\(\frac{\sum dis(rt,x)}{2}\). 那么现在就转变为一个判定性问题,我们现在的操作变为了每次选择两个没有祖先关系的点,然后将它们往它们的…
先考虑枚举最后的点,并以其为根 首先,操作祖先-后代关系是没有意义的,因为以后必然有一次操作会操作祖先使其返回原来的位置,那么必然不如操作后代和那一个点(少一次操作) 考虑某一次操作,总深度和恰好减2,因此若有解,操作次数为深度和的一半 考虑dp,令$f_{k}$表示以$k$为根的子树经过若干次操作后,最小的深度和 考虑加入一棵以$son$为根的子树,有三种情况: 1.$f_{son}$大于之前所有子树内部节点的深度和,那么之前的子树中节点不在内部操作,全部与这棵子树抵消,剩下的深度即为$f_{…
Day2 上午 <IOI题型与趣题分析> 来源 题目 完成情况 备注 IOI2002 Day1T1 Frog 已完成 IOI2002 Day1T2 Utopia IOI2002 Day1T3 xor 已完成 提交答案 IOI2002 Day2T1 Batch IOI2002 Day2T2 Bus IOI2002 Day2T3 Rods 交互题 NEERC2002 Cricket Field POI2001 Goldmine IOI2008 Pyramid Base IOI2019 Day1T3…
[UR #20]跳蚤电话 将加边变为加点,方案数为 \((n-1)!\) 除以一个数,\(dp\) 每种方案要除的数之和即可. 点击查看代码 #include<bits/stdc++.h> using namespace std; int n; int ver[200005],ne[200005],head[100005],cnt; inline void link(int x,int y){ ver[++cnt]=y; ne[cnt]=head[x]; head[x]=cnt; } cons…
AGC034 刷了那么久AtCoder我发现自己还是只会ABCE(手动再见 A - Kenken Race 大意是一个横列,每个点可以跳一步或者跳两步,每个格子是空地或者石头,要求每一步不能走到石头或者有人的格子上,求是否能把\(A\)移动到\(C\),\(B\)移动到\(D\),\(A < C,B < D,A < B\) 看\(A\)到\(C\)和\(B\)到\(D\)的路上有没有两个连在一起的石头,有就不合法 如果\(A\)需要越过\(B\),则看\(B\)到\(D\)的路上有没有三…
The most difficult aspect of running Nettuts+ is accounting for so many different skill levels. If we post too many advanced tutorials, our beginner audience won’t benefit. The same holds true for the opposite. We do our best, but always feel free to…
If you want to compress or decompress file when writing C++ code,you can choose zlib library,that's quite easy. 1,Download zlib library's code form website:http://zlib.net/ 2,Decompress the file you've downloaded,and then go to the directory "zlib-1.…
https://beta.atcoder.jp/contests/abc103 A - Task Scheduling Problem Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement You have three tasks, all of which need to be completed. First, you can complete any one task at cos…