Cf D. Nauuo and Circle】的更多相关文章

https://codeforces.com/contest/1173/problem/D 题意: 给出你一个包含 n 个点的树,这 n 个点编号为 1~n: 给出一个圆,圆上放置 n 个位置,第 i 个位置对应树中的某个节点,并且不重复: 求在圆上还原这棵树后,使得边不相交的总方案数: 学习出:https://www.cnblogs.com/violet-acmer/p/10991346.html #include<bits/stdc++.h> using namespace std; ty…
D. Nauuo and Circle •参考资料 [1]:https://www.cnblogs.com/wyxdrqc/p/10990378.html •题意 给出你一个包含 n 个点的树,这 n 个点编号为 1~n: 给出一个圆,圆上放置 n 个位置,第 i 个位置对应树中的某个节点,并且不重复: 求在圆上还原这棵树后,使得边不相交的总方案数: •题解 ①为何每一颗子树一定是连续的一段圆弧? 假设不是连续的圆弧,如图所示: 为了使 x 接到树上,必然会有 x-y 或 x-z 相连的边,这样…
Codeforce 1172 B. Nauuo and Circle 解析(思維.DP) 今天我們來看看CF1172B 題目連結 題目 略,請直接看原題 前言 第一個該觀察的事情一直想不到,看了解答也想很久才知道為什麼對... 想法 這題的重點是要想到:一個節點\(u\)的所有子節點子樹必須佔據一整個連續的圓弧,否則如果有另外一個非子節點子樹在這些子節點子樹中間,那麼必定有另一個在\(u\)這棵子樹外的點連接過來,但是\(u\)最少必須連接被分開的兩個子節點區段,那麼一定會有交叉. 接下來就是自…
链接 [cf]http://codeforces.com/contest/1175/problem/F) 思路 当1在1的位置做dp[i]为i的子树所有的方案. 一条性质是i的子树所占圆上的位置一定一段连续的. 那\(f[i]\)的方案就是$(son[i]+(i!=1))!\prod\limits_{x \in i }f[x] $ 其实就是$n*\prod\limits_{i=1}^{n}ru[i]! $ 代码 #include <bits/stdc++.h> using namespace…
原题传送门 题意:在圆上有n个节点(珂以构成凸多边形),让你给节点编号,使得将题目给你的边(一棵树)没有交叉 我们钦定1为这个树的根节点.任意节点\(x\)的一颗子树的点应该是圆弧上连续的一段(我也不知道我当时怎么就从HNOI2019d1t3多边形yy到这道题了),所以就是要将一段序列划分成\(siz[x]+1\)段,这个节点的贡献就是\(A_{siz[x]+1}^{siz[x]+1}\).因为父子之间排序方案数互不干扰,所以最后答案就是所有节点贡献的乘积(根节点要特判,因为在一个环上,不能直接…
题目:http://codeforces.com/contest/1172/problem/E LCT好题. 考虑对每个颜色求出 “不是该颜色的点组成的连通块的 siz2 之和” .每个颜色用 LCT 维护不是该颜色的点. LCT 维护的一个连通块,其最顶端的点是该颜色,其他部分满足 “不是该颜色” :再维护子树的 siz2 ,就能做了. 注意代码里的 p[ ] 要开 2*n 那么大!!! #include<cstdio> #include<cstring> #include<…
这次是中国大佬出题,结果被虐惨了. A. Nauuo and Votes #include<bits/stdc++.h> #define Rint register int using namespace std; typedef long long LL; int x, y, z; int main(){ scanf("%d%d%d", &x, &y, &z); ) puts("-"); ) puts("+"…
Codeforces Round #564 (Div. 1) A Nauuo and Cards 首先如果牌库中最后的牌是\(1,2,\cdots, k\),那么就模拟一下能不能每次打出第\(k+i\)张牌. 然后考虑每一张牌打出后还要打多少张牌以及这张牌是什么时候入手的,分别记为\(f_i,g_i\),那么答案就是\(f_i+g_i\)的最大值. #include<bits/stdc++.h> #define qmin(x,y) (x=min(x,y)) #define qmax(x,y)…
A. Circle of Students time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output There are…
题目传送门 题解: 先观察蚂蚁相撞, 可以发现, 如果我们将相撞的2个蚂蚁互换位置的话,蚂蚁相当于没有碰撞体积,直接穿过去了.所以我们可以直接计算出最终哪些位置上会有蚂蚁. 接下来就需要知道蚂蚁们的最终是走到哪个位置上. 需要先明白的是, 蚂蚁的相对位置是不会发生变化的,他的左边和右边的蚂蚁是不会发生改变的. 我们通过记录顺时针第一只蚂蚁是什么编号. 假设X是第一只蚂蚁的编号. 如果有一只蚂蚁从 m-1 的位置走到 0 的位置,那么X会变成 X - 1. 如果有一只蚂蚁从 0 的位置走到 m-1…