自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【SCOI2008】【数论】着色方案

看到这种方案数特别多的题目就想推公式。。。最朴素的可以想出15维的方程来递推,但其实C值不同的木板只有5种,而它们的本质都是相同的。这样我们可以设计一个6维的方程f[a][b][c][d][e][last]表示C值为1 ~5的油漆颜色总数,last表示上次选的油漆的C值方程的话就很直观了,使用记忆话搜索实现。代码:#include#includeusing namesp

2013-04-27 21:35:13 752

原创 【hdu3037】【Lucas定理】Saving Beans

经过推导答案为C(n + m,m)但是n和m的范围相当大,所以我们可以使用Lucas定理,它可以用来解决大组合数取模的问题。定理的内容:A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0])  mod

2013-04-27 16:32:06 664

原创 【SCOI2007】【最小费用最大流】修车

需要一定思考才能建出模型的费用流。设有n辆车,m个维修人员每辆车看作一个点u,连边s -> u,容量为1,费用为0然后将每个维修人员拆成n个点,连边u-> v,容量为1,费用为k * time[u][v](k表示拆分的n个点中的第k个点),实际意义为第v个维修人员在倒数第k个位置修第u辆车最后对于所有与维修人员相关的点,连边v -> t,容量为1,费用为0做一次

2013-04-26 17:13:48 579

原创 【SCOI2007】【最大流】蜥蜴

非常直观的建图方法。对于有蜥蜴的格子,从源点向该点连一条容量为1的边,对于每个石柱拆点u,u'连边u-> u',容量为石柱高度对于任意两个可以到达的石柱u,v,连边u' -> v,容量为inf对于任意一个可以跳出边界的石柱,连边u' -> t,容量为inf做一次最大流即为最多能逃出的蜥蜴数量代码:#include#include#includeusing na

2013-04-26 16:58:31 757

原创 【poj3580】【splay】SuperMemo

做过维护数列那道题后这道题做起来好多了。主要说一下REVOLVE操作,要求把[l,r]这个区间的数向后循环t次,其实这个操作相当交换[l,r - t]与[r - x + 1,r]这两个区间,不过操作的时候注意要把t先对区间长度取模。其他的操作就比较简单,类似维护数列。代码:#include#include#define keyTree ch[ch[root][1]][0]

2013-04-24 08:56:10 620

原创 【poj2777】【线段树】Count Color

非常水的线段树了吧,注意到最多只有30种颜色,所以我们可以对线段树的每一个节点用一个数来表示这个节点有哪些颜色,最后直接用位运算统计。需要注意的地方:1、一开始所有的颜色都为12、有可能出现a > b的情况代码:#include#include#define lson l,m,rt << 1#define rson m + 1,r,rt << 1 | 1using na

2013-04-23 09:04:08 578

原创 【hust1024】【二分法】【最大流】dance party

首先二分一个答案,然后将男孩和女孩都拆为2个点,源点s向男孩1连一条容量为二分值的边,女孩2向汇点连一条容量为二分值的边,男孩1向男孩2连容量为k的边,男孩1向喜欢的女孩1连容量为1的边,男孩2向不喜欢的女孩2连一条容量为1的边,女孩2向女孩1连一条容量为k的边,若最大流 >= n * 二分值,说明可行。代码:#include#includeusing namespace std;

2013-04-22 11:46:05 687

原创 【hdu3046】【最小割】Pleasant sheep and big big wolf

很直观的最小割模型。建图方法:1连源点,2连汇点,容量为inf,格子之间连边,容量为1代码:#include#includeusing namespace std;const int dx[] = {-1,1,0,0};const int dy[] = {0,0,-1,1};const int inf = 0x3f3f3f3f;const int cns = 200 + 1

2013-04-22 11:41:10 548

原创 【zoj2334】【左偏树】Monkey King

题目大意:N个猴子,打了M次架,每次打架的时候双方猴子都会派出自己一方战斗力最高的猴子,打完架后这两只猴子的战斗力都减半。同时,不打不相识嘛,两方猴子打完架后就互相认识变成同伙不会再打架。输出每次打架后通过这次冲突合并的那一伙猴子中战斗力最高的猴子的战斗力值,如果冲突双方在同一伙的话直接输出-1就好。可以使用并查集来维护两个猴子是否互相认识,并且找出它的根节点,同时也是战斗值最

2013-04-18 11:00:36 675

原创 【hdu4010】【link-cut tree】Query on The Trees

