自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

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

原创 [bzoj1969][AHOI2005]LANE 航线规划

题目大意一个n个节点m条边的图,两点间的关键边定义为从一点走到另一个点必须经过的边。 现有许多操作,删一条边或者询问两点间的关键边数量。 保证任意时刻原图联通。时间倒流先把所有边删掉,然后倒着做,转删边为加边。 然后我们思考,最后原图也是联通的,那么做边双联通分量缩点后,就会变成一棵树。 然后显然两个结点间关键边数等于它们所处联通分量代表的点在树上树路径的边数。 然而我们要处理加边,每加一

2016-08-18 21:44:39 1043

原创 [51nod 1292]字符串中的最大值V2

题目大意求字符串中子串长度*出现次数的最大值模板题没什么好说的上个SAM 然后过程中发现我有一点老是忘: 忘记计算step 要注意的:计算parent树的子树信息,那么就按照step桶排,然后倒着扫。不能直接按照编号倒着扫。#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(i=a;i<=b;

2016-08-18 11:31:14 656

原创 [51nod 1463]找朋友

题目大意两个序列A和B。 每次询问区间[l,r],从该区间挑出两个下标i,j,满足|Bi-Bj|处于集合S中,并要求最大化Ai+Aj的值。 S集合的大小<=10,B是n的一个排列。扫描线我们倒着枚举左边界l,并处理掉所有左端点为l的询问。 设f[i]表示在[l,i]中找一个j,使得符合要求的情况下最大的Ai+Aj,那么[l,r]的询问相当于在[l,r]的f中求最大值。 f用线段树维护,每次l

2016-08-17 22:18:04 636

原创 [51nod 1479]小Y的数论题

题目描述小Y喜欢研究数论,并且喜欢提一些奇怪的问题。 这天他找了三个两两互质的数a, b, c,以及另一个数m, 现在他希望找到三个(0, m)范围内的整数x, y, z,使得 (x^a+y^b) Mod m=(z^c) Mod m 构造我们知道2^x+2^x=2^(x+1) 于是我们这样构造: 若m不为2的幂数,我们令x=2^kb,y=2^ka,z=2^l,那么cl-kab=1,可以

2016-08-17 16:45:27 716

原创 [51nod 1449]砝码称重

题目大意你用无数个砝码,每个砝码的重量都是w的幂数,而且每个砝码重量都不同。 问能不能用天平与这些砝码称重量为m的物品。解法能称,就说明存在两个只由01组成的w进制数相减可以得到m。 我们从低位往高位做。 如果是0或1,明显这一位可以构造出来,不管m除以w继续变成子问题。 如果是w-1,那么被减数这一位是0,减数这一位是1,相减后还要借位,借位就是被减数减1,于是我们让m除以w再加1使得被减

2016-08-17 16:40:31 990

原创 [51nod 1412]AVL树的种类

题目大意求有多少种节点个数为n的AVL树。吼简单求有多少个节点为n的树,容易想到f[i]表示用i个节点弄出一颗树。 而AVL有神奇性质,我们要设f[i,j]表示深度为ij个节点。 那我不是n^3? AVL学好了,你容易知道AVL的深度是log n的。 所以是n^2 log n的复杂度。#include<cstdio>#include<algorithm>#include<cmath>#

2016-08-17 16:35:12 802

原创 Binary

题目大意一些数,可以修改,每次询问全部加x并与y作and后的和。一眼题显然看到位运算就分位做。 在第k位,所有数都模2^k,然后用数据结构维护。 然后只看y有1的位。 分类讨论数的第k位是0/1,x的第k位是0/1,然后用数据结构求出此时最终加上x后第k位是1的个数,就能统计答案。 这个数据结构推荐使用树状数组。#include<cstdio>#include<algorithm>#de

2016-08-17 16:26:21 601

原创 Value

题目大意有一些物品每种只能取一次,可以以任意顺序取任意数量的物品,每取一种物品其余所有未取物品的价值要减去其的代价。最大化价值。一眼题按代价排序,那么显然从前往后取。 设f[i,j]表示做到i已经取了j个,倒着dp即可。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b)

