自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 LCS,LIS,LCIS

LCS最长公共子序列:状态方程是dp[i][j]——并未定义必须以谁谁谁结尾,就是代表a序列从1-i,b序列从1-j的最长公共部分的长度状态转移:1->当a[i] == b[j]的时候很明显dp[i][j]的值==dp[i-1][j-1] + 1                 2->当a[i] != b[j]的时候,要去寻找最优解,肯定是max(dp[i-1][j],dp[i][j-...

2018-02-28 11:33:01 279

原创 拓扑排序与VAS图

VAS图(我的理解)就是由一系列计划得关系得出的单项图例如c1->c2表示要进行c2必须要进行c1,描述完所有计划的先后关系后,也就得到了一张图,对这张VAS图进行排序就是拓扑排序,排序得结果就是所有计划进行得先后顺序,因为存在并列的计划,所以排序结果并不一定唯一。 思想就是利用图论得一些知识 先对队列进行初始化——循环遍历所有的点,如果发现点的入度为0的化就入队,由于题目大都会加上一个限制:尽

2018-02-27 14:42:46 578

原创 补一下素数筛

陆历川很热爱数学,最近他学了质数,他被质数深深的吸引了,但是陆历川有个习惯,他喜欢给一些东西编号,所以他决定给所有的质数编号,例如给2编号1,3编号2,5编号3........这样2,3,5就是质数里面的大当家,二当家和三当家了,陆历川现在知道了这些编号,现在他会给你一个数,他想知道这个数的所有的质因子里面的最大编号是多少?注:0和1的编号都是0。Input一个自然数N(0<= N &l...

2018-02-26 17:08:46 271

原创 莫比乌斯反演!!!

额,很痛苦,看了一篇一篇的博客,总算是能说出来个东南西北了,但是肯定还没融会贯通,先记录一下把,就不提证明了。首先要根据题意定义出函数f(n),g(n),这两个函数中你得知道一个函数的结果,利用已知的函数的值去推到另一个函数的值,谓之反演,以HDU1695为例,构造的思想是很巧妙地f(n)为 有多少对(x,y)满足 gcd(x,y)== d 的倍数 。g(n)为有多少对(x,y)满足 gcd(x,...

2018-02-26 16:55:37 279

原创 初识欧拉函数

    小于n的正整数中与n互质的数的数目(φ(1)=1)有几个性质:* p的欧拉函数的值:当n为质数的时候值为n - 1* p^k的欧拉函数为p^k - p^k-1=p^k(1 - 1/p)[p为质数,k为大于等于1的正整数]        :因为p是质数,所以当一个数不包含质数p才可能与n互质,所以一共有p^k-1个数据1*p,2*p,3*p……p^k-1 * p* 若n = p1 * p2 ...

2018-02-25 21:03:09 258

原创 SG函数

初识博弈的时候了解了P点和N点,进而可以学习SG定理及其函数游戏和的SG函数等于各个游戏SG函数的Nim和定义mex运算mex(s)表示最小的不属于S集合的非负整数对于SG(x) = mex(s) S集合是遵守游戏规则的前提下取了石子之后,可能出现的所有的情况的集合也就是后继状态void getsg(int n){ int i,j; memset(SG,0,sizeof(SG))...

2018-02-25 16:37:01 453

原创 初识博弈

初始了解了一些博弈,根据特定的规则,学习了一些只会和规律首先是   巴什博弈:HDU1846,最基本的先手后手赢问题,对于一堆石子我要采取什么拿的方法才能让对方最后无子可那呢,那就是在我拿完之后尽可能的让n是m+1的倍数(n是总数,m 是我能拿的上限) int flag = n % (m + 1); if(flag >= 1)cout<<"first"<&l...

2018-02-25 15:39:36 192

原创 Floyd & 状压DP —— poj331

一开始得思路有一点小问题,把他想成最小生成树+floyd算法来做了,但是再状态得重复上以及往回走得vis判断上出现了问题,我就觉得思路不对了,看了下题解,用的时floyd算法求最短路,然后利用Dp遍历状态,求总体的最短路,也算借助此机会复习了一下最短路了(悲催的时,最短路得学习过程中,就忽略了暴力得floyd得学习(转载……))  Floyd算法是一个经典的动态规划算法。用通俗的语言来描述的话,首...

2018-02-21 11:07:51 242

原创 不相邻问题——状压Dp——HDU1565,POJ3254

先做的HDU1565方格取数问题,在格点取数,所取得数不能相邻,问最大能取得总和是多少容易想到——dp[i][j]表示当前i行j状态所取得数,如何dp呢???首先针对每一行找到可以通过得方方案(左右不相邻即可——存储到pass_state【】中)void find_pass(){ for(int i = 0;i < (1 << N);i++) { ...

2018-02-20 16:41:37 330

原创 状压Dp

入门题是一个摆棋盘得问题,n * m得棋盘中可以摆放1 * 2 和 2 * 1 得棋子,问你摆满有几种摆放得可能,比较特得是n得范围特别小,m得范围大一些,这就是一个标志,可以向状态压缩上靠拢。首先得寻找一个状态,这个状态的值就只有0和1——可以用二进制来表示,就是2^n,所以这也是为什么n得范围会很小的原因了,我们可以遍历每一列,然后取舍当前列的摆放,用0001001表示对下一列得影响(横着放的...

2018-02-18 20:01:57 286

原创 离散化—区间覆盖——线段树实践POJ2528

离散化——目的是压缩区间范围——优化线段树区间覆盖问题——传统的cover数组再加上——这个题目的特殊性——计算的是最终能看到海报的数量——所以节点的值在这里我的含义是第几张海报覆盖了这个节点好,看一下准备工作#include <iostream>#include <algorithm>#include <string.h>using namespac...

2018-02-13 16:32:12 372

原创 漂浮法——线段树POJ2528

顾名思义,是让每一个线段(海报)往上飘,美中不足的是有一点耗时但是这个方法非常好懂,也很好实现,我还是要做一下记录的for(int i = 1;i <= n;i++) { scanf("%d%d",&l[i],&r[i]); } int ans = 0; ...

2018-02-12 09:48:15 366

原创 线段树——求最小逆序数

越学线段树越觉得线段树是树状数组的升级最小逆序数的学习是HDU1394求出一个序列的逆序数后如果把头上元素a[1]放到末尾那么逆序数sum的变化为sum += (n-1-a[i])-a[i];n为序列长度,a[i]就是第一个元素的值,来回遍历一遍就可以得到最小逆序数了#define lson i<<1,left,mid#define rson i<<1|1,mid + 1...

2018-02-11 10:54:24 436

原创 线段树——二分AC率的学习

这个题是HDU6070本来以为线段树不过如此啊,就那几个模板函数,但是看了这个题不仅没和线段树联系起来,简直是一点思路都没有啊,看了很多博客讲解也没看到,就自己一直再里面打表进行理解,理解后,自己又写了一遍,A了现在觉得针对区间的操作,能和区间沾点边的都是线段树~~~题意很简单,让你求【i,j】 / len【i,j】的最小值,就是让你求区间i,j内不重复元素的个数 / 区间i,j的长度的最...

2018-02-10 11:20:05 297

原创 延迟标记——线段树进阶

延迟标记理解起来是很好理解,但是用代码实现却对我来说有些困难,可能是递归,优化,以及区间操作的原因,弄得我现在有点昏昏的,写一个博客,整理一下思路根据题目可以以下的准备工作这是第一个学习版本,求和以及sum延迟标记add都放在了结构体外面,使用了宏定义来简便代码的书写,数组开的大小依据题目,练习题目是POJ 3468     A Simple Problem with Intege

2018-02-07 20:17:22 1210

原创 初识线段树

虽然学的不多,但是学习线段树的时候,还是让我想起了堆排序,对堆的维护就类似线段树的更新操作。总之,线段树是一个完全二叉树,利用了二分的思想,大大优化了对于区间的一系列操作这就是一个最基本的结构,针对这个结构来看一看我们的基础准备const int max_node = 1 << 19;const int Max = 2e6 + 10;//针对题目struct node{

2018-02-07 15:27:53 179

原创 二维树状数组——poj1195

题目大意:二维区间呢,你要设法求出任意一个给定子区间内的活跃手机数量,并且设法更新任意区间内的值初识树状数组,在一维上很好理解,到了二维,仿照学习数组时,从一位数组过度到二维数组的方法,大可以把二维树状数组看成一个一维树状数组,只不过这其中的每一个C[i]都表示的是一个一维树状数组对于求和c[i],你要求出所有包含其中的j(一维树状数组求和)long long Sum(int x,in

2018-02-07 11:19:29 306

原创 初识线性dp

线性dp其实早就研究过了,最长连续子序列问题,但是今天又发现了一点——最长上升子序列的长度就是不下降子序列的个数,这句话对HDU1257这个题的解很有帮助,但是咋证明嘞,我也还没证明出来,只是想到了自己的理解方式,最长上升子序列的长度一定能平分进每一个下降子序列的个数例如6 2 3 7 1 2 3 4有很多方法都是4个:2 1 || 3 2 || 6 3 || 7 46 2 1

2018-02-04 21:25:53 361

原创 树状数组与逆序数——树状数组实践POJ3067

题目大意——东有N座城,西有M座城,分别从南到北排序号,东西要修N条路,问你这N条路的形成的十字路口有几个这是学习了树状数组的第一道题,很难和树状数组联系上来,做的很是艰难,但是我觉得做了这个题之后,我对树状数组的理解一定加深了一个层次!利用逆序数,就是先排序东边的城市(序号)从大到小,如果相等,再按西边从大到小排序,然后开始检查路线,并且更新树状数组, for(int

2018-02-03 23:47:16 207

原创 树状数组初体验

接触的第一个树状数组,拿的POJ1166裸体练的手基础的树状数组需要你先初步明白他的数据结构(二分的思想)之后的代码实现就比较简单了三个主要函数代码int lowbit(int x){ return x&(-x);}void add(int i,int value){ while(i <= N) { c[i] += value;

2018-02-03 22:08:05 173

最大流DInic算法(链式前向星)

给师弟师妹们讲网络流Dinic算法与可行流用到的讲义,感觉还是不错,分享一下~

2019-04-26

空空如也

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

TA关注的人

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