自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

辗转山河弋流歌

暂停更新和答疑

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

原创 【BZOJ3897】Power 线段树求前驱后缀

题解:首先我们从大到小排个序,然后感性来讲,肯定是从大到小能取多少就取多少的。然后我们取一个点时,还不能取多了,不符题意或者影响到其它已经取了的点对吧。所以我们求个前驱pre,后缀suc,就是最近的前面的取了的点,和后面的。 这个可以用线段树求,也可以set神马的快速水过啦啦啦。然后此点既然是之前取的,肯定是能取多少尽量取多少啦,拿后缀举例,也就是你取当前点,然后等到后缀那个点,肯定

2015-03-25 15:51:03 1600

原创 【BZOJ1925】【Sdoi2010】地精部落 动规 不知语,人已醉。 Euler Zigzag Number

。不会啊。Euler Zigzag Number好神啊~ 但是我可以给你丽洁爷的链接 http://hi.baidu.com/wjbzbmr/item/da020be63f6f41f92b09a410 fi,j=fi,j−1+fi−1,i−jf_{i,j}=f_{i,{j-1}}+f_{i-1,i-j} 丽洁原话:【是1到n的排列中第一个是k且一开始下降的数量】 就是说fi,jf

2015-03-25 00:05:56 2501 2

原创 【BZOJ1816】【Cqoi2010】扑克牌 二分答案+贪心+构造(证明)

题解:首先如果二分答案,它是满足单调性的。 但关键在于怎么check。我们可以贪心地给二分出的mid分配min()

2015-03-24 18:44:30 1798 1

原创 【BZOJ1800】【Ahoi2009】fly 飞行棋

题解:数据范围只有20。暴力乱搞吧。我的暴力: 枚举每个点(n4)(n^4)这道题应该是可以做到线性的~~代码:#include #include #include #include #define N 25using namespace std;int n,a[N],sum[N];int ans;int main(){ freopen("t

2015-03-24 16:56:31 1223

原创 【BZOJ1263】【SCOI2006】整数划分 高精度+构造

题解:一直*3就好了,最后如果剩1,那么把最后一个3变成4,如果剩2,直接乘。代码:#include #include #include #include #define N 5010#define M 100000000using namespace std;struct HP{ int x[N],y; void init(){x[0]=1;}

2015-03-24 16:36:10 1194

原创 【BZOJ1053】【HAOI2007】反素数ant 打表。/搜索

题解:以前玩过一件事,就是看20Y以内约数个数最多的数是哪个,约数个数是多少。 http://blog.csdn.net/vmurder/article/details/40429249 然后记得约数个数最多1536个,那么我们对于此题就可以打表啦! ,,,上面那篇博客还是我年幼无知的产品,不能用那个来打表的。然后有一个性质就是若x=y*k,那么x的约数个数肯定比y多对吧~ 那我们

2015-03-24 12:26:20 1335

原创 【BZOJ1008】【HNOI2008】越狱 排除法+快速幂

题解:全集是mnm^n,然后补集是第一个随便选,其后每个点有m-1种选法,是m∗(m−1)n−1m*{(m-1)}^{n-1}代码:#include #include #include #include #define mod 100003using namespace std;long long n,m;long long power(long long x,lo

2015-03-23 23:22:09 1246

原创 【BZOJ1003】【ZJOI2006】物流运输trans 最短路预处理+动态规划

题解:首先我们跑出fi,jf_{i,j}表示i到j这些天都是相同路线的最小代价。 然后暴力维护gig_i表示前i天最小代价。fi,jf_{i,j}可以枚举i,ji,j,暴力处理哪些点不能用,然后跑最短路。 时间复杂度 暴力处理废点O(n3m)O(n^3m) SPFA 是O(n2spfa)O(n^2 spfa)大约O(n2m2)?O(n^2m^2)?反正能过。 然后暴力处理废点

2015-03-23 20:46:44 1902

原创 【BZOJ1452】【JSOI2009】Count 二维树状数组

