自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

上班了开始工作在家没事做

搜狗音乐创作者自知理亏上不了课刷不了卡受不了苦三个月一次见面

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

原创 noip2016提高组总结

无实力选手2=滚粗。。。。day1 1.T1 直接模拟,本题并未出现低级错误 2.day1T2, 按套路来是图论傻逼题于是5min打完一发暴力LCA后边在纸上写写画画, 发现毫无思路, 很慌, 想了一个多小时也没有想到什么, 3.自己安慰了下自己看看时间已经10点多了, 赶快去看第三题的暴力, 发现好像很好写, 于是直接DFS走起, 但因为还想着去写第二题的特殊情况题目没有认真再读一遍,

2016-11-22 18:30:51 528 1

原创 【APIO2014】Palindromes

2014年好像没有回文树, 但是回文树出来之后就变成裸题了#include <algorithm>#include <cstring>#include <cstdio>#include <iostream>#define rep(i, s, t) for(int i = (s), i##E = (t); i <= i##E; ++i)#define dec(i, s, t) for(int

2017-06-07 20:56:36 315

转载 关于后缀树的入门及简单应用

良心百度, 找到了一篇好文章, 非常详细清楚 后缀树 匠心十年

2017-06-07 14:15:12 341

原创 SCOI2012 喵星球上的点名

题意就不说了, 反正是中文; 正解应该是后缀数组, 但是AC自动机可以强行过, 只是比较慢; 对于询问串建AC自动机, 然后暴力把每个喵星人暴力在树上跑, 然后。。。就没有然后了。#include <bits/stdc++.h>const int mx_n = 2e4 + 10;const int mx_m = 5e4 + 10;const int mx_node = 1e5 + 10;#

2017-03-18 21:55:23 295

原创 递归FFT

#include <iostream>#include <complex>#include <cstdio>#include <cmath>const int mx_n = 4e5 + 10;const double pi = acos(-1.0);#define rep(i, s, t) for(register int i = s; i <= t; ++i)using namespac

2017-03-16 11:53:34 589

转载 一篇FFT好文

加精好文

2017-03-16 10:30:29 242

原创 Aho_Corasick 的一些练习(hdu 2222; Poj 1625; Poj2778; hdu2457; Hdu3247)

其实也没有做很多题,但还是发出来(能骗骗访问量。。。) Hdu 2222 #include <algorithm>#include <iostream>#include <cstring>#include <cstdio>#include <queue>const int SZ = 26;const int MX_N = 1e6 + 10;#define FILL(a, b) mems

2017-03-11 22:08:13 431

转载 AC自动机习题集

过了HDU2222就基本入门了开始写。。。。 习题集

2017-03-09 21:50:06 242

转载 Aho-Corasick automation-KMP

为AC自动机学习的做个准备 一篇kmp好文

2017-03-08 22:10:57 194

原创 树链剖分

下面给出能够完成下列操作的一份树剖代码1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z2 x y 表示求树从x到y结点最短路径上所有节点的值之和3 x z 表示将以x为根节点的子树内所有节点值都加上z4 x 表示求以x为根节点的子树内所有节点值之和/**TODO*---- Galaxy*/#include <cstdio>#include <cstring>ty

2017-02-24 18:51:30 179

原创 一般图最大匹配

先说下思想: 一般图与二分图不同的地方就在于奇环, 考虑出现奇环如何处理, 我们发现我们从一个点搜到一个奇环时, 最先搜到的地方我们称为花基, 那么会发现从花基从逆时针, 顺时针搜到这个奇环中的某一个点u时, 会发现u被我们要求标成两种不同的颜色, 这时我们能够发现奇环, 将其缩成一个点, 可以证明缩点后不会对増广产生影响, 那么我们缩点时需要做些什么:首先, 我们用pre记录增广路上的前驱

2017-02-24 18:50:24 584

原创 UOJ164 线段树历史最值查询

对于线段树的历史查询我们可以用一个二元组定义(a, b)表示+a对b取max 我们用二元组(a, b), (c, d)分别表示当前以及历史的标记; 注意顺序的问题很重要,提醒一下重载运算符会很方便,还要注意负无穷相加得太多会爆,合并时对标记-oo取max很有必要,好像很抽象,那我在代码里注释一下,防止大家被坑。。。。#include <cstring>#include <cstdio>type

2017-02-24 18:49:44 317

原创 POJ 3145 Harmony Forever