题目大意:给出一棵树,有四种操作:1、连接两棵子树2、断开树上的一条边,使其成为两棵子树(Ps:必须以x为跟,断开y的子树)3、给x到y这个路径上的所有节点增加w的权值4、询问从x到y的路径上点权最大的值写这种代码量稍微长一点的我总是要手残。。。第2个操作Ps中的内容我最开始没注意到,调了很久都WA,最后去网上找到标程才发现。所以认真审题真的很重要,有人在考试中为了

2013-04-16 10:33:24 663

原创 【ZJOI2008】【link-cut tree】树的统计

这道题写了比较久。。。主要是手残比较多关键的一点是由于题目直接给出了树的每条边,所以建树要用dfs来建,我最开始使用access(x)然后pre[x] = y的方法要WA,不过我感觉这样做是对的。。。当然这种感觉上对的方法不但是错的,而且效率肯定不如dfs其他的就是动态树的基本操作了,没什么好说的。代码:#include#include#includeusing name

2013-04-15 20:19:06 515

原创 【ZJOI2008】【树形动态规划】骑士

分析图的特点可以发现,该图是由n个点n条边构成,并且可以由多个连通块构成,每个连通块最多只有一个环。所以图上点的情况只有两种:在环上或不在环上对于不在环上的点可以直接使用树形动态规划求解。对于在环上的点,只需要分两种情况:选了第一个点,或者选了最后一个点,取一个最大值就行。动态规划状态:f[i][0],f[i][1]分别表示选了第i个点和不选第i个点的最大武力值。转移方

2013-04-14 16:39:31 722

原创 【JSOI2007】【后缀数组】字符加密

后缀数组的水题。将字符串再复制一份到末尾,剖环为链。然后求出sa,那么后缀在前pos个的后缀的末尾字符就是答案。代码:#include#includeusing namespace std;const int maxn = 200000 + 10;int wa[maxn],wb[maxn],ws[maxn],wv[maxn],sa[maxn],r[maxn],rank[ma

2013-04-14 10:56:11 501

原创 【SDOI2008】【link-cut tree】洞穴勘测

题目大意:维护一个森林中两点的连通性情况,有插入一条边和删除一条边两种操作。直接使用link-cut-tree维护森林的连通性即可。注意在找出一条路径后需要维护splay上的翻转标记。还有就是splay旋转的时候不能写把两种情况合在一句写,这样有可能引起死循环!这个Bug我找了很久。以后一定要注意,见注释的那句话。代码:#include#include#include

2013-04-14 10:37:50 553

原创 【APIO2009】【强连通分量】【DAG】抢掠计划

先将原图缩点,原图变为DAG,然后记忆化搜索找最大价值即可,水题。。。代码:#include#include#includeusing namespace std;const int maxn = 500000 + 10;struct pnode{ int pos; pnode *next; pnode(){} pnode(int pos,pnode *next):po

2013-04-10 21:36:31 773

原创 【HAOI2010】【强连通分量】【树形动态规划】软件安装

这道题是一道水题。。。由于软件的依赖关系可能是一个环,所以先将原图缩点。将缩点后的树转化为二叉树后f[i][j]表示以i为跟的子树分配j的空间得到的最大价值,l[i],r[i]表示i的左儿子和右儿子则f[i][j] = max(f[r[i]][j],f[l[i]][k] + f[r[i]][j - k - w[i]] + v[i])使用记忆化实现。代码:#include

2013-04-10 09:02:45 1132

原创 【APIO2010】【树的直径】巡逻

