atcoder
la1la1la_
i am single
展开
-
AGC005 E
题意: n个点,n-1条红边,n-1条蓝边。红边构成一棵树,蓝边构成一棵树。开始时,A在点x,B在点y。两人轮流操作,A先手。A可以不动或沿红边走,B可以不动或沿蓝边走。当A、B走到同一个点时游戏结束。A想玩的尽量久,B想尽量快。问会进行多少轮,无限输出-1。 n<=200000题解: 先把以y为根把B的树建出来。对于A的一条边(x,y),x和y在B的树上距离>2,如果A走到x或y之前或下一轮原创 2017-03-29 11:43:46 · 652 阅读 · 0 评论 -
AGC003 E
题意: 有一个长度为n的序列,初始为1~n。m个操作,每个操作ai表示把当前序列复制无限次,然后取前ai个数作为新序列。问最终序列里1~n各出现多少次。 n,m<=10^5 ai<=10^18题解: 感觉做法很不显然,真不知道出题人怎么想的。。 最开始先取一次n,方便处理。 发现如果ai>=ai+1a_i>=a_{i+1}那么ai是无效的,把序列变成严格上升的。 然后令t[i]为第i原创 2017-03-28 09:25:55 · 757 阅读 · 0 评论 -
AGC005 D
题意: 给出n,k,问有多少个长度为n的排列满足abs(ai−i)!=kabs(a_i-i)!=k。 n<=2000 1<=k<=n-1#include<cstring>#include<cstdlib>#include<cstdio>#include<cmath>#include<iostream>#define N 2100#define mmod 924844033usin原创 2017-03-29 15:17:16 · 870 阅读 · 0 评论 -
AGC006 E
题意: 有3行n列的格子,里面的数是1~3n。每次可以选一个3*3的格子旋转180度。给出初始状态,问能不能变成第i行第j列是3*(j-1)+i的状态。 n<=100000#include<cstring>#include<cstdlib>#include<cstdio>#include<cmath>#include<iostream>#include<algorithm>#defi原创 2017-03-30 20:08:54 · 759 阅读 · 0 评论 -
AGC006 D
题意: 给出一个长度为2*n-1的排列,将除了头尾两个数变为相邻3个数的中位数,重复n-1次。 像这样 问最上面的数字是多少。 n<=100000#include<cstring>#include<cstdlib>#include<cstdio>#include<cmath>#include<iostream>#define N 210000using namespace s原创 2017-03-30 22:02:34 · 920 阅读 · 0 评论 -
AGC006 C
题意: 从前数轴上有n只兔子,第i只的位置在xi。定义一个set包含m个操作,每个操作ai表示第ai只兔子在ai+1a_{i+1}和ai−1a_{i-1}中等概率选一只兔子,记为x,然后跳到关于x的对称点。问进行k个set的操作后,每只兔子的期望位置。 n,m<=100000 k<=10^18 xi<=10^9 2<=ai<=n-1#include<cstring>#include<cs原创 2017-03-31 08:59:40 · 426 阅读 · 0 评论 -
AGC004 F
题意: 给出一个无向无自环无重边连通图,n个点,m条边。有黑白两种颜色,初始全白。每次操作选相邻的两个同色点,把他们变成另一种颜色。现在要将所有点变成黑色,问是否有解。如果有,问最少操作次数。 n<=10^5 m=n或m=n-1题解: 出题人脑洞好大。。先考虑树的情况,转换一下模型。 由于树是二分图,我们可以给每个点标上0或1。然后发现原操作就变成了交换两个相邻的0和1,目标是让原来为0的原创 2017-03-28 15:08:45 · 937 阅读 · 1 评论 -
AGC007 E
题意: 给出一棵n个节点树,除了叶节点,每个节点恰好有两个孩子。边上有边权。第一天根开始走,每天选一个叶节点,从当前点走到叶节点,最后一天走回根节点。要求每条边经过两次,每个叶节点被选一次。花费就是除了第一天和最后一天走的路程最远那一天的路程。问最小花费。 2< n< 131,072#include<cstring>#include<cstdlib>#include<cstdio>#inc原创 2017-04-02 10:17:46 · 725 阅读 · 0 评论