自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 hdu5890 bitset优化0/1背包

额。。。bitset的优化呢,原来是n*m,10*87的时间复杂度在第二维的时候优化成了n*n,10 *10具体bitset怎么实现的呢。。看代码看注释#include #include#include#include#include#include#include#include#include#include#include#include#include

2016-09-21 16:06:40 335

原创 hdu5877 dfs+线段树离散化

不怎么会离散化,恩。。。记一下unique函数和lower_boud m =unique(b+1 ,b+m+1) - (b+1);删除重复元素,并返回最后一个元素的地址int l =lower_bound(b +1,b+m+1,k/a[u]) - b;b函数加入k/a[i]一起离散化。。查的时候就是查k/a[i]。。。恩b函数要sort#includ

2016-09-13 20:17:15 309

原创 hdu5773 2016年多校4 nlogn求LIS

先把0都去掉,然后不是0的数,减去它前面有多少个0(因为是严格单调增的nlogn求LIS用d[] 记录,当前为止,d[i]表示到目前为止,长度为i的上升子序列最末最小为d[i]。。。d[]肯定是不严格单调增的。。lower_bound。。。前开后闭区间,返回>=val的第一个位置int pos =lower_bound(d+1, d+len+1, a[i])- d;#i

2016-08-21 14:42:28 244

原创 hdu5714 百度之星复赛C

恩。。大概就是如果 y - z 转换成 y - z 为左端点,x + z 为右端点,的n 条线段把向右走的船看成固定不动的, 在这些船右边, 向左走的船在同一时刻最多有多少条now记录当前端点处,垂直河岸的线能交叉几条(向左,向右)线段,ans[i]记录当前端点右侧,垂直河岸的线最多能交叉几条(向左)线段sort的时候,先按位置从小到大排,再按左端点右端点排,最后按向左或向右排都无

2016-05-30 17:53:39 408

原创 hdu5673 卡特兰数+线性求逆元

机器人可以向左走或向右走或不动,在原点时只可以向右走,从原点出发N步回到原点公有多少种走法。走的那几步为  C(n,2*i), 走2*i步的方法等于Catalan(i)。。。入栈对应向右走,出栈对应向左走,不能从右忘左越过原点对应空栈的时候不能出栈。。。然后就是i从1到n/2 ,对 C(n,2*i) * Catalan(i)求和首先为什么要用逆元。。 (a/b) %p 不等于(a%p)

2016-05-11 19:43:39 490

原创 AC自动机简单题 hdu2222+poj2778

基本上是跟着kuangbin挂的题和模板做的,渣渣都不好意思膜。。。理解的AC自动机,在一个大串里找挺多小串,把小串构成trie树,根节点root 为 0,每个节点有一个序号,node[i][j]中i表示序号为i的点, j表示下一个字符为j,node[i][j]表示这个节点的序号fail函数表示失配后跳转到哪,在整个trie树中跳转,用BFS一层一层计算,跟KMP一样hdu2222就是

2016-04-10 11:12:02 306

原创 poj1061 扩展欧几里得

欧几里得:求a,b最大公约数的辗转相除法扩展欧几里得:一定存在x,y使得 a*x+b*y = gcd(a,b)成立证明见  http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html 这个博客题意:(n-m) *t + L *p = x-y    设 a= n-m      ,b=L     ,x-

2016-03-05 19:40:22 389

原创 hdu3555+cf55D 数位dp入门题

就做了3道入门题。。。的瞎总结,一般题目为计算l~r中间有多少个符合条件的数,l和r的范围极大=,=最后结果为cal(r)- cal(l-1)dp[i]表示到第几位为止,例如dp[4]表示0000~9999dp[i][j][k]    j,k...表示状态位cal函数把l或r拆成一个一个的数字,然后dfs往下枚举每位上是0~9的数字,都有多少个符合的数limit 0/1 表示后

2016-03-05 13:07:06 450 1

原创 01背包 15CCPC D题

http://acm.uestc.edu.cn/#/problem/show/1218首先01背包FOR(i,1,n)FOR(j,0,V)dp[i][j] =max(dp[i-1][j],dp[i-1][j-c[i]]+w[i]);空间优化,用一维数组实现,dp[i]这个可以省略,注意第二层循环倒着来FOR(i,1,n)FOR(j,V,0)dp[j] =ma

2015-11-07 19:53:33 288

原创 duoj Almost sorted interval 单调队列

听说校外打开要看人品~http://acm.dlut.edu.cn/problem.php?id=1327求第一个数最小,最后一个数最大的区间个数单调队列,区间查询q1记录作为最小的,q2记录作为最大的cnt为i结尾有多少区间,初始值为1,注意减为0后tail2减一#include #include #include #include #include #in

2015-10-20 16:12:20 337

原创 poj2481 树状数组

树状数组模板题,如果有牛的区域能全覆盖目前牛的区域,那么该牛比目前牛强壮首先按e从大到小排,如果一样按s从小到大排a数组记录的是ans,及到x为止的前缀和注意两个区域相等时结果也相等而不算全覆盖#include #include #include #include #include #include #include #include using namespace

2015-10-08 15:39:47 336

原创 RMQ模板题 poj3368

在线算法,预处理O(n*log n),询问 O(1)第一次学RMQ做的模板题。。。注意f【】数组保存的值,所以询问L,R的时候知道L和前面的值不一样再进行询问另外切开k的位置不需要计算那块有多少连续的,因为f【k】的值本身就记录了。。。#include #include #include #include #include #include #include using

2015-09-23 14:27:06 274

转载 poj3694 连通图+LCA

不缩点,直接在原图中找LCA,求桥时记录每个节点的父亲节点找LCA时,先将两点上升到同一层次,然后一起再向上找父亲节点,遇到桥就把桥标记删除,画一下图就清楚了#include #include#include#include#include#includeusing namespace std;#define maxn 100010#define FOR(i,j,k) for(

2015-09-18 20:57:25 298

原创 hdu5438 拓扑+并查集 2015长春网赛

刚学拓扑排序,记录图用链式向前星用vis和queue删 度为1的点然后并查集或dfs算结果。。拓扑很容易死循环+查代码查了好久。。。#include #include #include #include #include #include using namespace std;#define FOR(i, l, r) for(int i = l; i <= r; i

2015-09-15 18:15:03 346

原创 poj3177 双连通分量

无向图,存成有向图,一条边存成两条强连通的时候就会导致重边形成环,用fa记录来自的边,注意并且用flag判断是否只有一条那样的反向边求需要添多少条边成双连通,记度为1的强连通分量数为ans,结果为( ans + 1 ) / 2#include #include#include#includeusing namespace std;#define maxn 5000+5#de

2015-09-14 17:33:31 312

原创 hdu 1024 dp

dp[i][j]取i段,最后一位为a[j]和的最大值dp[i][j]=max(dp[i][j-1]+a[j]+dp[i-1][k]+a[j])  (i-1用pre数组代替dp[i]那一维,每次加取一段的时候滚动,储存j位之前的最大值最后输出m段时前n位最大值maxx太渣理解得特别困难。。。手动模拟一下=,=#include #include #inclu

2015-09-09 18:35:59 212

转载 hdu2866 数论Prime

化简一下得到 n^2 *( n + p ) = m^3 假设 n^2 和 n+p 之间有公共素因子 p , 那么 n+p = k*p , 即 n=p*(k-1),带进去得到 p^3 * (k-1)^2 *k = m^3 , (k-1)^2*k 肯定是不能表示成某一个数的三次幂的,假设不成立所以 n^2 和 n+p 之间没有公共素因子 p , 那么可以假设n=x^3 , n+p=y^

2015-08-21 17:22:07 330

转载 poj2528线段树+离散化+二分

真是非常的高端T_T看了两天题解才理解,不停的RE最后数组开的非常大。。。下面贴hash的方法解法:离散化,如下面的例子(题目的样例),因为单位1是一个单位长度,将下面的      1   2   3   4  6   7   8   10     —  —  —  —  —  —  —  —      1   2   3   4  5   6   7   8离散化  X[

2015-08-14 14:58:15 238

原创 poj1067 威佐夫博奕(Wythoff Game)

前几个必败态(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。找规律得出A=ak,B=ak+k1/a+1/(a+1)=1于是A=(sqrt(5)+1)/2k#include #include #include #include #include using namespace std;#define F

2015-08-12 15:40:36 269

转载 hdu4055 dp

好高端的dp。。。。。dp[i][j]表示:处理完第i位,序列末尾为j的序列共有多少个‘I’:dp[i][j] = sigma{dp[i-1][x]},其中1≤x≤j-1,可进一步简化,dp[i][j] = dp[i][j-1]+dp[i-1][j-1] ‘D’:dp[i][j] = sigma{dp[i-1][x]},其中j≤x≤i-1,可进一步简化,dp[i][j] = dp[i-1]

2015-08-10 15:44:41 228

原创 poj1679次小生成树

次小生成树:是否存在多种情况的最小生成树把最小生成树连的边保存起来,然后循环,不用其中任意一条边形成最小生成树跟原来答案是否一样#include #include #include #include #include #include #include using namespace std;#define FOR(i,j,k)   for(int i=j;iconst int mod=

2015-08-05 15:46:33 181

原创 poj2912 带权并查集,类似食物链

真是看不懂题目,看题解才知道它要干嘛枚举裁判。。如果只有一个裁判,输出确定他人不是裁判所需最大行数,用数组error记录如果没有裁判输出impossible,多个裁判不确定注意unionset推的关系#include #include#include#include#include#include#include#include#include#include

2015-07-20 19:39:26 307

原创 poj1733 带权并查集+map

开始看题目姿势不对,然后发现是n的长度是1000000000不是串的长度,又发现输出是最多符合前几项这类区间并查集都维护一个权值终于感觉理解了,左区间需要-1由于数组开不下,但询问只有5000条就可以用map存,hash不会。。。还是re因为初始化的时候不是FOR(i,1,n)是FOR(i,1,5000)#include #include#include#include#inc

2015-07-18 10:54:43 278

转载 LightOJ1074 SPFA判负环

不怎么会SPFA,当模板用吧复杂度O(ke)k约等于2用cir[]数组纪录有没有负环#include #include #include #include #include #include #include #include #include #include using namespace std;#define FOR(i,j,k) for(int i=j;i<

2015-07-16 19:44:08 278

转载 poj1062 native dij

就是dij求最短路,输入的时候注意用s[0][i]保存物品本身的值交换物品不是两两之间符合等级就可以,是整个交换过程都要符合所以枚举一下等级每次都dij好了=,=#include #include#include#include#include#include#include#include#include#include#include#include#inc

2015-07-15 15:12:06 240

转载 poj3159 dijktstra+heap

dijkstra   复杂度n方,加上优先队列复杂度nlogndijkstra+heap 换模板改模板,希望这个模板能用吧。。。两个结构体一个纪录点一个纪录边#include #include#include#include#include#include#include#include#include#include#include#includeusing

2015-07-14 14:47:20 409

原创 poj3660 floyd

感觉不怎么算最短路呢,floyd的改变吧。。。mp[i][j]表示i在j前面一个点如果已确定在它前面和在它后面一共有n-1个点,就确定排名了有人说是闭包传递是什么鬼,留着。。。#include #include #include #include #include #include #include #define FOR(i,j,k) for(int i=j;i<=k;

2015-07-12 19:15:43 411

转载 poj3259 bellman判正环

继续bellman判正环注意path是双向的,虫洞是单向的d[510]为各点与源点距离,然而没有源点。。。各点之间初始一样就可以#include #include #include #include #include #include #include #define FOR(i,j,k) for(int i=j;i<=k;i++)using namespace std;

2015-07-12 14:49:30 241

转载 poj1860 bellford man判正环

bellford man判正环共能连n-1条边,松弛n-1次后若能继续松弛就是有正环#include #include #include #include #include #include #include #define FOR(i,j,k) for(int i=j;iusing namespace std;int n,m;int s; //持有

2015-07-12 13:50:37 335

空空如也

空空如也

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

TA关注的人

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