题解:暴力维护100个二维树状数组。妈呀因为没测样例就交还RE一次(虽然显示是WA)代码:#include #include #include #include #define N 305#define P 105using namespace std;int a[P][N][N],n,m,p;inline int lowbit(int x){return x&

2015-03-23 09:07:48 1546

原创 【BZOJ2438】【中山市选2011】杀人游戏 强连通分量+期望

题解:我并不知道为什么要求SCC,我的想法是A认识B,B认识C,C认识D,D认识A,但C跟A有毛关系?或许是我太弱,并不知道是shenmegui。 但是姑且粘一份AC代码然后跑吧。代码:#include #include #include #include #define N 101000#define M 301000#define inf 0x3f3f3f3fu

2015-03-23 00:10:17 1672

原创 【BZOJ3143】【Hnoi2013】游走 高斯消元 解期望方程

哎一听这个题目名字就感觉好有趣。题解:(注意:下方的题解每一步如果,相当于你写个递归函数,每次求完了下一层的值才能求此层的。Wow略高能,) 首先我们整体上既然是求期望,那么我们如果能算出每条边的期望经过次数wiw_i,那么只需要把1~m这些边权值从小到大按期望从大到小填入这些边,就可以得到最小的期望路径长度啦。然后怎么求每条边的期望经过次数呢? 我们设边ii的两端点为uu和v

2015-03-22 21:47:47 3187

原创 【BZOJ1880】【Sdoi2009】Elaxia的路线 spfa+拓扑图求最长链

题意:无向连通图上,S→TS→T有若干条最短路,s→ts→t也有若干条最短路,搞出来两条最短路,要求重合的尽量长(可以方向不同)。题解:spfa处理出这四个点到每个点的最短路,然后枚举求哪些边既在S→TS→T某条最短路里,又在s−→ts-→t的某条最短路里,然后这是个拓扑图,跑最长链。 哎呀没什么可说的么,水题贴代码就好啦。代码:#include #include #

2015-03-22 14:10:50 1719

原创 【BZOJ2333】【SCOI2011】棘手的操作 可并堆+堆套堆(什么嘛,用个set就好啦)

可并堆我写的是随机堆,然后模板可见上一篇博客。 【BZOJ1455】罗马游戏 可并堆 http://blog.csdn.net/vmurder/article/details/44513511解一下题意:原始题意:有N个节点,标号从1到N,这N个节点一开始相互不连通。第i个节点的初始权值为a[i],接下来有如下一些操作:U x y:加一条边,连接第x个节点和第y

2015-03-21 23:48:59 41795

原创 【BZOJ1455】罗马游戏 可并堆

题解:可并堆: 其实它只是个函数,而不是数据结构,它的数据结构只是“堆”? 可并的随机堆才算一个?两个堆合并时,对比大小决定谁是父亲,然后劣的和优的 的子再递归进行比较,直到一头为空(无法也不用再比较时),能满足正常插入就可以保证二叉的性质时停止。代码:可并随机堆(随机挂到某子上)#include #include #include #include #define

2015-03-21 09:36:21 1397

原创 【BZOJ3620】似乎在梦中见过的样子 KMP

题解:对于一个区间[l,r][l,r] , 若存在一个长度≥k\ge k并且r−l2 的串K,它既相同于以ll为开端的等长串,又相同于以rr为结尾的等长串,那么这个区间就是一个可行串。我们枚举区间左端点,然后可以利用KMP在线性的时间内处理完所有的右端点对答案的贡献。代码:#include #include #include #include #define N 160

2015-03-20 23:38:10 2014

原创 【BZOJ2563】阿狸和桃子的游戏 贪心

题解:PoPoQQQ大爷已经说得很详细了。 http://blog.csdn.net/PoPoQQQ/article/details/44495319代码:#include #include #include #include #define N 10100using namespace std;int n,m;long long ans,x[N];int main(

2015-03-20 22:57:23 1142

原创 【BZOJ1216】【HNOI2003】操作系统 双键值堆

题解:写个结构体,重载一下小于号,然后扔优先队列里玩。 每次进来新的任务就把这段时间分给队列里的任务修改一下,然后把新的任务入队。 水题就瞎说点什么吧。代码:#include #include #include #include #include #define N 101000using namespace std;struct Eli{ int d,t,

