自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Laravel新建工程注意事项

1.一定得先chmod -R 777 storage,不然会出很多奇葩错误!!!这个害我浪费了好多时间2.最好把csrf关掉。。。

2016-09-11 13:37:07 705 1

原创 【Kruscal】城市建设

问题描述  栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修。市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他。  C市中有n个比较重要的地点,市长希望这些地点重点被考虑。现在可以修一些道路来连接其中的一些地点,每条道路可以连接其中的两个地点。另外由于C市有一条河从中穿过,也可以在其中的一些地点建设码头,所有建了码头的地点可以通过河道连接。  栋栋拿

2015-02-16 15:09:40 1449

原创 【数论】买不到的数目

小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。  

2015-02-13 12:08:05 592

原创 OI之路就此终结

每每看到别人博客中上一篇文章还是XXX题解或者XXOI Bless al,下一篇文章就成了XXX完挂,OI再见的时候,总是会唏嘘感叹一下现实的残酷,现在终于轮到自己来做了结了。OI给了我太多美好,唯独这一次给我留下了无奈。以前总是幻想着要成为怎样怎样强的大牛,到头来还是蒟蒻,还是在考场上什么都做不了。但我不后悔搞过OI,因为它给我平淡无奇的高中生涯抹上了鲜艳的一笔,它拓宽了我的世界,让

2013-05-25 22:56:42 1558 4

原创 SCOI2013 Bless all

尽力而为,不要有遗憾就好了呢。

2013-05-23 12:10:45 928

原创 【GDOI2010】【最小割】圈地计划

纠结了比较久的题。对应前两个矩阵的条件联系最小割的意义很容易明白构图先黑白染色,对于黑色格子来说s -> p边权为map1[i][j],p -> t边权为map2[i][j]对于白色格子来说s -> p边权为map2[i][j],p -> t边权唯map1[i][j]然后对于相邻的格子连边,边权为map3[i][j] + map3[i'][j'](这点想了很久。。。也是这道题比较关

2013-05-20 22:20:31 863

原创 【hdu3820】【最小割】Golden Eggs

很巧妙的建图方法。一开始只想到将单个颜色的做法,对于多个颜色就没想出来怎么建图了。大体思路还是二分图最大独立集的方法。首先黑白染色,分成黑白两个集合。设金的价值为val1,银的价值为val2由于有两种颜色,考虑将每个点拆成两个点k,k'对于白色集合的点,k代表金,k'代表银;对于黑色集合的点,k代表银,k'代表金白色集合的点:s -> k,流量val1 ; k' -

2013-05-18 21:27:55 779

原创 【ZJOI2008】【DP】生日聚会

比较简单的DP,关键是设计好状态。使用f[i][j][p1][p2]表示前i个小孩中有j个男孩,且男孩比女孩多p1个,女孩比男孩多p2个的方案数根据当前状态累加之后的状态转移方程:f[i+1][j+1][p1+1][p2-1] =∑f[i][j][p1][p2],f[i+1][j][p1-1][p2+1] =∑f[i][j][p1][p2]由于根据当前状态累加之后的状态

2013-05-14 11:27:31 845

原创 【hdu3081】【二分法】【最大流】【并查集】Marriage Match II

稍微综合一点的题目。建图方法:对每个女孩喜欢的男孩,连一条容量为1的边若两个女孩a,b是朋友,则对于a连了边的男孩,b也要连边,使用并查集维护然后二分出游戏进行的回合数p,s -> 每个女孩,容量为p;每个男孩 -> t,容量为p若最大流 =n * p说明p是可行的,这样就可以得出最多进行的回合数了。代码:#include#includeusing name

2013-05-13 10:21:37 576

原创 【poj3237】【link-cut tree】Tree

题目大意:给你一颗树,要求支持下列3个操作:     1.询问两点之间路径的边中边权最大的;     2.把两点之间的路径的边权全部取反;     3.修改某条边的边权。很明显的动态树模型,首先要把边权转化为点权,并且要在dfs的时候记录每条边的权值在哪个点里面。操作1和3是常规操作。对于操作2,我们对每个节点记录Max和Min,取反就等价于Max = -Min,M

2013-05-13 07:55:14 742

原创 【hdu2243】【AC自动机】【矩阵乘法】考研路茫茫——单词情结

首先利用补集转化思想,将问题转化为求一个词根都不包含的单词有多少种。可以想到将所有的词根建为AC自动机,然后使用DP求解。由于长度范围很大,可以使用矩阵乘法加速。并且题目中要求的是“长度不超过L的”,所以要求sum= A ^ 1 + A ^ 2 + A ^ 3 + ...... + A ^L所有情况tot = 26 ^ 1 + 26 ^ 2 + 26 ^ 3 + ...

2013-05-11 16:55:56 797

原创 【OpenJudge】【数据结构】全题解

Challenge0 : 直接数组模拟即可。Challenge1 : 比上一题加强了一点,对每个位置建立链表,修改时向该位置插入新节点并保存时间戳,查询时沿着链表找到第一个时间戳小于k的数字Challenge2:比上一题更难了,可以撤销前x次操作。我们可以使用可持久化的思想,每次操作都新建节点,用倍增思想维护当前节点的祖先,这样查询就可以做到O(logn)Challenge3 : 裸线

2013-05-09 20:37:19 1280

原创 【zoj2112】【线段树套平衡树】Dynamic Rankings

很早以前就想做的一道题。本来想用主席树做的,无奈zoj的开的空间太小,用主席树不优化空间的话会MLE。用树套树的话不算很麻烦,理解起来也很容易。建一颗线段树,然后对线段树的每个节点建立SBT。修改的时候递归对线段树的每个节点都删除平衡树中的那个值,再插入新值。由于平衡树只能求出数的排名,所以查询时二分一个数,查询排名,根据排名迭代出第k大的数。代码:#include#incl

2013-05-05 14:31:57 698

原创 【BZOJ2653】【二分法】【主席树】middle

题目大意:给出长度为n的一个序列s,回答q个询问:s的左端点在[a,b],右端点在[c,d]的子序列中,最大的中位数,强制在线。将问题转化为判定性问题,先二分出一个数x,然后将区间内大于等于x的数标记为1,小于x的数标记为-1求区间和sum,如果sum>= 0说明中位数可以比当前数大,这样可以通过迭代求出最大的中位数。但是题目中限定了左端点和右端点,不难想到可以通过求最大子序列的方

2013-05-05 09:50:31 847

原创 【hdu3062】【2-sat】Party

2-sat的入门题吧,只需要按照题意建图就好。判定是否有解是2-sat的题型之一。#include#includeusing namespace std;const int maxn = 2000 + 10;const int maxm = maxn * maxn;struct Edge{ int pos; int next;}E[maxm];int head[ma

2013-05-01 17:02:42 539

原创 【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 736

原创 【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 657

原创 【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 564

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

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

2013-04-26 16:58:31 750

原创 【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 604

原创 【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 567

原创 【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 672

原创 【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 535

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

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

2013-04-18 11:00:36 660

原创 【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 642

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

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

2013-04-15 20:19:06 504

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

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

2013-04-14 16:39:31 705

原创 【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 487

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

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

2013-04-14 10:37:50 538

原创 【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 756

原创 【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 1120

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

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

2013-04-09 21:40:43 814

原创 【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 609

原创 【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 734

原创 【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 591

原创 【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 961

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

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

2013-04-04 10:39:13 1075

原创 【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 528

原创 【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 564

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

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

2013-04-02 10:33:01 665

vlcj-3.8.0-dist.zip

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

2015-11-11

空空如也

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

TA关注的人

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