自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

  • 博客(836)
  • 收藏
  • 关注

原创 [agc019c]Fountain Walk

前言这是一道比较简单的题。 但是我没想好答案增大的情况,所以我一开始觉得细节讨论有点麻烦。。题目大意不想说,看网站做法先通过一系列翻转交换等满足x1<=x2,y1<=y2。 我们注意经过温泉有减少答案(走1/4圆) 和增加答案(走1/2圆)两种。 我们不希望增加答案,希望尽量减少答案。 由于减少答案很少,矩形边长很大,因此我们不能为了走温泉绕弯路,只能向右向上走。 然后对这个矩形内的点按

2017-10-10 21:33:58 732

原创 [agc018f]Two Trees

前言好题题目大意两颗树。 给每个节点赋一个权值,使得两颗树的任意子树点权和的绝对值为1。构造我们先来判断无解。 绝对值为1意味着模2等于1。 可以根据这点确定每个点在两棵树中的点权奇偶性。 存在矛盾即无解。 如果不存在矛盾,我们可以开始构造。 首先i在第一棵树的编号就是i,在第二棵树是i+n。 原树的边先不动,我们增加一个节点s向两个根节点连边。 对于一个i,如果其点权为奇数,我们就

2017-10-10 19:41:16 896

原创 [agc018d]Tree and Hamilton Path