2016-08-17 16:21:18 504

原创 Matrix

题目描述一眼题显然我们可以根据递推式改写题目: 从第一行或第一列某个位置出发,不能经过第一行或第一列(除起点),每次只能往右或往下,往右走权值乘a,往下权值乘b,求所有到(n,n)的路线权值和。 这个问题就简单了,枚举起点,然后起点确定那么往右走和往下走次数确定,再用组合数确定走法数量。 注意组合数开到两倍。#include<cstdio>#include<algorithm>#defin

2016-08-17 16:18:13 616

原创 [51nod 1801]wangyuzree的树

题目大意有n个节点的树,m个限制限制一个点的度数不能为多少。容斥显然可以容斥,然后就知道了一些限制。 根据prufer序的唯一对应性,假如有x个限制(注意如果有限制相同节点的不能算,所以现在讨论的这些限制都限制了不同节点的度数),第i个限制限制一个节点度数必须为d[i]。 答案为Cd[1]−1n−2∗Cd[2]−1n−2−d[1]+1]∗……∗(n−x)n−2−∑xi=1d[i]−1C_{n-2

2016-08-16 16:11:11 570

原创 [SPOJ 687]字符串

题目大意求一个字符串中一个连续重复子串的最大重复次数。论文题首先枚举这个子串的长度l。 那么显然,它们一定要经过0,l,2l,3l,……之中至少一个点。 枚举这个观察点il,让后缀il与后缀(i+1)l求LCP,可以用SA完成,接着假设LCP为k,那么k/l+1这个答案是合法的(可以自己动手画一画,就很容易知道),不过,有可能两个字符串不从观察点开始匹配,也就是再左移l-k%l还能再匹配一段(即

2016-08-16 15:47:10 567

原创 [CF581 E]新车

题目描述Keith买了一辆新车,打算把自己的新车开到学校,给403的小伙伴们看看。 Keith家(多个)在城区,从城区到学校的路可以抽象成一个数轴,Keith家的坐标为W,学校的坐标为E。路上有很多加油站,每个加油站能提供92#,95#,98#三种汽油中的一种。由于Keith不缺钱,每到一个加油站,他都能加任意多的油。由于道路是双向的,Keith的车既能往左开,也能往右开。 1升汽油可以跑1千米

2016-08-16 15:35:47 1040

原创 [CF 513F2]躲藏

题目大意有一个人性别未定,其余都是男或女。 一个男的需要匹配一个女的,所有人都在一个n*m的网格上且有一个速度值,即移动一格所花的时间。有些格子是障碍无法经过。 求完美匹配的最少时间。网络流因为要完美匹配,所以无性人的性别可以确定。 计算两格间的最短路,然后连边。 二分答案,所有时间花费不超过二分的答案的边连上,然后跑网络流查看是否完美匹配。 然而我WA到调不出来,不放程序了。

2016-08-16 15:31:39 598

原创 [SDOI2008]沙拉公主的困惑

题目大意求n!中与m!互质的数的个数。显然的结论就是求n!∗Πk|m!k−1kn!*\Pi_{k|m!} \frac{k-1}{k} 至于为什么就不说了,太过显然。 然后预处理阶乘,后面那个与m有关可以预处理,为了不超时还要线性求逆。#include<cstdio> #include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using na

2016-08-16 15:15:12 558

原创 [HDU5604]守鹤之砂

题目描述当初,我爱罗作为“祭品之力”,为了控制体内“一尾”的力量,他开始了无休止的修炼。 作为一个刚入门的忍者,我爱罗先是要学会控制“一尾”守鹤之砂,第一步当然是要学会合并砂团啦,当然了,肯定不是盲目的合并,所以他给一开始的n个砂团从1到n编号,然后,每次合并,他会选择两个砂团u和v,将u所在的砂团集合与v所在的砂团集合合并,然后他对合并后的集合进行以下计算: 将所有砂团的编号取出来,假设有k个

2016-08-16 11:49:54 623

原创 [CC PARSIN]math

题目描述预备知识sin(a+b)=sin(a)∗cos(b)+cos(a)∗sin(b)sin(a+b)=sin(a)*cos(b)+cos(a)*sin(b) cos(a+b)=cos(a)∗cos(b)−sin(a)∗sin(b)cos(a+b)=cos(a)*cos(b)-sin(a)*sin(b) cos(2a)=cos2(a)−sin2(a)=2cos2(a)−1cos(2a)=cos

2016-08-16 11:33:50 764 4

原创 [CC LEBOXES]buy

题目大意n个袋子,第i个袋子有pi几率装有vi金钱,否则装有一颗宝石。 有m个食物,第i个食物需要ci的金钱和di颗宝石,求最优情况下,期望买下食物个数。折半宝石个数不超过n。 设f[i,j]表示买下i个食物使用了至多j颗宝石最少花费的钱,可以dp出来。 然后对于袋子,我们折半搜索,先搜索前半部分,并根据宝石数分段,每段按照金钱排序,并统计概率前缀和。 然后搜索后半部分,假如搜出的状态是(v

2016-08-15 22:48:53 447

原创 [HDU5659]knight

题目大意求一个字符串,从每一个位置分成两部分(当做两个字符串),求本质不同子串数量。SAM我们先有一个简单的思路。f[i]表示从i分成两部分的答案。 正难则反,求出原串本质不同子串数量,对于每个位置减去跨线且没在两边出现过的即可。 对于一个子串,如果其出现在原串中最大的右端点为mx,最小的右端点为mi,其长度为len。 如果mx-len>=mi,则因为其所有出现区间交为空,无论从哪个位置分开这

2016-08-15 22:37:40 671

原创 [NOI2016][bzoj4653]区间

题目大意现在有 n个区间,选择一些区间使得其中能找出m个区间交集不为空。 最小化选择的最大区间长度减最小区间长度排序按照区间长度排序,然后维护两个指针l,r,表示当前选择了[l,r]的区间。 用线段树维护每个点被覆盖了多少次以及被覆盖最多次的点被覆盖的次数。 每次r右移,然后加入线段树中。 之后假如最大被覆盖次数不低于m,不断更新答案并删除l对应区间,接着右移l。#include<cstdi

2016-08-11 20:14:32 883

原创 卡牌游戏

题目描述线段树枚举改变规则分界线,然后根据贪心,对前后部分进行计算,假如分界线前有j张牌,那么我们一定拿最大j张牌去搞事情。 用权值线段树维护一个区间,我们用一些牌去打赢对方的牌后,我们剩多少牌无法打败对方任何一张牌,对方剩多少牌无法被打败。 合并就很容易了,比如现在是大者胜,我们剩的牌数=左区间我们剩的牌数+max(右区间我们剩的牌数-左区间对方剩的牌数,0) 最后只要知道我们剩了多少张牌,

2016-08-11 20:08:55 642

原创 [CF311E]生物学家

题目描述网络流先想到可以把式子改写,用总资助金额减去拒绝的资助、请喝茶的费用、变性的费用。 然后变成了最小化,我们可以考虑最小割。 解决变性问题,规定靠S的这边是雄性,i是雄性s向其连vi的边表示变形就要割掉,否则i向t连vi的边。 解决条件问题,如果需求为雄性,s向i连wi(+g),i向需要节点全部连正无穷的边,因为正无穷的边不会被割,而雌性靠T,所以要么切靠T边表示变性,否则切靠S边表示条

2016-08-11 19:57:23 549

原创 [CF632E]选择

题目大意有n个数,任意组合成k项相加,输出所有可能结果。抖机灵如果dp,我们发现状态数很多,都是因为需要保留选了多少项。 能不能让限制不要那么严格呢?就是说,一定要恰好k项,如果k项以内的都算,那不是就简单很多了吗? 想让限制变松,我们需要其中一个数为0。没有0,我们就造一个。找到最小的数mi,然后所有数都减去mi,最后输出时加上mi*k即可。 于是很好做了,不超过k步能得到的所有都合法,bf

2016-08-11 19:35:12 507

空空如也

空空如也

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

TA关注的人

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