- 博客(14)
- 收藏
- 关注
原创 CF500 G
题意: 有一棵树,n个点,边长为1,m个询问。每个询问(x,y,u,v)表示一个人从x开始,不停的在(x,y)间往返跑,另一个人从u开始在(u,v)间往返跑,两人每秒的速度都是1,问什么时候第一次在某个节点上相遇。 n,m<=200000#include<cstring>#include<cstdlib>#include<cstdio>#include<cmath>#include<io
2017-03-31 17:39:48 377
原创 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 413
原创 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 903
原创 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 746
原创 CF500 F
题意: 给出n,p。表示n个物品,每个物品有ci,hi,ti表示花费ci,价值hi,从时刻ti开始可以买。所有物品的出售时间都是[ti,ti+p-1]。然后m个询问,每个询问ai,bi表示ai时刻去购物,有bi的钱,最大价值是多少? n<=4000 p,ti<=10000 ai,m<=20000 bi<=4000#include<cstring>#include<cstdlib>#in
2017-03-30 14:56:57 422
原创 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 856
原创 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 639
原创 AGC004 F
题意: 给出一个无向无自环无重边连通图,n个点,m条边。有黑白两种颜色,初始全白。每次操作选相邻的两个同色点,把他们变成另一种颜色。现在要将所有点变成黑色,问是否有解。如果有,问最少操作次数。 n<=10^5 m=n或m=n-1题解: 出题人脑洞好大。。先考虑树的情况,转换一下模型。 由于树是二分图,我们可以给每个点标上0或1。然后发现原操作就变成了交换两个相邻的0和1,目标是让原来为0的
2017-03-28 15:08:45 907 1
原创 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 743
原创 hdu5803
题意: 给出A、B、C、D。问有多少(a,b,c,d),满足: a+c>b+d && a+d≥b+c && 0≤a≤A && 0≤b≤B && 0≤c≤C && 0≤d≤D T≤1000 0≤A,B,C,D≤10^18题解: 一开始觉得是分类讨论,化柿子化得有点想吐。。然后看了题解,说可以数位dp,那就dp吧。。 注意10^4枚举每位太慢,转成二进制后就是2^4的了
2017-03-07 21:07:21 410
原创 hdu5798
题意: 给出一个n个数数列A,让你选一个数x,把ai变成ai xor x,使: ∑n−11|ai−ai+1|\sum_1^{n-1}|a_i-a_{i+1}|最小 n<=10^5,ai<=2^20题解: 一开始看错题了,以为每个数可以选择变不变,看题解的时候一脸懵逼。。我怎么觉得这题比5796、5797难啊 这题挺不错的,就是考虑拆开绝对值算贡献 ai和ai+1的绝对值怎么拆是在最高的一
2017-03-06 22:13:12 424
原创 hdu5797
题意: 有一个n*m的网格。对于i=1~n,给出Li,Ri,表示第i行的Li到Ri列涂成黑色。保证Li≤Li+1,Ri≤Ri+1。 问最少选多少个格子,能让每个黑色的格子,要么同一行选了至少一个格子,要么同一列选了至少一个格子。 n,m<=100题解: 贪心选最右端是错的~~反例就是 从这个栗子也可以看出,对于一行,如果我们没在这行中选,那么一定是前面的覆盖了他的前缀,后面的覆盖了他的后缀
2017-03-06 19:15:13 383
原创 hdu5796
题意: 给出n个二进制数,第i个数是ai,长度是i。然后跑这个: 又给出q个二进制数,第i个数是ci,长度是leni。再然后跑这个(代码中n其实是q): 对于每个d,问有多少个二进制位为1 n,q<=5000题解: 看懂题意后容易想到传递闭包,就是把or改成and,上bitset的话O(n332)O(\frac{n^3}{32})。似乎不是很资磁就膜了题解。。 考虑构造一颗树,节
2017-03-06 18:09:39 442
原创 bzoj3565
题意: 超能粒子炮由垂直方向从上到下共 n 个超能粒子发射管构成,编号 1~n。所有的发射管都会在开火的一瞬间同时发射出强大的超能粒子流。 为了彻底摧毁再生能力极强的邪恶宇宙怪物 CCM,地球联合军将 CCM 从上到下分为 m 个区域, 编号 1~m,分别进行打击。其中超能粒子炮的第 i 号发射管将会对准 f(i)号区域发射。f(i) 的公式如下: f(i) = (a * i + b) mod
2017-03-01 13:34:28 528
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人