当k = 1的时候,显然直接求出树的直径后减去路径上权值即可当k = 2的时候,我们可以先dfs出树的直径,然后将路径中的每一条路权值赋为-1,再求一次直径,把两次的直径长度减去,ans = ((n - 1) - len关于树的直径的求法,可以使用树的一个性质:树的直径的长度一定会是某个点的最长距离f[i]与次长距离g[i]之和。于是可以使用一次dfs求出次短路和最短路和的最大值即为

2013-04-09 21:40:43 834

原创 【APIO2010】【斜率优化DP】特别行动队

看到这道题会很容易想到是动态规划。然后朴素的方程也很容易写出:用f[i]表示将前i个士兵分组得到的最大战斗力,sum[i]表示前i个士兵战斗力总和f[i] = max{f[i], f[j]+ a * (sum[i] - sum[j]) ^ 2 + b * (sum[i] - sum[j]) + c}但是这样做是O(n^2)的,对于n的范围来数肯定超时。于是我们考虑f[i

2013-04-09 21:33:36 620

原创 【NOI2005】【概率动态规划】聪聪和可可

这是一道求数学期望的题目,可以使用动态规划求解。首先聪聪要逐步向可可靠近,所以我们按照题目要求预处理出p[i][j]表示i -> j的最短路上与i相邻且标号最小的点,可以使用n次spfa来实现。聪聪下一步所在顶点为p[p[i][j]][j],可可下一步可能在相邻的顶点或者不动,用w[j][i]表示设计状态:f[i][j]表示聪聪在顶点i,可可在顶点j时聪聪抓住可可的平均步数转移

2013-04-09 12:35:24 747

原创 【hdu3473】【划分树】Mininum Sum

题目大意: 给出一个数字序列,每次询问[l,r],要求从[l,r]中找出一个x,最小化∑abs(x - xi),i ∈ [l,r]首先容易得到,题目要求的是找出一段区间中位数,输出∑x - xi,x为中位数去掉绝对值后,我们可以得到ans = x(leftnum - rightnum) + (rightsum -leftsum)leftnum和leftsum分别表示中位数左

2013-04-08 17:36:45 608

原创 【ZJOI2007】【斜率优化DP】仓库建设

看到题目,容易写出朴素的规划方程:f[i]表示在第i个点建设一个仓库,前i个货物点运送的最小总费用则f[i]= min(f[j] + w[j][i]) + c[i]其中w[i][j] = p[j+1][1] *(x[i] - x[j+1]) + p[j+2] *(x[i] - x[j+2]) + .... p[i] * (x[i] - x[i])但是n的范围非常大,所以需要优化方程

2013-04-04 21:27:54 971

原创 【SDOI2009】【树状数组】HH的项链

题目大意:询问一个序列中区间[a,b]中不同的数有几个,无修改操作。比较容易想到的是使用线段树套平衡树来解决,但是这道题需要有合并的操作,时间复杂度很高,不能接受。我们可以考虑,当一个区间有若干个同色点时,我们只能算一个,所以我们需要找出一个具有代表性的点,于是我们可以想到找区间中某种颜色第一次出现的位置来代表。并且我们可以知道这样的点的共同特点为上一个该颜色的点在查询区间的左侧,这样问题

2013-04-04 10:39:13 1110

原创 【hdu1823】【二维线段树】Luck and Love

这道题是一道二维线段树的裸题。由于浮点数最多一位,所以我们可以先转化成整数,输出时除以10;另外当两个人身高和活泼度都相等时,要取魅力值大的一个,所以要取最大而不能直接赋值。代码:#include#include#includeusing namespace std;const int maxn1 = 100 + 10;const int maxn2 = 1000 + 1

2013-04-03 17:41:22 541

原创 【HNOI2008】【斜率优化DP】玩具装箱

很直观的一维DP状态:f[i]表示将前i个玩具打包的最小费用。朴素方程:f[i] = min{f[j] + (w[j+1][i] - L) ^ 2}(w[j+1][i] =∑Ck + i - (j + 1),j < i,k∈[j+1,i])但是直接朴素会TLE,所以我们考虑将方程变形,挖掘方程的性质。令sum[i]=∑Ck k∈[1,i]-> f[i

2013-04-03 10:01:16 573

原创 【poj2778】【AC自动机】【DFA】【矩阵乘法】DNA Sequence

求长度为n的串中不包含模式串的串的数目首先将模式串建成AC自动机,将模式串标记,这里需要注意的是,如果一个节点的失败指针也指向了一个模式串,那么该节点也需要被标记。建好AC自动机后,我们就建立了转化关系,然后我们就可以使用DP的方式计算答案。考虑到n的范围很大,所以我们将所有不包含模式串的转化关系构建一个矩阵,使用矩阵快速幂求出长度为n的串的方案数,最后累加即可。#include

2013-04-02 10:33:01 685

原创 【BASHU 2445】【最小费用最大流】餐巾问题

非常巧妙的构图题。建模方法:将每一天拆成两个点i,i',加下列边(s,i,ri,p)——在第i天可以买至多ri个餐巾,每块p分(i,t,ri,0)——在第i天要用ri块餐巾(s,i',ri,0)——在第i天用剩的ri块旧餐巾(i',i+m,inf,f)——第i天的旧餐巾送到快洗部,每块f分(i',i+n,inf,s)——第i天的旧餐巾送到慢洗部,每块s分(i',i'

2013-04-01 21:27:45 819

原创 SCOI2009题解

总的来说,SCOI2009的数学味比较浓,而代码相对来说都比较短,注重思维过程。第一试:1、生日快乐看到题目感觉无法下手,但是由于题目的限制:面积必须相同且只能平行边界切,注意到n的范围非常小,所以直接枚举即可。#include#include#includeusing namespace std;const double inf = 1e100;const doub

2013-04-01 16:16:13 594

vlcj-3.8.0-dist.zip

vlci框架,可以开发JAVA视频播放器或者流媒体播放器,具体可以参考vlcj官网

2015-11-11

空空如也

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

TA关注的人

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