自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cjk_My steps

千里天青染了驿道

  • 博客(14)
  • 问答 (2)
  • 收藏
  • 关注

原创 BZOJ2120 数颜色(分块)

【题解】用数组pre[i]记录颜色i上一次出现的位置 则颜色C在{left,right}中第一次出现等价于:pre[C]分块后,在每块中将pre值升序排列 先考虑查询:两头不完整的块内暴力,完整块之间二分查找小于left的pre值 在考虑修改:将第x个数颜色变为y,会影响到:1. 原来pre[]==x的数的新pre值:在x之后的每个块中二分查找pre[]==x的值是否存

2015-05-29 19:24:27 704

原创 [NOI2007]生成树计数(状压dp+矩阵加速)

【题解】考虑动态规划的状态转移:从左往右,加入第n个结点时,只考虑它向前连的边,那么答案就与向前连哪些边,以及之前的n-1个点构成的答案有关 然而,"向前连哪些边"并不是有2^k种情况 前n个点构成了许多连通块,而非一棵树 因此,结点n引出的边既要使结点1~n连通,也不能构成环 而n只能向 n-k ~ n-1 连边 所以n的答案只与结点n-k~n-1的连通性有关 

2015-05-28 01:43:20 658

原创 BZOJ1096 [ZJOI2007]仓库建设(斜率优化dp)

【题解】显然,工厂n一定是要建设仓库的,可以设 f[i]:工厂i建设仓库时前i个工厂的最小花费 则:f[i]=min{ sigma( (xi-xk)*pk ) + f[j] +ci },0设 s[i]=p[1]+p[2]+…+p[i],t[i]=x[1]*p[1]+x[2]*p[2]+…x[i]*+p[i]则:f[i]=min{ xi*(si-sj) - (ti-tj) + f

2015-05-25 01:22:31 435

原创 BZOJ1452 [JSOI2009]Count(二维树状数组)

建立n(color)个二维树状数组即可 #include#includeint map[305][305],c[105][305][305];int n,m;void xg(int color,int p,int x,int y){ int i,j; for(i=x;i<=n;i+=i&(-i)) for(j=y;j<=m;j+=j&(-j)) c[color]

2015-05-20 02:08:18 539

原创 BZOJ3631 [JLOI2014]松鼠的新家(树链剖分)

直接进行树链剖分 每一轮,路径上的点加1最后输出答案时,除起点外的结点权值要减1只用到区间增减,单点查询和值,因此并不需要线段树来维护 另一种思路:类似前缀和的思想 从起点x到终点y,只需给x,y两个结点加1,给LCA(x,y),fa[LCA(x,y)]减1,最后做一次从底到根的递推即可求出每个点在多少条链上 树剖:#include#include#in

2015-05-20 02:04:42 1320

原创 BZOJ3643 Phi的反函数(数论+搜索)

题意:输入n设 x = p1^a1 * p2^a2 * …* pm^am (m则 n == phi(x) == x * (p1-1)*p1 * (p2-1)*p2 * …* (pm-1)*pm     == p1^(a1-1) * (p1-1) * p2^(a2-1) * (p2-1) * …* pm^(am-1) * (pm-1)可以发现:(p1-1)*(p2-1)* …

2015-05-20 02:02:23 1117

原创 BZOJ3223 文艺平衡树(Splay)

【题意】维护一个有序数列,支持翻转一个区间【代码】#include#includestruct Node{ Node* ch[2]; int v,s,f; int cmp(int x) const { if(x==ch[0]->s+1) return -1; if(xs) return 0; return 1; }};Node *root,*

2015-05-14 02:41:44 563

原创 BZOJ3224 普通平衡树(Treap实现名次树)

【题意】Description您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大的数)6. 求x的后继(后继定义为大于x,且最小的数)Input

2015-05-14 02:41:18 517

原创 [APIO2010]特别行动队(斜率优化dp)

【题解】设s[i]=x[1]+x[2]+……+x[i]则:f[0]=0    f[i]=max{ f[j]+zdl(s[i]-s[j]) } ( i>0 , 0    若 j不比k差 则:f[j]+a*(s[i]-s[j])^2+b*(s[i]-s[j])+c >= f[k]+a*(s[i]-s[k])^2+b*(s[i]-s[k])+c整理得:     f[j]+a*

2015-05-06 02:22:10 547

原创 [APIO2009]采油区域(枚举+递推)

切分矩形,递推辅助:观察分割方案,可(很)以(难)发(想)现(到),将m*n的格子切两次,成为三个矩形区域,三个k*k的块一定分别包含于其中一个区域 题目就转化为:求指定矩形区域中的最大的 k*k块的元素和 考虑用递推来预处理,优化枚举效率 预处理:二维前缀和 s[i][j]:右下角为(i,j)的k*k块的元素和 ul,ur,dl,dr[i][j]:从 左上角、

2015-05-05 02:08:07 1321 1

原创 [APIO2009]抢掠计划(强连通分量+缩点+拓扑排序+dp)

题意:给定一个有向图,从指定起点出发,到任意一个指定终点停止,求经过的所有结点的最大点权和。点数、边数因为一个强连通分量内的点相互可达,所以如果要经过其中一个点,就应经过它所在的强连通分量内的所有点,因此将一个强连通分量缩成一个点 这样得到了一个有向无环图,在图上dp即可 先对所有起点可达的点做一遍拓扑排序,然后用队列维护入度为0的点,每次取出队首元素,用它的答案更新其他点

2015-05-03 23:30:18 705

原创 [NOI2009]诗人小G(决策单调性优化dp)

【题解】经典的1D1D动态规划优化 状态转移方程:f[i]=min{ f[j]+abs(s[i]-s[j]+i-j-1-l)^p } 决策单调性及证明:http://blog.csdn.net/jasonzhu8/article/details/5928552因此,对于每个数,其能作为最优决策的区间一定是连续的一段,对于新求出的f[i],从后往前在i-1,i-2

2015-05-01 22:52:29 1422

原创 [NOI2009]变换序列(二分图完美匹配)

【题解】容易想到:在每个点i与满足dis(i,j)==D[i]的点j间连一条边,这样构成了一张二分图 那么题目转化为:二分图是否存在完美匹配?·否:No Answer·是:记 1,2,…,n 的匹配点为 T[1],T[2],…,T[n],输出一组字典序最小的 T[1],T[2],…,T[n]在匈牙利算法中:扩展增广路的过程中,那些匹配点改变的点都是已经匹配上的点(以

2015-05-01 22:13:54 563

原创 [NOI2013]矩阵游戏(矩阵乘法+十进制快速幂)

题目大意:一个n行m列的矩阵,F[1][1]=1F[i,j]=a*F[i][j-1]+b (j!=1)F[i,1]=c*F[i-1][m]+d (i!=1)其中:1输出F[n][m]除以1,000,000,007的余数如果用快速幂的话,需要把十进制数n,m转化为二进制,而n,m要用字符串来存储且极大,所以会TLE这里使用十进制快速幂另外,构造的矩

2015-05-01 21:33:36 848

空空如也

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

TA关注的人

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