题解 [JOI 2019 Final] 独特的城市】的更多相关文章

题面 解析 首先有一个结论, 对一个点\(x\)有贡献的城市 肯定在它到离它较远的直径的端点的链上. 假设离它较远的端点是\(S\), 如果有一个点\(u\)不在\(x\)到\(S\)的链上, 却对\(x\)有贡献, 那就说明\(x\)到\(u\)的距离比\(x\)到\(S\)要长, 但根据直径的定义,这是不可能的. 接下来就要考虑怎么算答案了. 首先找出直径的两个端点, 分别作为根统计一次. 维护一个栈,栈里面是可能对\(x\)有贡献的点. 然后考虑长链剖分,求出长链和次长链. 那么对于重儿子…
题目链接: [JOI 2019 Final]独特的城市 对于每个点,它的答案最大就是与它距离最远的点的距离. 而如果与它距离为$x$的点有大于等于两个,那么与它距离小于等于$x$的点都不会被计入答案. 所以我们需要找到对于每个点$u$距离它最远的点及最小的距离$x$满足距离$u$的距离大于等于$x$的点都只有一个. 那么怎么找距离每个点最远的点? 这个点自然就是树的直径的一个端点了! 我们将树的直径先找到,然后讨论一下对于每个点,有哪些点可能会被计入答案: 如图所示,我们以点$x$为例,假设它距…
题面 解析 首先题目可以理解为把一些点放进一个框里,每个格子只能放一个. 那么显然你可以先把这个点移到框里离它最近的格子里, (这个时候格子里可以放很多个) 然后再在框里乱跑移动. 那么我们先考虑只有一行, 这时硬币只能左右移动. 于是可以开一个数组\(f[i]\)记录这个格子里有几个硬币. 但不同的一点是,桶的初始值为\(-1\). 也就是说放了一个硬币的格子的值是\(0\). 然后再从\(1\)到\(n\)遍历, 如果\(f[i]<0\)说明它需要右边的硬币移过来, 而\(f[i]>0\)…
LOJ#3014. 「JOI 2019 Final」独特的城市(长链剖分) 显然我们画一条直径,容易发现被统计的只可能是直径某个距离较远的端点到这个点的路径上的值 用一个栈统计可以被统计的点,然后我们把这棵树长链剖分,每次在所有轻儿子中找深度最大的,去掉距离u小于这个深度的栈里的点,然后去计算u的重儿子 然后去掉距离u小于重儿子深度栈里的点,但是要再把u加进去,再遍历u的其他儿子 最后重新去掉u,计算答案,用直径两端当根都做一遍,取深度较大的那个 统计的话直接在外面开一个数组,弹出弹入的时候判断…
JOI 2019 Final 合集 #3010. 「JOI 2019 Final」勇者比太郎 其实如果读懂题了就是水题了 题目就是让你求满足条件的\(JOI​\),使得\(O​\)在\(J​\)同行的右侧,\(I​\)在\(J​\)同列的左侧. 弄个前缀和什么的就好了啊.... #3011. 「JOI 2019 Final」画展 这个题是个贪心. 我们发现一定是把画框从大到小排序然后一个一个填最优是吧 而且显然我们选取的画一定是按照权值排序后的子序列. 这就随便贪一贪就好了,附上代码链接:代码…
loj 我本来是直接口胡了一个意思一样的做法的,但是因为觉得有点假+实现要用并查集(?)就卡了好一会儿... 对于一个点\(x\)来说,独特的点一定在它的最长链上,如果有独特的点不在最长链上,那么最长链上一定有和他到\(x\)距离相同的点,矛盾 然后对于一个点,最长链端点一定可以是直径的两端点之一,所以如果我们分别以树的直径的两端点为根进行dfs,那么一个点在其中一次dfs中,独特的点都会在到根的路径上,所以我们用栈维护到根的点,然后不同颜色数开桶来维护,每次压栈或弹栈时改变桶内元素个数,然后根…
题目链接 戳我 \(Solution\) 先将所有棋子移动到最近的目标点上 我们设两个变量\(ans1,ans2\)表示到目前为止这个点上可以移动棋子的数目,然后\(f[i][j]\)表示\((i,j)\)上有多少个棋子,\(ans\)为答案 如果为正表示从左边移到右边 如果为负表示从右边移到左边 我们考虑怎么维护这个东西 我们考虑一下两种大情况: 这个位置上原本有值 那么我们只要将\(ans+(f[i][j]-1)\)即可 这个位置本来没有值 我们考虑三种情况,我们以一行为例,其余的一行同理…
[题解]LOJ2759. 「JOI 2014 Final」飞天鼠(最短路) 考虑最终答案的构成,一定是由很多飞行+一些上升+一些下降构成. 由于在任何一个点上升或者下降代价是一样的,所以: 对于上升操作来说,只要保证前面飞行合法就不需要上升.当且仅当我飞不过去了才上升. 对于下降操作来说,只要我不会越过目标点就不需要下降.当且仅当我会越过目标点才下降. 也就是说,上升和下降操作是不需要手动进行决策的,不存在一种更优解使得这种解通过提前上升或者下降来使得时间花费缩短.因为假设存在一种"更优解&qu…
题目列表:https://loj.ac/problems/search?keyword=JOI+2018+Final T1 寒冬暖炉 贪心 暴力考虑每相邻两个人之间的间隔,从小到大选取即可 #include<iostream> #include<string.h> #include<string> #include<stdio.h> #include<algorithm> #include<math.h> #include<ve…
「JOI 2017 Final」JOIOI 王国 题目描述 题目译自 JOI 2017 Final T3「 JOIOI 王国 / The Kingdom of JOIOI」 JOIOI 王国是一个 HHH 行 WWW 列的长方形网格,每个 1×11\times 11×1 的子网格都是一个正方形的小区块.为了提高管理效率,我们决定把整个国家划分成两个省 JOI 和 IOI . 我们定义,两个同省的区块互相连接,意为从一个区块出发,不用穿过任何一个不同省的区块,就可以移动到另一个区块.有公共边的区块…