2015-03-20 22:46:49 1154

原创 【BZOJ2741】【FOTILE模拟赛】L 可持久化字典树+分块

题解:首先我们处理出来sum[0,n]sum[0,n]作为异或前缀和,然后答案就不再是[l,r][l,r]中间某段区间的异或和,而转化成求了[l−1,r][l-1,r]中任意两点异或和的最大值。然后我们分块处理出fi,jf_{i,j}表示 [第i块的开头,j−1][第i块的开头,j-1] 这段区间中任取一点和点jj异或和的最大值,而用gi,jg_{i,j}做个类似前缀和的操作,记录第ii块

2015-03-20 20:22:51 2384

原创 【BZOJ2152】聪聪可可 树分治

题解:裸的处理树上路径的树分治。代码:#include #include #include #include #define N 20100#define V e[i].v#define inf 0x3f3f3f3fusing namespace std;struct Eli{ int v,len,next;}e[N1];int head[N],cnt

2015-03-18 19:47:55 1407

原创 【BZOJ1758】【Wc2010】重建计划 分数规划+树分治单调队列check

题解:首先比较显然会想到分数规划模型。 不太好想,先放过。我们树分治处理经过每个点的路径。 然后对于在[L,R][L,R]区间内的每个长度记录最长距离。 然后每棵子树跟之前记录的数组处理一下,算出当前这棵子树中点为一端点,经过根节点(重心)的最优答案,然后再更新记录最长距离的数组。貌似很科学,但是这个更新答案的过程,实际上是O(n2)O(n^2)的,并不能接受。所以就有了下述

2015-03-18 18:12:53 2777 1

原创 【BZOJ2466】【中山市选2009】树 高斯消元解异或方程组

题解:参照此题解,也是我写的,俩题一样。 【POJ1681】Painter’s Problem 高斯消元,求最小∑系数的异或方程组代码:#include #include #include #include #include #define N 105#define inf 0x3f3f3f3fusing namespace std;bool a[N][N],x

2015-03-17 22:44:16 1385

原创 【自用】POJ1064 Cable master 且来说说卡精度的心得

题意:多组数据,n个小棒,分成m段,最长多长? 不能短于0.01,如果分不出来,输出”0.00”题解:满足单调性,来二分吧。心得:来,我们看着代码说话。判无解的处理首先最多能分多少段开了long long。 long long maxd,m; 然后处理的时候因为精度损失,所以加了eps maxd+=(int)(a[i]*100.0+eps);eps

2015-03-17 20:17:10 2507

原创 【POJ2114】Boatherds 树分治

题意:求是否有长度为K的路径。 每组数据 N,表示树有N个点。 然后N行,每行若干个数对(a,b)(a,b),其中第i行时表示i到a有一条长为b的无向边。输入到0截止。 然后若干个数表示K,每个数输出下。 到0为止。然后数据的N也是到0为止。 存在 puts("AYE"); 否则 puts("NAY");每组数据最后输出一个dot,就是 .题解:三倍经验题,

2015-03-16 16:35:27 1230

原创 【POJ1987】Distance Statistics ==【POJ1741】 树分治

广告:#include <stdio.h>int main(){ puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/44307489");}题意&题解http://blog.csdn.net/vmurder/article/details/44302921代码:(同一道题)#in

2015-03-16 16:00:26 1303

原创 【POJ1741】Tree 树分治 模板咯?