前言做过类似的idea题。题目大意给你一棵树,然后你需要找到一个n的排列[,使得 ∑n−1i=1dis(pi,pi+1)\sum_{i=1}^{n-1}dis(p_i,p_{i+1}) 最大,输出答案即可。做法假设p1=s,pn=t。 我们提取重心作为根。 设sum为深度和。 答案为2∗sum−dep[s]−dep[t]−∑n−1i=1dep[lca(pi,pi+1)]2*sum-dep[

2017-10-07 16:16:40 766

原创 [agc017f]Zigzag

前言DP题,我当然不会啦。题目大意请你找到m个n位二进制数,对于相邻两个,i+1的前j位的和不小于i的前j位的和。 此外还有对于某个二进制数某位必须是几的若干个限制。DP很容易想到设dp[i,s]表示做到第i个二进制数第i个是s,每次枚举前一个,复杂度很大。 转移复杂度太大了,我们来尝试优化。 如果可以不用枚举前一个就好了。 那么不如让前一个对着当前的改变吧! 设dp[i,j,s]表示做到

2017-10-06 16:42:10 586

原创 [agc017d]Game on Tree

前言现在看到游戏题居然已经不会sg了。题意以1为根的树,两人轮流操作,每次切掉一个子树,不能操作者输。sg函数首先容易用归纳法证明一颗树上接一个节点的sg值相当于原来+1。 然后你注意到一颗树可以拆分成若干颗儿子上接一个节点,等价于原来的游戏。 于是就是简单的组合游戏题了。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a

2017-10-06 10:47:59 982

原创 [agc016f]Games on DAG

前言感觉是简单DP。 肯定是状压。 然后你只需要想到按照mex划分即可。题意一个有向无环图,求有多少边集的子集组成的图,使得sg1 xor sg2>0sg_1\ xor\ sg_2>0DP正难则反,考虑使1和2sg值相等。 设dpsdp_s表示只考虑s这个点集的答案(可以不包含1和2)。 我们把s划分为A和B,其中B是mex最小的点集,那么A中每个点至少要连向B一条边,B中点可以随意连向A,

2017-10-05 21:50:15 899

原创 [agc016e]Poor Turkeys

前言感觉不是很难。 虽然一开始想着是废掉的缩点。 仔细想想又没有这样实现的道理。题意n个人。 有m个按时间的暗杀行动。 第i次请杀手杀ai和bi,如果都活着杀手按照心情杀一个,都死了就不杀,只活一个杀死活的那个。 问m次暗杀过后有多少对人可能都存活?题解考虑按时间倒着来。 如果你想要x存活,每当遇到与x有关的,又会出现新的应该存活的。 我们称为存活集合。 每次一个两端均不在存活集合的

2017-10-05 20:48:54 1001

原创 [agc016d]XOR Replace

前言本题不是很难。 重点是发现操作的本质。题意一个序列,一次操作可以将某个位置变成整个序列的异或和。 问最少几步到达目标序列。做法假设异或和为x。 你发现若干次操作相当于把原来一些位置做置换(假设有k个作置换,需要k+1步)。 当然在最后一次操作,如果刚好有一个元素和x一致,只需要k步,不需要再换回来。 你发现这就是一个置换拆分问题,置换越少越好。 同时我们发现对于ai=bia_i=b_

2017-10-05 20:03:16 1353

原创 [agc016c]+/- Rectangle

前言对着样例构造乱搞过了QAQ题意构造一个n*m的矩阵,每个元素在-1e9~1e9间,每一个大小为h*w的子矩阵和是负数,而整个矩阵的和是正数。构造如果n是h的倍数且m是w的倍数,那么整个矩阵恰好分成若干个h*w的子矩阵,既然每个都是负数,和怎么可能是正数? 然后我们可以设一个d(d是常数比4000小就行然后尽量大比如2000),对于一个(ih,jw),我们填上-(hw-1)d-1,其余位置填上d

2017-10-05 17:00:10 640

原创 [agc016b]Colorful Hats

前言简单的讨论题。题意n个人每个人戴着一种颜色的帽子。 第i个人说看到了ai种颜色的帽子(自己不能看到自己戴的帽子)。 问是否全部都在说真话?做法假设一共有k种颜色的帽子。 一个独一无二的颜色会说k-1其余说k。 如果最大的ai减最小的ai大于1一定有假话。 然后考虑最大值不等于最小值的情况。 对于说k-1的当然都独一无二,剩余的颜色每种至少分配给两个人。 如果最大值等于最小值,有两种

2017-10-05 16:27:47 410

原创 [agc015f]Kenus the Ancient Greek

前言结论题我只能orz。 题解错了很不舒服。题意找到(n,m)以内点对欧几里得步数最大的点对个数。做法设f(a,b)表示欧几里得步数。 我们先设斐波那契数F0=1,F1=1,Fi+2=Fi+1+FiF_0=1,F_1=1,F_{i+2}=F_{i+1}+F_i 容易发现f(Fk,Fk+1)=kf(F_k,F_{k+1})=k。 结论一:如果f(x,y)=kf(x,y)=k,且x<yx<y,则

2017-10-05 16:00:44 984

原创 [agc015e]Mr.Aoki Incubator

前言看错题好久,怨念极深。 主要就是推染红的条件。 将速度排序是关键。 然而本题最重要的是证明区间不包含,然后做法可以很显然的得到。题意数轴上许多黑点,每个点都有一个方向向右的正速度。 当两个点在同一个位置上重合时,若其中一个是红色,另一个也变成红色。 保证没有相同速度或初始坐标。 现问你有多少方法染红一些点,使得无穷久后所有点都被染红。做法观察一个点i染红后,哪些点j会被染红? 1、

2017-09-28 22:30:38 955

原创 [agc015d]A or...or B Problem

前言一开始想着按二进制位倒着推统计贡献,每次讨论四种情况。 推着推着就发现了结论。 然而还是想复杂了。 直接值域就好了嘛。题意用若干个(至少一个)[A,B]中的数进行or操作能得到多少本质不同的数?做法先找到A和B最高一个不同的二进制位,设为d。 因为我菜下面我们都假设A是较大数。而且因为我懒接下来都用小写。 我们可以根据第d位是0还是1划分两类数。有1的是第一类数。 我们找到a第二个有

2017-09-28 22:18:38 768

原创 [agc14e]Blue and Red Tree

前言这题主要是要想到倒过来,是一个很唯一的过程。 我大概想到了,但我比题解蠢。 题解的不需要区分红蓝让我觉得很机智。题意有一颗全是蓝边的树,你对其执行n-1次操作。 每次操作选择一条全是蓝边的路径,将其中的一条蓝边断开,假设选择的路径是j->k,断的边是x-y,且断开后j和x联通,那么k和y联通。 然后你需要选择j->x上的一个节点,以及k->y上的一个节点,在这两个节点间连红边。 现在问

2017-09-27 22:13:12 432

原创 [agc015c]Nuske vs Phantom Thnook

前言一开始想了无特殊性做法。 后来才用到树的性质QAQ题目大意一个蓝白网格图,保证蓝格子连成森林。 每次选取一个子矩阵问蓝联通块个数。做法森林联通块数=点数-边数。 于是很好做。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=

2017-09-27 22:05:44 433

原创 [agc014d]Black and White Tree

前言看到这种题直觉是树的最大匹配,如果是比赛直接打毫无疑问。 然后证明了一下也不是很难的样子。 主要是见过类似套路吧。题意两个人轮流给树上节点染色。 先手涂白色,后手涂黑色。 如果最后树上存在一个白色点,与其相连的没有黑点,先手胜,否则后手胜。 请你判断先手必胜还是后手必胜。博弈我们先给出结论:后手要赢,这颗树要有完美匹配。 首先充分性显然,有完美匹配,先手涂什么成白色,你把匹配点涂黑,

2017-09-26 21:09:50 1092 3

原创 [agc013e]Placing Squares

前言这题啃了好久啊。 一开始就知道要解决子问题,但没想到是模型转换,只是对着式子乱搞,推了好久(中途推出了一个隔项斐波那契数列)然而最后证实我式子推错了(菜醒.jpg) 于是膜拜了题解的模型转换。题意给你一个大小为m的集合S,S中不包含n。 现在对于一个正整数序列a1−aka_1-a_k,如果不存在sis_i属于集合S就是合法的,s表示a的前缀和。 这样的序列贡献是Πki=1a2i\Pi_{

2017-09-26 17:40:02 821

原创 [agc006c]Rabbit Exercise

前言一开始看成随机跳一个兔子让我感觉不可思议,于是很难。 如果理解对题意,相信这题不难做。题意n只兔子在数轴上。 有m种操作,每种操作找到一个编号的兔子,再随机选择一个编号和其相邻的兔子,然后让该兔子的位置改为与这只相邻编号兔子的对称位置。 问最后每个编号兔子位置的期望值。做法很容易发现可以用每次操作兔子的期望位置直接代替原位置,因此每次相当于xi=xi+1+xi−1−xix_i=x_{i+1

2017-09-25 22:08:22 616

原创 [agc013d]Piling Up

前言一开始写了个naive的dp发现方案数跟初始放球无关只和颜色序列有关所以我算重了。 然后想到了强制到达0,但发现会算漏(因为0会卡下界)。 然后想到加上强制到达1就不卡下界了,但发现还是会算重(如果这个方案没有执行某种转移)。 最终弄出来才觉得这种“简单dp”题的精髓还是挺秒的。题意在箱子里放n个球,有黑白两色。 执行m轮操作: 抓箱子里一个球堆在塔顶。 往箱子里放入一个黑球和一个白

2017-09-23 16:49:38 1157

原创 [agc012e]Camel and Oases

前言很容易的就发现了只有log次跳跃。 然后状压DP。 似乎就是个简单题吧(怎么比12c还简单)题意一排点,两点间有距离。 初始你有一个行走值v,如果相邻两点距离不超过v你可以自由在这两点行走。 当v大于0时,你可以选择某一时刻突然飞到任意点,这样做后v会减半(下取整)。 问从每个位置初始出发能否到达所有位置。DP预处理left[i,j]表示在i行走值已经减半j次能往左走到哪,同理有rig

2017-09-23 11:19:45 679

原创 IOI2018精英培训计划

清华集训: 清华集训给修记 集训队作业: cnt:104(+11)/104(+52) atc部分: agc001_d √ agc001_e √ agc002_d √ agc002_e √ agc002_f √ agc003_d √ agc003_e √ agc003_f √ agc004_c √ agc004_d √ agc004_e √ agc004_f √ ag

2017-09-22 22:05:47 2770

原创 [agc012d]Colorful Balls

前言做这题时感觉肯定是有一堆球允许重排的,要求找到每种颜色这些球的个数,其余球大概都是固定的,应该不复杂。 大概思路也确实就是这样。不过需要仔细讨论。 有一个很重要的性质当然是a和b如果都能和c对换,a和b也是可以对换的。题意n个球,每个都有颜色和重量。 对于两个同颜色的球,如果重量和在x以内可以交换位置。 对于两个不同颜色的球,如果重量和在y以内可以交换位置。 问颜色序列的方案数。做法一

2017-09-22 22:04:03 744 1

原创 [agc012c]Tautonym Puzzle

前言怎么wxh随手秒的傻逼题我看了好多眼啊。 对于这种题我感到措手不及,因为这样的题我一般只会两种方法。 一种是分离构造,将答案序列分成若干个互不相干的部分,答案是这些部分答案的和。 那么只要我能想到如何简单构造一个部分即可。 可惜我这样想长度怎么都爆。 另一种是倍增构造,但是想了好久都不知道如何不长度*2的把答案*2。 这就很GG了。 最后总结一下我的想题过程,这样的题还是朝着二进制

2017-09-21 22:15:37 589

原创 [agc013c]Ants on a Circle

题目大意数轴蚂蚁问题升级成环。做法如果是数轴是经典问题: 两只蚂蚁相遇后掉头可以看做代替对方继续前行。 相对位置永远不变。 初始坐标刚好递增。 但是现在是环,注意到每当有蚂蚁跨过L-1或0就会使排名进行右/左移。 因此也很方便了。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using na

2017-09-21 20:56:44 968

原创 [codechef]WEASELTX

题目大意有一颗点权树。 每过一天,就会自上而下更新,更新的含义是点权变成子树内点权异或和。 若干个询问询问第d天根节点的点权。分析很显然深度相同的可以缩在一起。 我们设a[i][j]表示第i天深度为j的节点点权是否会给根节点带来影响。 容易发现a[i][j]=XORj−1k=0a[i−1][k]a[i][j]=XOR_{k=0}^{j-1} a[i-1][k] 也就是a[i][j]=a[i

2017-09-16 10:28:03 613

原创 [agc001d]Arrays and Palindrome

题目大意给定你a序列,请你重排它并构造一个b序列。 使得两个序列元素和均为n。 对于一个长度为n的字符串,满足如果前a[1]个是回文串,接下来a[2]个是回文串……且前b[1]个是回文串,接下来b[2]个是回文串……那么这个字符串处处相同。构造题我打了下表猜想了一下。 2个奇数无解。 否则奇数放首尾。 b就是第一个+1,最后一个-1,其余照抄。#include<cstdio>

2017-09-15 22:36:41 885 2

原创 [agc001e]BBQ hard

题目大意给你a[]和b[],权值范围在2e3内。 求∑n−1i=1∑nj=i+1Cai+ajai+aj+bi+bj\sum_{i=1}^{n-1}\sum_{j=i+1}^nC_{a_i+a_j+b_i+b_j}^{a_i+a_j}做法你考虑Cba+bC_{a+b}^b的组合意义其实是从(0,0)走到(a,b)每次只能向上和向右有多少走法。 因此这个魔幻的式子其实相当于(0,0)走到两个向量和的

2017-09-15 22:12:05 678

原创 生命之树

题目大意ansu=∑i在u子树中∑j在u子树中且i<j(vi xor vj)∗LCP(Si,Sj)ans_u=\sum_{i在u子树中}\sum_{j在u子树中且i<j}(v_i\ xor\ v_j)*LCP(S_i,S_j) 每个点都有点权v和一个字符串S,求ans[]。做法可以想到把v拆位做于是现在变成了黑白树。 可以想到dsu on tree,trie上节点记录子树内某个颜色的数量即可。

2017-09-15 21:56:49 386

原创 [CF750G]New Year and Binary Tree Paths

题目大意一颗无穷个节点的完全二叉树,编号满足线段树分配。 求有多少条树上的简单路径编号和为s?结论从根节点到一个编号为x的节点,到根编号和为2x-bitcount(x)。 用归纳法证明。 我们尝试枚举这条简单路径两个节点到lca分别的距离为a和b,设lca为x。 首先一定有x∗(2a+1+2b+1−3)x*(2^{a+1}+2^{b+1}-3)的编号和。 然后我们尝试把x子树所有编号都去掉

2017-09-14 17:20:04 553

原创 n根号n解决在线无修区间逆序对问题

做法带log的分块相信大家都会,今天我们来讲讲不带log。 首先先离散化,这样值域就变成n了。 我们以根号为阈值分块,然后我们记A->B的含义是将A和B两个序列拼接在一起有多少逆序对两个元素一个来自A另一个来自B。 首先考虑如何求A->B,可以发现A和B的内部顺序是没有关系的,因此如果我们把A和B排好序了,运用归并即可线性求得A->B。 现在我们先把每个块排序,然后预处理一个位置到块头的逆序

2017-09-14 17:04:43 3186

原创 健美猫

题目大意旋转序列s使得∑ni=1|si−i|\sum_{i=1}^n|s_i-i|最小做法大致思路是可以拆绝对值记录个数即贡献,顺着扫,对于一个位置有两个位置很关键。 (我都不知道我在说什么#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace

2017-09-11 22:29:35 716

原创 春思

题目大意求a^b的约数和。基础题分解出a的质因数即可,然后算等比数列和可以倍增。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;typedef long long ll;const int mo=9901;ll i,j,k,l

2017-09-11 22:27:23 420

原创 [LibreOJ β Round #4]求和

题目大意∑ni=1∑mj=1μ2((i,j))\sum_{i=1}^n\sum_{j=1}^m\mu^2((i,j))反演∑ni=1μ(i)∗∑n/id=1μ2(d)∗(n/id)∗(m/id)\sum_{i=1}^n\mu(i)*\sum_{d=1}^{n/i}\mu^2(d)*(n/id)*(m/id) 可以发现后面在容斥,结果是(n/i/i)∗(m/i/i)(n/i/i)*(m/i/i)

2017-09-04 22:40:58 685

原创 [LibreOJ β Round #4]框架

题目描述有一个n×m的矩形框架,但其中有些边被删除了。qmqmqm想知道剩余部分中还有多少完整的正方形。只有当一个正方形的每一条边均被保留下来,这个正方形才是完整的。做法先预处理每个位置往四个方向的最远扩展长度。 枚举一条对角线,正方形的两个相对端点在该对角线上。 一个点作为左上角有一定修改范围,一个点作为右下角也有一定查询范围,可以用树状数组维护。#include<cstdio>#inclu

2017-09-04 22:36:50 537

原创 [LibreOJ β Round #4]子集

题目大意给你一个集合,请选出一个子集,使得两两元素的gcd或分别+1后的gcd至少一个不等于1,最大化子集的大小。最大团看起来是个最大团模型,裸上random_shuffle+greedy可过。#include<cstdio>#include<algorithm>#include<map>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace s

2017-09-04 22:34:34 487

原创 [LibreOJ β Round #4]多项式

题目大意构造一个不超过6w次的非0多项式,使得每项系数是非负数且小于k,并使得任意数x代入后模k=0。扩展欧拉定理我们知道了扩展欧拉定理。 那么可以直接构造x2∗ϕ(k)−xϕ(k)x^{2*\phi(k)}-x^{\phi(k)}#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(

2017-09-04 22:32:47 431

原创 [LibreOJ β Round #4]游戏

题目大意一个含数字和X的序列。 两方轮流操作,每次在X里填入一个实数。 当X全部被填完时,根据序列逆序对的奇偶性判胜负。 问谁必胜。做法没有X的时候用数据结构求逆序对即可。 有X的时候,先特判n=1。 然后假设两人随便填,最后一个人填最后一个X时,假设最小数当前是t,显然他在这个位置填t+eps或t-eps可以使逆序对奇偶性不同。 他能直接获胜。 因此此时判断X个数的奇偶性即可。#in

2017-09-04 22:30:35 426

原创 [hdu6063]RXD and math

题目大意给你一个数学式子,要求计(zhao)算(chu)出(jie)来(lun)。显然任意数可唯一表示成a^2*b,其中μ(b)=1\mu(b)=1 式子相当于在枚举b,后面乘的系数是a的范围。 那么每个数都被算一次,答案是n^k。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using name

2017-08-21 16:12:16 484

原创 [hdu6105]Gameia

题目大意有一颗n个节点的树,每个节点初始没有颜色。A和B玩游戏,A先手。B有k次小动作,可以在游戏进行的任意时刻使用(可以在A操作前后使用,一次性可以使用多次),每次小动作他会选择切掉一条树边。 两人轮流操作,A每次将一个无色点染白,B每次将一个无色点染黑并将相连点染黑(即使已经有颜色)。当不能操作后,如果存在被染白的点,A胜,否则B胜。双方绝顶聪明,问谁胜。博弈题先给出的结论: 该树如果有完美

2017-08-21 15:07:32 1286 2

原创 func

题目大意f(1)=1,f(2i)=f(i),f(2i+1)=f(i)+f(i+1)。 求f(m)=n的所有m。考虑如何计算一个f(m),先拆二进制位。 用f0和f1表示后面的位做完用多少进位和不进位。 我们只考虑最后一位是1的也就是奇数,那么初始f0=f1=1。 考虑一位上是1因为f(2i+1)=f(i)+f(i+1),所以我们将它减半后可以选择+1。 那么当一位是1时,如果后面没有进位,

2017-08-20 15:56:05 593

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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