题意:给出”A x”&”B y”两种操作,前者表示查询数列中模x最小的数,如果相等的话,那么输出最近那个数进入数列的顺序  这样的操作容易想到线段树,但会发现建树时不知道怎么具体建树,可以充分利用一下数据范围,对于每个数都建立一个节点,然后直接做就好了,最重要的就是查询时, 对于1~mod-1, mod~2*mod-1, ……这样的一个一个查询,但是容易发现当模数很小的时候,这样会常数很大,不如直接

2016-12-21 19:27:11 267

原创 URAL K-based Numbers(1-3)

题意: 内存限制:1000K 我们定义一个合法的K进制数为一个不含连续两个零的K进制数。 例如: 1010230 是一个合法的7位数。 1000198 不是合法的数。 0001234 不是7位数,是一个合法的4位数。给你N,和K,M求出N位的K进制数的总数模M的值这个是Version 3的翻译,其实建议直接做Version 3,当然,如果想感受一下这个好题的魅力,可以从第一题一直做到第三

2016-12-17 10:17:26 309

原创 POj 3420

强行一道矩阵递推, 强行暴力矩阵水过 题目好懂就不说了, 其实我们可以先打一个暴力, 愉快地打完, 就是枚举i-1行的状态, 判断从这个状态可以使第i行的那些状态被更新, 然后就可以去想矩阵了, 那么很好想暴力一个16*16的矩阵直接弄好每个状态可以对应的更新, 然后自乘n次最右下角的元素就是答案了, 由于我这个题一开始想到的就是状压, 听说可以优化成4*4的矩阵, 那么就留给读者自己去想了, 其

2016-12-08 22:17:00 341

原创 Ural 1004 FLOYD最小环问题

题目大意: 给出一些双向边, 求图中的一个最小环, 当u-v被选中时, v-u不能被选, 按顺序输出这个最小环, n<=100 无解则输出。题目既然要求最小环,数据范围还这么小, 容易联想到FLOYD, 并且这里是双向边也没有什么关系, 因为只能选一条, 但题目比较麻烦的地方就是要输出这个环,我的处理好像和机房的人不一样。。。。。 我想到的办法是对于每一个i -> j的路径, 记下最优的中间点,

2016-12-04 22:17:48 325

原创 POJ 2566 Bound Found

题意 : 给你n个数字,这些数字可正可负,再给你个数字t, 求在这个数列中一个连续的子序列,和的绝对值 与t相差最小;数据范围较大, 考虑数字没有负数的情况, 能够想到用尺取法解决, (关于尺取法, 自己感受一下这东西的奇妙, 不好说, 理解了之后也没什么好说, 实现主要是首尾指针的移动), 那么增加了负数之后, 发现题目中要的是序列的绝对值, 发现直接排序前缀和即使用后面的前缀和减去前面的前

2016-11-15 13:15:37 293

原创 POJ 1639度限制生成树