题意:给你一棵无根树,求有多少点对之间距离题解:树分治。 然后对于一个重心X,我们把它的所有子树中的所有点存到结构体数组中。 结构体中存距离和子树编号。 第一遍sort,我们双指针扫哪些点对符合要求。 第二遍sort,我们把同一子树中还符合要求的点对数目删掉。 sort是O(nlogn)O(nlogn),处理是O(n)O(n)。 然后分治logn层,总时间复杂度O(nl

2015-03-16 11:19:59 2693

原创 【秀优越(xie e)】原来出题也可以这么恶心。

通过邪恶的数据范围和数据限制竟然可以把一道传统题出成题答2333。诶毕竟内部互测,题目就不往上贴了。特殊限制---题目作废,输出M行“Orz  PoPoQQQ”-Max{D}(Min{D}PP∑D 

2015-03-15 23:42:45 1030

原创 【BZOJ2815】【ZJOI2012】灾难 阿米巴和小强题 动态倍增LCA 灾难树

题解:我们构建一颗灾难树,使得一个节点的任意一个祖先灭绝,则其会灭绝。 则可以按照拓扑序扫每个节点,然后加入到灾难树中时只需要把它的父亲赋成它所有食物的LCA就好了。 我们可以动态处理每个节点的倍增lca数组fi,jf_{i,j}表示i的第(1j)(1高祖先。代码:#include #include #include #include #include #defi

2015-03-06 20:24:49 1834

原创 【BZOJ1898】【Zjoi2004】Swamp 沼泽鳄鱼 矩阵乘法

题解:食人鱼循环2、3、4,lcm=12。 所以12次转移为一组,这么进行快速幂矩乘,最后把余数那几次转移乘上。代码:#include #include #include #include #define T 55#define mod 10000using namespace std;struct MRX{ int x[T][T];}Trs[13]

2015-03-06 16:24:10 1440

原创 【BZOJ1570】【JSOI2008】Blue Mary的旅行 最大流check

题解:枚举需要几天,然后每天新加一层点跑最大流看maxflow是否够数。代码:#include #include #include #include #include #define P 55#define N 5010#define M 1001000#define inf 0x3f3f3f3f/*2 <= N <= 501 <= M <= 24501 <

2015-03-06 14:33:11 1122

原创 【BZOJ3613】【Heoi2014】南园满地堆轻絮 构造

题解:我们把所有逆序对点都搞到同一高度。 然后发现答案是距离最远的逆序对搞到一起的代价。代码:#include #include #include #include #define N 5001000#define inf 0x3f3f3f3fusing namespace std;int n,a[N];long long Sa,Sb,Sc,Sd,mod;int

2015-03-06 10:43:57 1697

原创 【BZOJ3885】【Usaco2015 Jan】Cow Rectangles 某奇怪的最大子矩形

题意:坐标系上给出n个点,分”H”和”G”,一个整点坐标上至多一个点。 现在求一个不包含”G”的包含尽量多”H”的子矩形,然后在保证”H”最多的情况下还要问最小面积。 输出”H”的最大数量,和保证”H”最多时的最小矩形面积。题解:我们发现因为坐标有限制[0,1000] (注意有”0”!!!),所以它是一个矩形。第一问:首先我们可以参照极大子矩形的做法算出所有的极大子矩形,然

2015-03-06 08:49:48 1623

原创 【BZOJ3886】【Usaco2015 Jan】Moovie Mooving 状态压缩 动态规划

题意:PoPoQQQ要在电影院里呆L分钟,这段时间他要看小型电影度过。电影一共N部,每部都播放于若干段可能重叠的区间,现在PoPoQQQ要看尽量少的电影来度过这段时间,同时他决不会看同一部电影两次。题解:状压DP,f[i]表示状态为i时从0最远连续看到哪。 然后转移上枚举还要看哪部电影,贪心取能看的片场中最靠后的一个。 然后时间复杂度O(2N×N×xxxx)O(2^N\times

2015-03-05 16:38:12 1875

原创 【BZOJ3887】【Usaco2015 Jan】Grass Cownoisseur 算法模块有点多

题意:给一个有向图,然后选一条路径起点终点都为1的路径出来,有一次机会可以沿某条边逆方向走,问最多有多少个点可以被经过?(一个点在路径中无论出现多少次(≥\geq1)对答案的贡献均为1)题解:首先强连通分量缩点。 然后形成了dfs统计出: 集合A:点 11 能到哪些点, 集合B:哪些点能到点 11 然后这两个集合各为拓扑图。 现在一条从1出发,最后又回到1的最长路径就可以被

2015-03-05 14:13:43 1938

原创 【脑洞大开】一种神奇的[网络流?]——PoPoQQQ流

来源:PoPoQQQ大爷脑洞一开,就想出一种流进来是a,流出去是ak的边,他称之为“带变压器的边”,然后我们称之为PoPoQQQ流。来一个应用模型(鬼畜题)(鬼畜题)题目:题目描述:PoPoQQQ大爷有s个脑细胞,然后他可以通过让脑细胞去做一些鬼畜问题来使得脑细胞得到成倍数的增长。但是有一些问题需要前置问题,即思考过某问题的脑细胞才可以做这个问题,同时,一个问题的难

2015-03-05 14:01:49 4514

原创 【BZOJ3888】【Usaco2015 Jan】Stampede 线段树判区间覆盖

广告:#include <stdio.h>int main(){ puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/44065939");}题意:PoPoQQQPoPoQQQ站在原点上向y轴正半轴看,然后有一群羊驼从他眼前飞过。这些羊驼初始都在第二象限,尾巴在(Xi,Yi),头在

2015-03-04 21:24:17 1671

原创 【BZOJ3889】【Usaco2015 Jan】Cow Routing 双键值最短路

题意:从样例讲起。 第一行 s,t,m表示:起点,终点,m条航线。然后m组,每组第一行len,n表示这条航线的代价, 这类似于公交车,只要用了就花这些钱,但是用多少都这些钱。 注意是单向边。举例: 2333 4 3 2 1 4 就是3->2、3->1、3->4、2->1、2->4、1->4都花2333元。这个花销是第一键值。 第二键值是经过几站。比如3->2->

2015-03-04 19:18:23 1695 7

原创 【BZOJ2560】串珠子

题解:gig_i 表示状态为i时随便连边时的方案个数 fif_i 表示状态为i时图是连通图的方案个数gig_i好求,直接枚举一个里面的点aa,然后向外面某点bb连边得到 gi|(1b)g_{i|(1 然后我们可以在从gig_i中减去某些东西得到fif_i。 先确定一个小的连通块,状态为a,然后其它点的状态就是i^a 然后显然ga×fi xor ag_a\times f_{i\ xo

2015-03-04 15:04:40 2002

原创 【BZOJ2326】【HNOI2011】数学作业 分段矩阵乘法

题解:我们发现fi+1=fi×10p+i+1f_{i+1}=f_i\times10^p+i+1 这样我们就对于每个p的阶段都可以构造矩阵加速运算。⎡⎣⎢⎢⎢fi 0 0 i+100100⎤⎦⎥⎥⎥×⎡⎣⎢⎢⎢10p 1 0 011001⎤⎦⎥⎥⎥= ⎡⎣⎢⎢⎢⎢fi+1 0 0 i+200100⎤⎦⎥⎥⎥⎥ \begin{bmatrix}f_i & i+1 & 1 \\\0 &

2015-03-03 20:55:07 1320

原创 【BZOJ3875】【Ahoi2014】骑士游戏 SPFA处理有后效性动规

题解:首先一个点可以分裂成多个新点,这样就有了图上动规的基础。 即f[i]表示i点被消灭的最小代价,它可以由分裂出的点们更新。但是这个东西有后效性,所以我们用SPFA来处理它。spfa处理后效性动规我们每更新一个点A的动规值,就会有若干个点的动规值可能被更新。 即可以分裂出点A的那些点。 于是A出队后一旦动规值被更新了,就把那些点入队。初始时要把所有点入队,因为它们都可能

2015-03-03 17:26:03 2570

原创 【自用】关于欧拉函数以及逆元的一些模板

求欧拉函数φ\varphiO()√O(\sqrt)时间复杂度的算法首先我们要求φ\varphi(x),可以先将其分解成∏(apii)\prod(a_i^{p_i})的形式,其中aa是素数。 然后可以推导出公式φ\varphi(x)=∏(apii−api−1i)\prod(a_i^{p_i}-a_i^{p_i-1}) 然后这个可以实现为φ\varphi(x)=x/∏(ai−1)x/\prod(a_

2015-03-03 16:13:50 1592

空空如也

空空如也

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

TA关注的人

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