不来也不去的一只失忆蝴蝶

曾迷途才怕追不上满街赶路人

[agc005f]Many Easy Problems

前言居然有FFT题。题目大意给你一棵树,对于每个k求出在树上任选k个点形成虚树大小的和。做法假设这是有根树。 考虑一个点i对于一个k的贡献,考虑容斥。 Ckn−∑j是i儿子Cksize[j]−Ckn−size[i]C_n^k-\sum_{j是i儿子}C_{size[j]}^k-C_{n-siz...

2017-10-31 10:52:10

阅读数:380

评论数:0

[agc005e]Sugigma: The Showdown

前言要知道怎么判-1,接下来就好办许多了。题目大意一个有红边和蓝边的图,只保留红边或蓝边都是一颗树。 现在A和B初始都在一个点上,轮流进行,A先操作。 A每次可以不动或沿着相邻的红边走到另一节点。 B类似,但只能走蓝边。 A和B相遇游戏结束。 A要最大化游戏时间,B要最小化游戏时间,若A...

2017-10-31 10:46:38

阅读数:367

评论数:0

[agc005d]~K Perm Counting

前言简单的容斥DP题。题目大意有多少排列对于每个位置i都满足|ai−i|!=k|a_i-i|!=k容斥当然是经典容斥问题了。 假如钦定某些位置不满足条件,其可以往前或后连。 发现只有模k相同的互相有影响。 不妨先做一个状压dp,f[i,j,s]表示有i个点,有j个点有出度(也就是j个不满足条...

2017-10-31 10:38:28

阅读数:395

评论数:0

[agc005c]Tree Restoring

前言简单题,数据范围可能是吓人的。题目大意给你每个点到最远点的距离,求是否存在这样的一颗树。简单一个性质是每个点的最远点一定是直径的端点。 然后我们找出直径长度,要求能构造出这条直径(每种距离都有2个点,当然直径中心只需要1个)。 然后其余点都可以直接接在直径上,因此到最远点的距离不能少于直径...

2017-10-31 10:31:44

阅读数:278

评论数:0

[agc004f]Namori

前言这题好牛逼啊。题目大意给你一颗全白的树或环套树。 你每次可以选择一条连接两个同色点的边,将两个端点反色。 问变成全黑的最小步数,要求判断无解。树的做法树是一个二分图,看起来很棒的样子。 我们不妨设深度为奇数(根的深度为1)的点是一个空位,而深度为偶数的点有一个硬币。 我们发现,一次操作...

2017-10-30 15:26:34

阅读数:331

评论数:0

[agc004e]Salvage Robots

前言本题的关键是想到让出口和矩形动,而不是机器人动,只要记录出口的位移矩形,便可以知道哪个区域的机器人已经飞出去了。题目大意一个网格图,有若干机器人,还有一个出口。 操作一系列指令让机器人上下左右,走出矩形就死,进入出口则得救。 最多救多少机器人?DP不妨认为矩形和出口会动。 我们设f[u,...

2017-10-30 15:04:29

阅读数:371

评论数:1

[agc004d]Teleporter

前言贪心题,我一开始想错了,最终算法其实很简单。题目大意n个点形成环套树,改变最少数量的点的出边,使得任意点出发走k步能走到1。 初始满足任意点能走到1。做法显然1一定要自环。 然后可以贪心了,自下往上做,满k要断出边。 详见代码。#include<cstdio> #includ...

2017-10-30 14:53:58

阅读数:252

评论数:0

[agc004c]AND Grid

前言构造题,我又不是很会…… 太蠢了。题目大意给你一个网格图,有一些格子涂了紫色。 请你构造出两个网格图,其中一个都涂了红色,且四联通,另一个都涂了蓝色,且四联通。 要求紫色的位置必须红和蓝,其余都不能同时涂红和蓝。 保证边界没有紫色。做法不看边界奇数都涂红,偶数都涂蓝。 然后对于红图第...

2017-10-30 14:49:22

阅读数:249

评论数:0

[agc003f]Fraction of Fractal

做法注意到上下左右都联通答案是1,都不连通答案是黑格数的次幂。 判掉后发现只有一边联通很好做,矩阵乘法上就行了。#include<cstdio> #include<algorithm> #define fo(i,a,b) for(i=a;i<=b;i++) usin...

2017-10-27 10:15:20

阅读数:292

评论数:0

[agc003e]Sequential operations on Sequence

前言利用了经典性质的题。题目大意有一个数字串S,初始长度为n,是1 2 3 4 …… n。 有m次操作,每次操作给你一个正整数a[i],你先把S无穷重复,然后把前a[i]截取出来成为新的S。 求m次操作后,每个数字在S中出现的次数。做法考虑这样一个过程,solve(x,l)表示在第x次操作后的...

2017-10-27 10:12:21

阅读数:402

评论数:0

[agc003d]Anticube

前言简单贪心,最难的部分居然是分解质因数。题目大意从一个10^10的数列里选出最多的数,使两两乘积不为立方数。做法把每个数最简表示,即每个质因数的指数都模3。 还要求出这个最简数的补数,也就是满足最简的与其乘积为立方数的数。 对于数列中一个数集团和它的补数集团,贪心的选择较大的那个。 如果一...

2017-10-27 10:04:50

阅读数:461

评论数:0

[agc002f]Leftmost Ball

前言小清新计数题。题意n种颜色每种颜色有k个球(这n种颜色不含白色),排成一行,把每种颜色第一个球涂成白色。 问颜色序列方案数。DP要求任意后缀0的个数不比颜色种类数多。 不妨设dp表示f[i,j]已经用了i种颜色,放了i-j个0。 每次可以在最前面放0。 也可以新加一种颜色,为了不计重最...

2017-10-26 09:45:44

阅读数:244

评论数:0

[agc002e]Candy Piles

前言这次我做博弈题开始根据特殊态猜测必胜态,失败了。 这个模型转换还是有点厉害的。题目大意很多堆石子,两人游戏。 每次可以取走数量最多的那堆石子的全部石子,或取走每堆各一个石子。模型转换我们把一堆石子想象成一个石子个数*1的矩形。 把矩形从高到低排列变成一个图形。 我们每次可以删除最低下一...

2017-10-26 09:42:02

阅读数:168

评论数:0

Astar百度之星2017转圈记

DAY 0坐飞机+坐车真累。 欢迎晚宴非常尬。 百度事情非常多。 拍mv是不是凉了?DAY 1如何30min从起点到起点。 坐车dfs到目的地。 强行比预计晚2h开始了比赛。 题目是贪吃蛇大作战。 第一阶段我主要在搞懂给我发的那些示例代码。 枚举类型是啥,不会啊。 咋编译啊。 ...

2017-10-25 14:20:11

阅读数:604

评论数:0

[agc002d]Stamp Rally

前言简单套路题。题目大意一副连通图,每次询问从两个点x和y出发走出两条路径,希望至少经过一次的点数量等于z,经过的边最大编号最小是多少。简单题假如可以暴力,你可以按编号从小到大加入边,如果x和y不在一个联通块,能经过的点等于两个所在联通块大小的和,否则等于所在联通块大小,找到第一次大于等于z的位置...

2017-10-21 11:44:06

阅读数:334

评论数:0

[agc008d]K-th K

前言简单构造,一开始看错题瞎写了一发。题目大意给了一个长度为n的序列x。 请构造一个长度为n*n的序列a,只包含1~n这n个元素,每个元素出现n次,且对于元素i,a的第xi个位置是元素i,且前xi个位置恰好有i个i。构造显然可以正反各贪心一遍,不懂就看程序,正确性显然。 瞎填以后还可以n^3验...

2017-10-19 17:15:16

阅读数:210

评论数:0

[agc009e]Eternal Average

前言需要发现性质的dp。 重点在于发现性质。题意请构造若干k叉树,使得每颗均有n+m个叶子,有n个叶子点权为0,m个叶子点权为1,对于非叶子点权为儿子点权的平均数。 问最多构造多少k叉树,使得任意两颗根节点点权不同?DP令n个叶子的深度为x1~xn,同理m个叶子的深度为y1~ym。 发现根节...

2017-10-19 16:13:59

阅读数:442

评论数:0

[agc009d]Uninity

前言我居然一开始觉得点分治最优秀。题目大意类似点分治过程,只不过分治中心任意选择。 求点分树最小深度。做法首先直接点分治深度不超过log,所以答案上界是log。 假设我们给每个点一个标号表示它在点分树的深度。 那么我们发现,对于两个标号同为k的点,它们的路径上一定存在一个点的标号大于k。 ...

2017-10-18 21:48:33

阅读数:506

评论数:0

[agc009c]Division into Two

前言DP题,还可以,不是很难。题目大意把一堆互不相同的数分成两个集合X和Y,其中一个集合X任意两数之差不小于A,另一集合Y任意两数之差不小于B。 问方案数,集合可以为空。DP把这些数排序。 接着添加第0个数无穷小以及第n+1个数无穷大。 我们假设A>=B。 设f[i]表示分配好了前i...

2017-10-17 22:19:06

阅读数:173

评论数:0

[agc009b]Tournament

前言简单题。题目大意若干轮比赛,每个人在某一轮可以参赛,和另外一个人pk,输的人淘汰。 最后1是冠军,已知其余每个人输给了谁,请问最少设置多少轮比赛?做法你显然可以根据每个人输给了谁建一颗树,然后处理f[x]表示x淘汰所有输给他的人所需要的最小轮数。 转移很简单,根据儿子的f排序,然后详见代码...

2017-10-17 22:12:40

阅读数:206

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