题目就是给出一些英文名称, 并且要求源点为park的入度不能超过k 给出思路: 1.首先抹去park, 在剩下的连通分量中求出最小生成树加入答案, 此时的度是最小的, 即如果现在的度大于k, 则无解(题目好像没这个情况) 2.由于我们一开始删去了和park相邻的每一条边, 所以我们要加上每个联通子图到park的最小边, 但这样并不是最好的, 我们要把度加到k, 这样会使答案更优(至于具体的操作

2016-10-15 20:20:54 259

原创 POJ 1466 Girls and Boys (网络流Dinic)

从来就没有会过二分图匹配, 今天带来又一二分图匹配的水题网络流做法 跑的有点慢, 是直接dinic, 无优化, 博主暂时不会 思路: 1.建图时拆点, 将每一个人强行变成两边中的元素, one is 1~n, other is n+1~2n然后对于题目给的关系就直接两个连边, 2.由于这样求出的流量是我们把边加了两次的结果, 所以我们求出的匹配数是结果÷2, 题目求的是最大独立点集, 就用

2016-10-14 13:06:07 208

原创 POJ 2135Farm Tour--MCMF

最小费用最大流入门题, 基础算法原理:找出一条最小费用道路, 改变这条路上的流量不停增广循环这个过程好了没了, 当然你既然来做这个题的话, 最起码的增广路算法求最大流应该是会的, 上述原理的细节实现和那个算法基本一致;这个题难就难在建图, 因为要走两次, 容易想到要把源点和汇点的容量设为2 但对于边不能重复走过的情况, 处理很巧妙, 在存反向弧的时候要把这个反向弧的权值设成-w, 这样走

2016-10-10 21:08:59 326

原创 LG的数学计划----EXGCD

拖延了好久了, 多重要的一章, 马上写, 不能再拖了, 写完了去写作业首先介绍一下欧几里得算法gcd(a,b)=gcd(b,amodb) gcd(a,b) = gcd(b,a mod b) 内容很简单, 关于此定理的算法也称辗转相乘法, 且gcd(a, b) = gcd(b, a); 证明非常简单:我们令 a = kb+u; 则 u = a % b = a-kb;设gcd(a, b) =

2016-09-16 20:51:22 414

原创 LG的数学计划----分解质因数(Pollard-Rho算法)

1.对于我们朴素的求解质因数, 暴枚真是个好算法好吧一样的就不给出代码了, 2.对于另一种神奇的算法Pollard-Rho算法随机化算法, 与Miller robin有着密切联系, 可以先看一看两种算法都不难, 只是很神奇。。 这个算法也是一步步分解, 再递归求解, 但是它实现分解的过程非常奇妙, 我们如果在p中rand()分解, 这无疑是很愚蠢的。。。但是p又一定可以分解, 所以我们要while

2016-09-14 22:19:55 1178

原创 LG的数学计划之素数测试(Miller Rabin算法)

我们知道对于素数的一些处理方法, 1.暴枚求质因数,效率比较。。。。不排除大力出奇迹的情况 代码简单这里不给出2.素数筛选法,这个算法比起第一种效率好多了, 是许多题都会考察到的, 算法的思想是枚举每一种可能的质因数, 来求出大范围的素数, 即第一遍我们筛去所有2的倍数, 在筛去所有3的倍数, 5, 7。。。。。。。 最后把 sqrt(N)也筛一遍就好了, 那么可知剩下的就都是素数了,

2016-09-14 21:03:27 352

原创 1748. The Most Complex Number/LG的数学计划~~~持续更新ing(反素数求解)

神奇的反素数, 首先定义g(x) = x的约数个数而反素数就是对于任意的0 < j < i 有g(j) < g(i)那么就称i为反素数 那么从这个定义中可以发现的是, 反素数一定是由连续的质数相乘 即对于反素数x一定有x=2^t1*3^t2*5^t3………….. 注意一定要是连续的, 即t1, t2, t3, t4, t5……>0; 好吧说的不清楚, 给百度百科的说明对于任何正整数x,其约

2016-09-06 19:51:04 339

原创 BZOJ 物流运输

一个神奇的dp,,为数不多自己搞出来的dp。。。。 其实可以发现对于这个题, 单纯的最短路乱搞是错误的 那么,,,,dp 我们可以用cost[i][j] 表示从第i天到第j天的不换路花费, 当然算的时候保证这条路在i到j天都可以走, 那么是一定存在每个时间段不存在一条从起点到终点的道路的, 那么这个时候要判断一下赋值成+oo 我们再用dp[i] 表示前i天的总花费dp[i] = min{d

2016-09-05 21:46:57 395

原创 POJ 3255 A* k_th path

就是裸的求次短路,可以用k短路试试手 A*算法的估价函数可表示为: f’(n) = g’(n) + h’(n) 其中f(n) 是节点n的估价函数,g(n)是在状态空间中从初始节点到n节点的实际代价,h(n)是从n到目标节点最佳路径的估计代价。在这里主要是h(n)体现了搜索的启发信息,因为g(n)是已知的。如果说详细 点,g(n)代表了搜索的广度的优先趋势。 这里,f’(n)是估价函数

2016-09-05 20:23:56 291

原创 BSGS(baby step gaint step)+快速幂+exgcd逆元

一个神奇的算法, 快速求出 A^x=B(mod C),C是素数,求最小的非负x值 若x有解,那么 0<=x < C, 为什么?由费马小定理可以得a^(c-1) = 1(mod c) 那么0~c-1必定是一个循环节(不一定是最小的)。既然是%c,那么B一定是0到c-1之间的一个数。最坏的条件下,a的c-1以内次方%c的余数各不相同,那么在0~C-1时一定存在一个x满足条件。 那么不是最坏情况时,

2016-09-02 19:26:09 279

原创 POJ 2763 LCA+BIT

显然这个题是个好题,  需要修改边利用,前缀和思想动态维护, 每次查询u到v的距离 记下每个点(u)第一次在dfs出现及最后回来的位置, strart和finish 那么u连向其父亲的边在被修改是影响的只是start【u】和finish【u】之间的范围前缀和恰好可以运用, 还有就是要做一个点到边映射数组, 其实很简单。。哦对了, 相信BIT–树状数组这么6的东西大家都懂吧。。 代码虽然长了,

2016-08-18 21:18:26 221

原创 POJ 3728 tarjan+DP

从这个好题我终于去学了学Tarjan, 因为发现ST毫无意义, 除了预处理, 其他还是要借鉴Tarjan; Tarjan其实很简单, 其实就是对于询问也开一个邻接表, 两个点的LCA就是: 如果在访问u的时候发现v已经访问过了, 那么LCA就是find(u) 至于这个题up, down, max, min的作用就不说了, 网上的主流代码 是个好题, 初学Tarjan一定要去搞#include

2016-08-18 21:06:53 245

原创 Manacher O(n) 回文字符串查找算法

虽然在题目中, 这类算法出现得比较少, 但其效率的确很好并且不是很难懂, 所以学一下也总有用得到的时候;下面是一篇不错的博客, 推荐; http://www.open-open.com/lib/view/open1419150233417.html for(; s[i - len[i]] == s[i + len[i]]; len[i]++); 并说明一下, 有些读者认为这句话没有

2016-08-12 19:38:18 192

原创 HNOI 2002 营业额统计(Splay入门)

第一次写splay。。首先你必须要明确一些事情 -> 坚信splay不难, 好吧, 下面推荐一篇博客, 作为入门, 之后再做一下这道题(其实并不需要splay), 就可以开始splay之路了这道题没什么好解释, 裸题, 中文的, 不需要解释了参考了cxlove的博客code->#include using namespace std;#define N 100005

2016-08-09 18:06:13 326

原创 UVA-The Largest Clique 11324

最大团,problem:给一个有向图G, 求一个节点数最大的点集, 使得该点集中的任意两个节点至少要有一条路径->那么可知, G中的SCC要么都选, 要么都不选(不选是因为这是有向图选了之后的无法纳入范围), 那么问题就简单了将每个SCC缩成一个点, 变成在DAG上DP->code:#include #include #include #include usin

2016-07-30 18:45:39 251

原创 UVA-Proving Equivalences La 4287

题目很好懂, 讲下思路;把每个命题看成节点, 推导视为有向边, 得到一个有向图G, 那么题意就是如何添加边, 使G强连通(每个点都能互相到达), 把G中的强连通分量找出后, 缩成一个点使G变成一个DAG, 接下来设这个DAG上有a个节点出度使0, b个节点入度为0, max(a, b)这就没什么好证明的了, 很显然是这样的。。。code#include #include #in

2016-07-30 18:33:29 222

原创 UVA-Knights of the Round Table La3523

圆桌骑士;分析:如果两个骑士没仇, 那就连一条边, 这样得到一个图G, 那么问题就转化成了求G中的不在任何一个简单奇圈上的点的个数, 我们可以求出在的个数再做减又因为简单奇圈上的所有节点必定属于同一个双连通分量, 并且二分图没有奇圈, 所以问题就变成怎样判断一个双连通分量是否是奇圈见代码注释->*那么怎样判断一个双连通分量是奇圈呢?首先我们要接受两条定理,(1)如果一个双连通

2016-07-30 18:31:19 334

原创 noip2013day2T3华容道

这道题,写的很醉啊。。。。这种搜索的题,还带一点DP,各种bug调了好久,思路:60分做法就直接bfs乱搞,60分到手;ac套路:首先预处理出f[i][j][k]状态,对于点ij,空格在k方向就是开个【30】【30】【4】的数组,再用邻接表存下来,spfa跑一边最短路就好了,注意终点和起点是可能重合的;code:#include#include#include#i

2016-07-09 09:44:05 386

原创 2013年noip第三题货车运输truck(树链剖分LCA+最大生成树)

写这个题的时候,其实已经手撸出LCA——tarjan算法,下面给出一段我的LCA——tarjan模板,说真的真的很好写不能更好写了,大家可以看看别的tarjan算法再来看我的实现,个人觉得写的还不错(一定要先有了解不然可能看不懂)int dis[maxn], htop[maxn], sz[maxn], dep[maxn], hson[maxn], dist[maxn], fa[maxn

2016-07-07 16:32:02 876

原创 hdu1754线段树入门

第一次写博客,hdu1754的线段树裸题

2016-05-19 10:32:23 385 1

空空如也

空空如也

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

TA关注的人

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