- 博客(221)
- 收藏
- 关注
原创 nginx学习(2)
下面是一些配置user www-data;worker_processes 1;#进程数,一般为CPU总核心数#pid /var/run/nginx.pid;#进程文件pid /home/kdq/nginx/logs/nginx.pid ;events { use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux
2014-07-19 12:12:54
689
原创 git的安装和简单操作
1.注册一个github帐号。2.创建一个仓库。3.安装gitsudo apt-get install git4.创建sshssh-keygen -t rsa -C "your_email"一路按回车就行了。完成之后,在~/.ssh文件夹中有两个文件,id_rsa和id_rsa.pub,其中id_rsa是私钥,id_rsa.pub是公钥。把id_rsa.pub里面的东西
2014-07-06 21:14:25
992
原创 近期训练汇总
TopCoder SRM 577 DIV1 B题意:给你一个8*8的图,里面有一些#和.。现在要把所有的#都覆盖掉,第一次覆盖#的时候不需要花费,接下来每覆盖一个#,花费为该点与最远一个已经被覆盖的点的曼哈顿距离。最后求最小的花费。#include #include #include #include #include #include #include #inclu
2013-10-30 23:50:07
954
原创 POJ 3159 good luck to me
临行前最后一题,居然还不给我1A。题意,给出一堆B-A直接差分约束求最短路,即最大值即可。初值将1设为0,那么最大差值就是dis[n],AC。但是这道题居然卡SPFA,太神奇了。然后要DIJ+HEAP才可以。看了DISCUSS说,SPFA把队列改成栈就能过,真是神奇。#include #include #include #include #include
2013-10-17 16:39:30
850
原创 uvalive 4885 差分约束
就是差分约束的裸题,因为今天比赛时间来不及,没搞完。贴个模板。具体关于差分约束系统的解释请搜其他博客。我用最长路和最短路都实现了一遍。对于(>=)的系统,求最长路。对于(然后SPFA之前,我们可以将所有的点都入队。这样就相当于一个超级源点了。最长路:#include #include #include #include #include #include
2013-10-16 01:27:47
1033
原创 POJ 3616 DP
题意:给你N的时间,M的工作时间段,每个时间段有一个权重,还有一个R,每次完成一个工作需要休息R,问最后在时间N内,最大权重是多少。思路:很简单的DP,首先对区间的右坐标进行排序,然后直接转移方程就是dp[i] = max(dp[i] , dp[j] + work[i].c) ,判断条件就是这两个区间加上一个休息时间R是否会相交。#include #include #include
2013-10-13 09:42:42
938
原创 POJ 3670 , 3671 LIS
题意:两题意思差不多,都是给你一个序列,然后求最少需要改变多少个数字,是的成为一个最长不升,或者最长不降子序列。当然3671是只能升序,所以更简单一点。然后就没有什么了,用二分的方法求LIS即可。贴一下3670,3671几乎没变化,只需将求最长不升的那部分去掉即可。#include #include #include #include #include #includ
2013-10-13 09:18:48
946
原创 POJ 3692 最大独立集
题意:有G个女生,B个男生,所有的女生都互相认识,所有的男生都互相认识,还有N对男女,他们互相认识。问从中选出最多的人数,是的他们全部互相认识。思路:这道题的构图很巧妙,对于他的补图构图,对于所有互相认识的人,我们置Map[i][j] = 0 ,那么不认识的人置为1.因为最大独立集中所有的点相互都没有边,即他们之间互相都有边,所以这道题就转化成了求最大独立集。最大独立集=点数-最大
2013-10-13 01:26:08
1340
原创 UVALIVE 4970 最小权匹配
首先贴一下这道题的BNU地址,UVA地址自己找吧。http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=11852题意:这道题的意思就是,给你N个棋子的坐标,这些棋子的走法是象棋中的马的走法。然后再给你N个坐标终点。问所有的棋子走到其中一个坐标上,不能有重复,最少的步数是多少。思路:这道题直接搜显然爆,因为他的坐标范围都是int ,所
2013-10-12 00:41:42
1042
原创 UVALIVE 5893 计算几何+搜索
题意:很复杂的题意,我描述不清楚。http://acm.bnu.edu.cn/bnuoj/contest_show.php?cid=3033#problem/33526大致是,给定一个起点,一个终点,和一些墙,这些墙是不能越过的,然后一个人他每次走可以往四个方向走,可以加速,可以减速,也可以匀速。然后要从起点开始,走到终点,问最少需要多少步,而且走到终点的时候速度必须是0。
2013-10-07 20:48:36
830
原创 UVALIVE 4819 最大流
题意:有N场比赛,每场比赛需要一定数量的题目数,现在有M个题目,每个题目只能提供给特定的几场比赛,并且一次只能在一场比赛中出现。问最多可以举办多少场比赛。思路:因为N = 15 , 所以直接二进制枚举举办的比赛的情况,然后对于每种情况建图,S - >题目,流量1题目 ->比赛,流量1比赛->T,流量为该场比赛需要的题目数。每次都跑最大流,看是否等于所需的题目数,然后更新答案
2013-10-07 20:12:08
998
原创 POJ 1308 搜索
题意:给你一堆边,有向边,然后这个图是否构成一颗树。他这里树的定义是这样的:只有一个入度为0的点,是根节点。每一个节点(除根节点)都只有一条边指向他,也就是入度等于1。从根节点到任意一个节点的路径是唯一的。满足上面三个要求的话就是树。OK。那就可以搞了,A了之后看DISCUSS里面都说是并查集搞的,我是直接爆搜的。思路:首先找出入度为0的点,如果有多个,那么不是树。然后
2013-10-04 21:56:01
848
原创 POJ 2823 线段树,RMQ
题意:给你n个数字,和一个长度m,输出所有长度为m的区间的最大值和最小值。思路:直接线段树区间求最值就可以了。或者可以用RMQ。或者STL也可以。贴个线段树吧。#include #include #include #include #include #include #include #include #include #include #include
2013-10-04 00:29:10
1347
原创 HDU 2594 EX_KMP或者字符串hash
题意:给你2个字符串a , b 。问 a的前缀和b的后缀的公共部分最长是多少。题意:把a从前往后hash,把b从后往前hash,如果hash值相等,那么代表两个字符串相等,那么更新长度。最后输出这个长度的最大值即可。还可以用EX_KMP搞,我们可以把两个字符串连成一个,然后根据EX_KMP的NEXT数组的作用,直接就可以判断后缀是否等于前缀。先来一发HASH的代码。#inc
2013-10-03 00:24:03
1274
原创 HDU 2087 KMP
题意:给出字符串a , b 求b在a中出现了多少次,不可重叠。思路:最裸的KMP。#include #include #include #include #include #include #include #include #include #include #include #include #define Max 2505#define FI first
2013-10-03 00:00:19
1064
原创 HDU 3746 KMP_Next 找循环节
题意:给你一个字符串,使添加最少的字符,使得这个字符串由一个循环节循环构成。思路:这道题和POJ 1961差不多,POJ 1961:http://blog.csdn.net/just_water/article/details/12169609也是找循环节,那么根据POJ 1961的结论,我们很容易推出,当字符串长度为l时,如果next[l] = k ,并且l % (l - k) == 0
2013-10-02 22:42:20
1072
原创 HDU 3336 KMP_NEXT
题意:一个字符串,长度是n,那么他一共有n个前缀,现在问,这个前缀在原串中有多少个,将所有的和加起来取模。例如:abab那么他的前缀有a , ab ,aba , abab。对应的在原串中的个数为a有2个,ab有2个,aba有1个,abab有1个。那么总数是6。思路:对这个字符串求出Next数组,那么对于每个Next[i] = k ,那么我们就知道前缀0 -> k - 1处有一个
2013-10-02 21:34:05
870
原创 uvalive 5734 字符串最小表示法
题意:其实这道题读懂了就可以A,首先给你一个字符串,然后叫你算出这个字符串每一位的距离,得到一个新的字符串,然后把这个字符串用最小表示法表示出来。所谓的最小表示法就是个循环左移或者右移这个字符串,使得他的字典序最小。可以看这篇博客:http://www.cnblogs.com/ACAC/archive/2010/05/23/1742349.html知道了这个,那么这道题就是大水题了。
2013-10-02 20:07:00
979
原创 uvalive 5742 TSP
题意:给你N个小岛,每个小岛有一个初始坐标(x ,y) ,还有一个速度(vx ,vy),代表他一小时向x轴方向移动vx,向y轴方向移动vy。然后给你一个直升机的坐标(hx , hy) ,和直升机的速度hv。问:最少需要多少时间,可以使得直升机从(hx , hy)飞遍所有的小岛,并且回到(hx , hy),注意,每次飞到一个小岛上,需要驻留一小时。思路:显然是TSP。考虑到N = 8 ,
2013-10-02 18:42:04
1109
原创 HDU 4763 拓展KMP
题意:给你一个串,问是否可以找到这样的三个串,是这个串的前缀,中间串, 后缀, 这个三个串相同,找出最长的这样的三个串。输出长度。吐槽:昨天随手KMP就水过了,发现随便一组样例都过不了,数据真水。思路:今天用拓展KMP做了一发,首先我们知道拓展KMP里面的EX数组。假设EX[i] = x 。(相对于这题,模式串和匹配串是一样的)那么代表从位置i 起 共 x 个字符组成的子串, 和从首位
2013-09-29 19:43:21
1098
原创 POJ 1961 KMP_next数组
题意:给你一个串,然后叫你输出,该串从1 -> i (i = 2 , 3 , 4 ……, l)这个前缀串,可以由一个字串循环多少次产生,即是一个周期串,无法形成则不输出。具体可以看样例,很好理解。思路:这道题考察的是KMP,next数组的应用,我们知道如果next[j] = k ,那么代表(j - k ,……j - 1 )位的字符与长度为k的前缀匹配。那么如果一个串是周期串的话,那么每次错
2013-09-29 16:57:09
1729
原创 HDU 4768 Flyer 二分
题意:略。思路:直接二分,因为假设现在在点mid .那么求出[l , mid]的和,如果是奇数,那么那个点肯定在前面的区间,也就是mid = r - 1 ,如果是偶数,则证明在后面的区间,mid = l + 1 。然后更新答案即可。这种解法很容易想到,但是一直T,理论上复杂度完全可以过,一直很不解。然后发现,二分过程中mid = l + r >> 1 。这个l + r 可能会爆int
2013-09-28 20:35:48
1038
原创 UVALIVE 5789 线段树
这道题其实不用线段树,因为他的数据里区间不会重合,所以直接爆搞就可以了。但是我一开始没注意,然后就直接上线段树了,就当是练手了。期间SB了很多次,学习了。题意:给出N个人和M次询问。N个人从1 - N 排成一列。每次询问一个区间[a , b] ,杀死这个区间的人,然后问a 的左边一个数,和b的右边一个数是多少,如果没有则输出*。我用线段树记录区间序号最大值和序号最小
2013-09-27 22:34:29
1022
原创 UVALIVE 5792 Trie+统计
题意:给你两种串,一种可以当前缀,一种可以当后缀,问两种串合起来,一共有多少种组合。并且没有重合。思路:我们先将两种串插入字典树,对于后缀串,我们反向插入,然后处理出每个字符对应的后缀的个数。我们来看一个组合的串,c = a + b 。这个c可能很多种组合,但是,只要我们取a最大,那么这样计数就是唯一的。所谓a最大就是当搜到a是该前缀的最后一个字母,那么a就是最大的。这是对应a是最后一
2013-09-27 21:58:50
864
原创 HDU 4126 MST
这道题和HDU4756是完全一样的。http://blog.csdn.net/just_water/article/details/11950623题意:给你一个无向图,有N个点M条边,然后Q个询问,每次询问x , y , z ,意思是边x -> y 的变长增加成z (一定是增加) 。然后问增加之后的最小生成树。最后输出Q次询问后最小生成树的平均值。思路:和上一题完全一样,
2013-09-23 21:45:46
1028
原创 HDU 4756 次小生成树
题意:给你n(n = 1000)个二维点,第一个点是power plant,还有n - 1个点是dormitories。然后现在知道有一条寝室到寝室的边是不能连的,但是我们不知道是哪条边,问这种情况下,最小生成树的最大值。思路:有一种很朴素的算法就是枚举每一条被删除的边,然后做最小生成树,复杂度高的突破天际,显然不可以。但是既然想到了上面的那种做法,再想一下就可以得到,我们还是枚举每一条被
2013-09-23 20:56:48
2280
原创 HDU 4081 MST
这道题在LRJ的书上看到,今天回过头来继续看这题,发现很多东西都已经明白了。题意:有N个城市,每个城市有一个坐标和人口。现在要建一些边使得他们都联通,花费就是这些边的长度,然后有一条边可以免费。问免费一条边之后,使得免费的该条边的两个城市的人口/剩下来的边的长度 ,这个比值最大。思路:首先做一遍MST,求出MST之后,我们枚举每条边,看这条边是否可以删除,也就是免费。那么删除一条边
2013-09-22 00:59:12
1146
原创 POJ 2686 spfa+dp
题意:有m个城市,现在一个人要从a 走到 b ,城市之间有p条无向边,每条边都有权值,现在这个人有n张票,每张票有一个马的数量,这个人每走一条边就要使用一张票,每张票只能使用一次,假设从x -> y ,距离是z , 他使用一张票,马的数量是l ,那么从x -> y 花费的时间就是z / l 。问:从a -> b 最短的时间是多少。我们可以注意到,这道题的数据量非常小,n = 8 , m =
2013-09-16 21:31:48
836
原创 POJ 3740 DLX
题意:给你一个01矩阵,然后求是否存在选择一些行,使得每一列的1的个数都为1。思路:貌似朴素的DFS也可以,加点剪枝就可以过。这里贴个DLX的模版。推荐博客:http://www.cppblog.com/notonlysuccess/archive/2009/07/10/89701.html这里讲的很详细。#include #include #include #inclu
2013-09-16 16:20:04
965
原创 POJ 3928 树状数组
这道题是08年北京现场赛的题。讲一下题意,N个人,从中选出3个人,使得,这三个人必须是从大到小或者从小到大,并且是严格的大小关系,即不可相等。问有多少种这样的组合。这道题的结论很好得出,假设一个人位于i,那么我们只需求出求1 -> (i - 1)位置小于这个人的个数,记为x ,当然大于这个人的个数也就出来了,记为x',同理, 求出(i + 1) -> n位置小于这个人的个数,记为y ,那么
2013-09-13 22:03:13
1322
3
原创 POJ 2029 二维树状数组(400题纪念)
一道二维树状数组的基础题。还有好多做法。数据量小都可以A。贴这题主要是纪念一下POJ 400AC达成~继续努力!~~~#include #include #include #include #include #include #include #include #include #include #include #include #define Max
2013-09-11 19:54:29
799
原创 130902 周赛
UVALIVE地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=572A。Arranging HeapsDP +斜率优化,见这里。http://blog.csdn.net/just_water/article/details/11021247B。C。Tri
2013-09-06 17:39:43
804
原创 HDU 3584 三维树状数组
三维树状数组模版。优化不动了。#include #include #include #include #include #include #include #include #include #include #include #include #define Max 2505#define FI first#define SE second#define ll
2013-09-06 17:09:15
847
原创 POJ 3974 最长回文字串(manacher算法)
题意:给出一个字符串,求出最长回文字串。思路:一开始我直接上了后缀数组DC3的解法,然后MLE了。看了DISCUSS发现还有一种计算回文字串更加优越的算法,就是manacher算法。就去学习了一下,/************************以下转自http://funnyxj.blog.163.com/blog/static/20459016020127514231538/****
2013-09-06 14:43:21
1404
原创 CF 189DIV2 E DP + 斜率优化
题意:给出两个数组,分别表示树的高度和树的补充能量的值。有两个人在锯树,这两个人的锯子很神奇,一次只能锯一颗树的高度1,也就是一次一颗树只减1。然后每次锯子锯完一次就要补充一下能量,这个补充的能量每次就是找到被锯完的ID最大的树,然后补充这个树的能量值。最后就是问,最少需要花费多少的能量,才能使得所有的树都被锯完。分析:显然是个DP。考虑到N = 10 ^ 5,那么二重DP肯定是不可以
2013-09-05 21:36:39
938
原创 HDU 3480 DP+斜率优化
题意:给你n个数字,然后叫你从这些数字中选出m堆,使得每一堆的总和最小,一堆的总和就是这一堆中最大值减去最小值的平方,最后要使得所有堆加起来的总和最小。思路:对这些数字排序之后,很容易想到DP解法,用dp[i][j]表示数字i现在在第j堆,那么转移方程就是dp[i][j] = min(dp[i][j] , dp[k][j - 1] + (a[i] - a[k + 1]) ^ 2)。因为已经排序
2013-09-04 12:04:01
891
原创 UVAlive 6131 dp+斜率优化
这道题和06年论文《从一类单调性问题看算法的优化》第一道例题很相似。题意:给出n个矿的重量和位置,这些矿石只能从上往下运送,现在要在这些地方建造m个heap,要使得,总距离*重量最小。思路:O(n ^ 3)的DP解法是很容易想出来的。dp[i][j] 表示第i个矿石点是j个heap的最小花费。dp[i][j] = min(dp[i][j] , dp[k][j - 1] + sigm
2013-09-03 22:43:37
1345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人