自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 agc012_d Colorful Balls (连通块 贪心 结论 排列组合)

这题乍一看没有什么头绪,有点凌乱。不妨建一个更加明晰的问题模型:有n个球,分成k堆,第 i 堆球的颜色都是c[i],每个球 j 都有一个重量w[j],且标有一个1~n的数字(代表它在序列中的位置)。每次你能做的操作就是交换某两个球的数字,并且同一堆的两个球能够交换数字,当且仅当重量和<=X;不同堆的两个球能够交换数字,当且仅当重量和<=Y。问最后有多少种本质...

2018-12-17 21:46:54 416

原创 agc012_c Tautonym Puzzle (构造)

这题的构造技巧在于尽量简化操作,让贡献便于计算。最简单的情况就是每一个数字只有两个了。记一个长度为n的排列为,我们考虑构造这样一个序列(,1,2,...,n)。容易发现,一个复读子序列要想出现在这里面,肯定是前一份在里面,后一份在(1,2,...,n)里面。这就要求本身是一个递增序列。因此这样一个序列的贡献实质就等于的上升子序列个数。这样问题就简单了(虽然暂时我们也并不知道...

2018-12-17 20:47:36 329

原创 agc011_f Train Service Planning (数学分析 取模技巧 线段树优化DP)

这题好难啊!!!有一篇博客已经写得很详细也很清晰了,安利一下:传送门我再加几句,是我自己理解过程中遇到的困难:(1)逆行的车用(N−S(a,i−1)−S(q,i),N−S(a,i)−S(q,i))表示,为什么N可以调整为K的倍数。解释:因为所有火车同时推迟t个单位时间本质上和原来一样,所以我们可以通过推迟的方法让N变为K的倍数。(2)为什么最后答案不是S(p,n)+S(q,n)+2...

2018-12-17 14:18:06 273

原创 AGC011_E Increasing Numbers (玄学贪心 或者 数学分析)

题意定义:一个数是增长数,当且仅当它的每一位数字都不比左边一位数字小。给出一个n位数Number,问最少用几个增长数才能表示出它(即把它拆成几个增长数的和的形式)。算法1 玄学贪心这是本蒟蒻莫名其妙yy出来的做法,感觉很有道理就去写了一下,没想到居然AC了??不过到现在还不能证明其正确性。只是在这里说下策略:大胆猜想:每次减去最大的增长数可以保证次数最少。试了几个样例,...

2018-12-15 17:03:24 387

原创 agc011_d Half Reflector (找规律)

这题好有趣啊,玩了好一会儿才得出比较简洁的做法。记A状态为1(黑),B状态为0(白)。发现几个比较有用的规律:(1)一个球通过一段长度为L的黑块时,会把前L-1个黑块都变成白块。        特殊情况:这段黑块在最左边,那么球只会把第一个黑块取反,然后从左端飞回去;(2)一个球通过一段长度为L的白块时,会把前L-1个白块都变成黑块;       特殊情况:这段白块在最右边...

2018-12-15 09:32:58 243

原创 agc011_c Squared Graph

题意描述定义图的乘法:A×B生成一个新图C,其中任意a∈A,b∈B,都对应C图中一个新点(a,b),C图中任意两点(a,b)、(a',b')之间存在边,当且仅当A、B中存在边(a,a')、(b,b')。给出一个图G,求G×G中有多少个连通块。思路这道题目好啊,一开始以为是不可做题系列……关键就是要充分理解题意,建立形象化的问题模型。新图上的点(a,b)和点(c,d)之间有一...

2018-12-14 19:57:39 270

原创 agc010_e Rearranging (图论建模 贪心 拓扑序)

最后做法挺简单的,但确实不容易想到这么多大胆的步骤。首先第一眼就能发现Takahashi的序列中如果存在,那么和的相对位置永远不会改变,也就相当于永远在后面出现。思维比较发散的人可能已经想到了拓扑——连一条边,这样就形成了一个DAG,Aoki肯定会按最大字典序来访问这个拓扑图。所以我们其实是给一个无向图(  就给i和j连边)确定方向,变成有向图,使得最后最大拓扑序最小(我们称之为“最优序列”)...

2018-12-13 11:13:21 307

原创 [agc010d] Decrementing - 博弈 结论题 -

这题真的不会,不知道正解是怎么想出的 (首先容易想到当出现一个1的时候,以后的gcd就全是1了,所以后面的操作就只有减1,没有除法。这个时候,如果轮到i走,还剩奇数轮,他就胜了,反之他就败了。更具体地,还剩奇数轮等于说是还剩奇数个偶数,所以我们来关注一波奇偶性(偶数的个数记为cnt[0],奇数的个数记为cnt[1])。由于题目保证一开始g=1,所以黑板上至少混入了一个奇数。至于...

2018-12-12 16:52:15 215

原创 [agc010_c] Cleaning (递推+结论构造)

这题很妙啊,日常智商不在线的博主居然自己想出来了,成就感爆炸有木有!!!--------------------------------------------------------------------------思路&解法--------------------------------------------------------------------当成有根树做。先从...

2018-12-12 11:21:53 374

原创 [AGC009E Eternal Average] [建模 K进制 同余 简单DP]

先把问题转化成更形象的版本:你可以任意建一棵k叉树,并且需要满足恰有n+m叶子,其中有n个权值为1(黑点),m个权值为0(白点),其余节点的权值等于儿子节点的均值。问根节点有多少种可能的取值。这棵树形象地模拟了合并的过程,并且我们可以看到:对于每一个黑色叶子结点i,记其深度为,那么它对根的贡献就是。由于这些贡献都是k的幂的形式,所以这启发我们在k进制下去想问题。我们安排一下每个黑点的深度,这就...

2018-12-11 20:55:28 327

原创 [AGC009D Uninity] [建模+贪心]

这题好神啊,就是没想到还可以这样做……问题就是将树进行点分治,最小深度是多少。显然答案的上界是logn,但是具体是多少呢?尝试了若干贪心策略,什么直径啦,什么点数啦……好像都有反例,或者根本不知道对不对。结果看了题解才知道可以换成另一种问题去做:实际上就是给树填入数字(数字就是题目中的那个等级),需要保证两个相同数字的节点间的路径上至少存在一个比它们更大的数字,问最大的数字最小是多少。...

2018-12-10 21:52:36 268 1

原创 [AGC009C Division into Two] [DP好题]

这题真的挺不错的。首先观察发现:任意两元素相差>=A,只要满足排序后相邻两元素相差>=A,B同理,所以我们考虑从小到大依此决定每个元素应该扔到哪个集合,这样就只要维护两个集合中此时最大的元素即可。得到朴素的动态规划方法:f[i][j]表示放完了前max(i,j)个元素,且A集合中最大的元素是i,B集合中最大的元素是j,有多少种方案。转移也很方便,直接枚举下一个元素放到哪个集...

2018-12-10 15:32:08 279

原创 [AGC009B Tournament] [建模+贪心]

[题目大意]    n个人参加锦标赛,比赛有若干场,每场都是两个幸存者比试,淘汰失败方。现在不清楚具体怎么比的,只知道1号为最终冠军,其余每个人,i号是被a[i]打败的,让你在所有可能的比赛流程树中找出深度最小的那个,输出深度。[思路]    考虑建一个新树,其中i的父亲是a[i],这个时候我们发现,i的子树中只有i幸存下来,接下来的比赛和i的后代没有任何关系,即没有后效性,所以我们显...

2018-12-10 08:26:03 252

原创 [AGC008F Black Radius] [特征法统计+树形DP]

这题真的神啊……[思路]    先画一画样例,在脑海里形成一个比较形象的认识。比如这里先约定一些名词:    [中心] 就是我们选中的那个点    [步长] 就是我们染色时确定的范围d    [边缘] 可以看到,从中心往外扩散,有些路径扩散到了叶子结点,还有些没到尽头就停止了,我们把没到尽头的路径末端结点称为边缘。    [子树T(x,y)] 以x为树根时,以y为根的子树...

2018-12-09 21:53:14 277

原创 [洛谷P1919 A*B Problem] [FFT板子题]

FFT就不多说了吧,反正已经有写得很好的blog了,强烈推荐去看menci的FFT学习笔记,写得十分详细,条理也很清晰,我就是看这个才懂FFT的!!(传送门:menci FFT学习笔记)这里只是想提几个注意点。[1] 蝴蝶操作需谨慎,就是将每个a[i]映射到对应位置的时候,由于二进制的位置从0开始标号,容易搞错;[2] 自定义的operator运算最好加括号,防止优先级的问题[3]...

2018-11-28 10:24:53 256 1

原创 [AGC004_f Namori] [问题转化+贪心]

[题目大意]有一个连通图,由N个顶点和M条边构成,没有重边和自环,且N-1<=M<=N,点依次标为1..N号,第i条边连接点ai和bi。起初所有顶点都是白色。你每次操作可以将两个相邻的同色点的颜色取反(白->黑,黑->白)。问最少多少次可以将点都变成黑色,如果无解,输出-1。[思路]这题真是神题啊,给跪了……首先,每次操作都要改两个点,看起来就很麻烦,所...

2018-11-26 09:46:37 237

原创 [AGC005C Tree Restoring] [贪心构造]

[题目大意]青木君很喜欢数列和树。一天,高桥君给了他一个长度为N的数列a1, a2, …, aN,这让青木有了构造一棵树的冲动。他想要构造一棵树,其中i号点与其它点的树上距离的最大值恰好等于ai(假设树边长度均为1)。请问是否存在这样一棵树符合要求。[想法]这种题目可以从极端情况入手,而这里的极端就是树的直径。(1)因为任何树都存在至少一条直径,所以一定存在一对相等且最...

2018-11-26 09:05:16 181

原创 [AGC003E Sequential operations on Sequence] [思路题:逆推与分治]

[题目大意]    给出一个长度为N的序列A,其中A[i]=i。然后对它依次进行M次操作:每一次操作用一个整数q[i]描述,表示构造一个无穷长的序列B=AAAAAA...,然后令A=B[1..q[i]]。M次操作全部结束后,对每一个i∈[1,N]询问:A中有多少项等于i。[思路]这题有毒!!(话说AGC系列哪个没毒??)首先画几个序列观察一下吧:n=3,m=2,q={8,21}...

2018-11-23 20:58:21 249

原创 [洛谷P1361 小M的作物] 最小割建模

题目大意    有n株植物,A,B两块田地,每株植物i,种在A田,可以获得A[i]的收益,种在B田,可以获得B[i]的收益。此外还存在m种额外收益,其中第i中额外收益可以这样描述:如果集合U[i]中的所有植物全部种在A田,那么可以获得exA[i]的额外收益,如果集合U[i]中的所有植物全部种在B田,那么可以获得exB[i]的额外收益,如果并没有全部种在同一块田里,没有任何额外收益。    ...

2018-11-06 11:23:34 361

原创 [ZJOI2007 捉迷藏] 动态点分治

题目大意    给出一棵树,初始全为黑点。执行若干操作,操作1:将某个点的颜色取反 操作2:询问最远的两个黑点的距离。思路    考虑动态点分治,用可删堆维护一些链长即可,细节较多,十分累人。    具体:先和普通点分治一样,确定树的划分方案,然后每一棵子树的重心u和上面一层的重心Fa[u]连边,构成一棵分治树T。预处理出每个点的信息dis[i][j],表示i到分治树上深度为j的祖...

2018-11-05 16:17:55 285

原创 [NOIP 2005 T2] 过河 (动态规划+简单数论)

题目大意:一只青蛙要从数轴原点向右跳过L(L<=10^9)的距离,在(0,L)上存在m个位于整点位置的石头(m<=100),青蛙每次跳跃可以向右跳[s,t](1<=s<=t<=10)间的一个整数距离。请问它最少踩到几块石头?思路:       本题容易从动态规划的角度去思考,用表示跳到位置i时最少踩了几个石头,直接枚举向右跳多远更新即可。但是L太大了,铁定超时...

2018-11-02 16:08:58 557

原创 POJ 1830 开关问题 高斯消元如何求自由变元

题目大意:给出n个开关的初始状态以及目标状态,按下一个开关会相应改变其它某些开关的状态(包括自己),问有多少种方案达到目标状态(每个开关最多按一次)。 这道题目是高斯消元求自由变元的模板题。首先我们可以列出每个开关i的方程,(A1*t1+A2*t2+A3*t3...+An*tn) mod 2=Bi其中当改变了第j个开关也会改变第i个开关的状态时,Aj=1,否则=0。当第i个开关的初...

2018-08-24 11:01:25 825 1

原创 HNOI2007 最小矩形覆盖 [旋转卡壳]

题目大意:给出若干点,求最小矩形,使得矩形能够覆盖所有点(输出面积、逆时针输出四个顶点的坐标)。思路:显然这个矩形要覆盖它们的凸包。            一个结论:求出这些点的凸包后,最小矩形至少有一条边贴着凸包(感觉很对,不知道严谨的证明qwq)。           然后就很容易了,只要枚举哪一条边(i,i+1)作为矩形的一边,然后分别求出对边和邻边卡过哪三个点就可以了。          ...

2018-06-16 20:20:43 333 1

原创 NOI2014 魔法森林 [LCT+贪心]

题目大意:给出一个无向图,每条边i有两个值ai、bi。要求出一条从1到n的路,使得路上经过的a的最大值(设为A)与b的最大值(设为B)的和尽量小。思路:容易想到逐步往图中加入边的做法,但是这一题存在两个关键值,所以我们还需要利用一点点贪心的思想来权衡答案。            我们考虑按a值从小到大加入每条边i,每一次求出A不超过ai的情况下,1的n的路径上B的最小值。            那...

2018-06-14 17:00:35 209 1

原创 Codeforces 8D Two Friends [计算几何 圆的交 二分答案]

我去,这题神坑(或许是我太弱了)……题目大意:一对好朋友同时从A地出发,其中Alan需要先经过B,再到达C;而Bob直接到达C。现在他们想先一起走,然后再分头走,并且Alan走的路程不能比原先的最短路多超过t1,Bob的则不能多超过t2。求他们一起走的路程最长可以是多少(分头后即使再碰头也不算了)。思路:这题一开始看起来无从下手,我们不妨从特殊情况开始看。假设Bob全程陪着Alan,那么显然需要满...

2018-06-13 22:26:20 458 1

原创 Codeforces 32E Hide and Seek [计算几何 对称点、线段相交]

题目大意:给出两个点,一个双面镜(线段),一面墙(线段),问两个点能否互相直接或间接地看到对方。思路:两个点要么直接看到对方,这个直接判断一下两点连线是否和墙或者镜子相交就可以了。            两个点通过镜子看到对方,首先两个点必须在镜子同侧,其次,其中一个点的对称点与另一个点的连线必须和镜子有交点,再次,光路上面不能出现墙(就是两条线段和墙判断是否有交)。            求对称...

2018-06-13 09:53:38 457 1

原创 bzoj 3224 splay板子

觉得模块化起来挺好看的,也不容易错^_^#include <cstdio>#define lf ch[x][0]#define rg ch[x][1]#define rep(i,j,k) for (i=j;i<=k;i++)const int inf=2e9+1,N=1e5+5;using namespace std;int n,i,od,x,o;struct bs...

2018-06-13 08:02:00 246 1

原创 bzoj1013球形空间产生器 高斯消元板子题

第一次写高斯消元啦啦啦~~#include #include #include #define db double#define rep(i,j,k) for (i=j;i<=k;i++)#define down(i,j,k) for (i=j;i>=k;i--)using namespace std;const int N=15;int n,i,j,k;db tmp,x[N

2018-01-07 19:53:59 222 1

原创 BZOJ2560 串珠子

题意:给出n个点以及一个邻接矩阵,C[i][j]表示i号点和j好点间存在的无向边条数。现在两个点可以选择不连边或者选一条边连接,问:有多少种连边方案,使得n个点形成一个联通块。分析:由于点数很小,所以可以考虑状压DP。f[cur]表示若只考虑cur中为1的点,使得它们彼此联通的方案数,最后答案即为f[11..11]。如何求f[cur]?直接求联通的方案数不好求,可是反过来我们却发现求不连通的方

2018-01-07 18:37:34 433 1

原创 POJ2407 Relatives 容斥原理

题意:求1..n-1中与n互质的数的个数(1可以转化为求1..n-1中不与n互质的数的个数t,然后用总数减去就可以了。对于t的求法,我们可以考虑容斥原理。首先把n质因数分解,然后每个质因数只保留一个,随后按照x与n的公共质因子种类来将x分门别类地计算。例如60=2*2*3*5,那么有2、3、5三种质因子。对于所有符合t的要求的数x,满足是2的倍数的有60/2=30个,满足是3的倍数的有60

2018-01-07 15:50:50 300 1

空空如也

空空如也

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

TA关注的人

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