摘要: 恢复内容开始 2017-08-10 20:00:45 writer:pprp 拆分数: 把正整数n拆分成k个正整数之和的方案数; 问题转换:将1转化为2 1、把n表示成m个正整数之和的方案数 2、把n表示成不超过m的正整数之和的方案数 两者答案相同:解释Ferrers图 用dp来做,dp[i][j] 阅读全文
posted @ 2017-08-10 20:25 pprp 阅读(370) 评论(0) 推荐(1) 编辑
摘要: 2017-08-10 19:35:32 整理者:pprp 用于计算C(m,n) % p 代码如下: 阅读全文
posted @ 2017-08-10 19:39 pprp 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 2017-08-06 20:49:38 writer:pprp 三种操作: 1、MUI -> MUIUI 2、MUUU -> MU 3、MUIII -> MUU 分析:有两个操作:将所有的U都换成I对I的个数进行判断; 1的操作是将这个个数乘以2 2/3操作综合起来相当于可以-6 于是可以计算出来I 阅读全文
posted @ 2017-08-06 21:01 pprp 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 2017-08-06 18:53:21 writer:pprp 题目如下: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个, 例如给 阅读全文
posted @ 2017-08-06 20:48 pprp 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 2017-08-06 15:41:04 writer:pprp 刚开始学dp,集训的讲的很难,但是还是得自己看,从简单到难,慢慢来(如果哪里有错误欢迎各位大佬指正) 题意如下: 给两个字符串,找到其中大的公共子序列,每个样例输出一个数; 最长公共子串(Longest Common Substirng 阅读全文
posted @ 2017-08-06 15:51 pprp 阅读(158) 评论(0) 推荐(0) 编辑
摘要: kruskal算法,难点在于题目的分析 阅读全文
posted @ 2017-08-04 18:11 pprp 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 2017-08-04 14:42:56 writer:pprp 题意: Problem Description XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间的实数(包括0,1),一条从u 到 v 的通道P 的安 阅读全文
posted @ 2017-08-04 14:51 pprp 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 2017-08-03 15:42:51 writer:pprp 之前写过搜索,但是都是很局限的那种,局限于图中的那种,今天是集训的第三天,今天主讲就是搜索, 现在水平还是很低,只能参考大佬们的代码才能大体理解代码,现在还是acm入门阶段,代码实现的能力还是太弱了, 即便是知道了思路,有时候也感觉很难 阅读全文
posted @ 2017-08-03 16:24 pprp 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 2017-08-03 11:34:36 writer:pprp 一个知识点,之前从来没有遇到,最近的集训中频繁用到这个,学习理解了 代码及分析如下: 阅读全文
posted @ 2017-08-03 11:37 pprp 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 2017-08-02 23:12:52 writer:pprp 题目大意:给你n个数,从n个数中选取几个数,使平均数和中位数的差值最大,将选取的个数还有选取的数字找出; 算法分析:先枚举,再三分 枚举中位数,可以证明中位数一定是一个,而不是两个组成的。 三分主要用于类似于二次函数的曲线中,有极大或者 阅读全文
posted @ 2017-08-02 23:25 pprp 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 2017-08-02 17:23:14 writer:pprp 题意:将n分解为n/2, n%2, n/2三部分,再将n/2分解。。得到一个序列只有0和1,给出[l, r]问l到r有几个1 题解:分治 代码及分析如下: 阅读全文
posted @ 2017-08-02 17:27 pprp 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 2017-08-02 14:27:18 writer:pprp 题意: • 每块木板宽度均为1,高度为h[i] • n块木板连接为宽度为n的栅栏 • 每次可以刷一横或一竖(上色) • 最少刷多少次可以使得栅栏被全部上色 • 1 ≤ n ≤ 5000 算法分析:可以横着刷,可以竖着刷,横着刷是为了减小 阅读全文
posted @ 2017-08-02 14:40 pprp 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 2017-08-01 21:49:34 writer:pprp 集训第一天 题意如下: • Codeforces 797C Minimal string• 给定长度为n的小写字母字符串s,及空串t, u,两种操作• 1. 将s的第一个字符加到t的末尾• 2. 将t的最后一个字符加到u的末尾• 求字典 阅读全文
posted @ 2017-08-01 21:58 pprp 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 2017-08-01 21:45:19 writer:pprp 题目: • POJ 3977• 给定n个数,求一个子集(非空)• 使得子集内元素和的绝对值最小• n ≤ 35 AC代码如下:(难点:枚举出sum) 阅读全文
posted @ 2017-08-01 21:48 pprp 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 2017-08-01 21:35:53 writer:pprp 集训第一天:作为第一道题来讲,说了两种算法, 第一种是跟二进制数联系起来进行分析; 第二种是用深度搜索来做,虽然接触过深度搜索但是这种题型还是我第一次见; 题目: 统计1~n之间有多少数字只由0,1构成 1 ≤ n ≤ 1e9 用深度搜 阅读全文
posted @ 2017-08-01 21:44 pprp 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 2017-08-01 21:29:14 writer:pprp 参考:http://blog.csdn.net/piaocoder/article/details/45584763 算法分析:直接暴力复杂度过高,所以要用二分的方法,分成两半复杂度就会大大降低; 题目意思:给定4个n(1<=n<=40 阅读全文
posted @ 2017-08-01 21:33 pprp 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 2017-07-29 16:41:00 writer:pprp 线段树跟区间操作相关,想要在题目限定的时间内解决问题就需要用线段树这种数据结构来解决; 线段树是一种二叉平衡树 参考书目:张新华的《算法竞赛宝典》 题目:敌兵布阵 Problem Description C国的死对头A国这段时间正在进行 阅读全文
posted @ 2017-07-29 17:04 pprp 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 2017-07-28 17:27:41 writer:pprp 有两种优化方法: 题目:亲戚 代码如下: 阅读全文
posted @ 2017-07-28 19:50 pprp 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 2017-07-28 16:12:51 writer:pprp 题目简单描述: 第一行,N代表单词库中有N个单词,随后是N行单词,紧接着M代表待查单词数目,随后是M行待查单词 输出:拼写单词错误的单词数目 算法:用到了哈希表进行快速查找 代码如下: 阅读全文
posted @ 2017-07-28 17:17 pprp 阅读(554) 评论(0) 推荐(0) 编辑
摘要: 2017-07-28 16:01:16 writer:pprp 哈希表:通过节点储存位置和其关键字建立某种直接关系,使得查找的时候无需作比较或者做很少次数的比较就能找到相应的记录; 哈希函数的几种构造方法: 自己制定规则的哈希表 代码如下: 阅读全文
posted @ 2017-07-28 16:13 pprp 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 2017-07-28 09:04:44 writer:pprp 前向星是一种星形表和司法,把所有的边集中在一起,形成一个边列表,比如第i条边(u,v) = w应当分别把起点、终点、权值存在三个数组中,但是下表相同 前向星是按照起始节点从小到大排序,除了你能直接用起点终点定位以外,前向星几乎是完美的。 阅读全文
posted @ 2017-07-28 09:24 pprp 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 2017-07-27 22:37:32 writer:pprp 题目如下: 代码如下: 阅读全文
posted @ 2017-07-27 22:40 pprp 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 2017-07-27 22:21:04 writer:pprp 该算法的本质是动态规划,形式简单,复杂度高为O(n^3); d[i][j] = max(d[i][k]+d[k][j],d[i][j]); 采用的基本手段是松弛 适用:解决多源最短路径问题 代码如下: 阅读全文
posted @ 2017-07-27 22:38 pprp 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 2017-07-27 22:18:11 writer:pprp SPFA算法实质与Bellman-Ford算法的实质一样,每次都要去更新最短路径的估计值。 优化:只有那些在前一遍松弛中改变了距离点的值的点,才可能引起他们邻接点的距离估计值的改变; 做法:使用队列来缩小搜索范围的; 首先要将个点距离估 阅读全文
posted @ 2017-07-27 22:21 pprp 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 2017-07-27 16:02:48 writer:pprp 在BEllman-Ford算法中,其最外层的循环的迭代次数为n-1,如果不存在负权回路,需要迭代的次数是远远小于n-1; 如果在某一次迭代中,松弛操作没有被执行,则说明这次迭代所有的边都没有被松弛,表示任意两点之间在之后的迭代中没有可能 阅读全文
posted @ 2017-07-27 16:08 pprp 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 2017-07-27 08:58:08 writer:pprp 参考书目:张新华的《算法竞赛宝典》 Bellman-Ford算法是求有向图单源最短路径的,dijkstra算法的条件是图中任意一条边的权都是正的;BF算法可以解决存在负边权的图; 算法流程分为三个部分: 例题:虫洞 代码如下: 阅读全文
posted @ 2017-07-27 15:57 pprp 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 2017-07-26 22:30:45 writer:pprp dijkstra算法法则:设置顶点集合S,首先将起始点加入该集合,然后根据起始点到其他顶点的路径长度, 选择路径长度最小的顶点加入到集合S,根据所加入顶点更新源点到其他顶点的路径长度,然后再选取最小边的顶点; 实现:用邻接矩阵 适用条件 阅读全文
posted @ 2017-07-26 23:10 pprp 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 2017-07-26 14:35:49 Prims算法,是一种基于“贪心”的求最小树的算法 ,以每次加入一个邻接边来建立最小树,直到找到N-1个边为止。 规则:以开始时生成树的集合为起始的顶点,然后找出与生成树集合邻接的边中,加权值最小的边来生成树, 为了确定新加入的边不会造成回路,所以每一个新加入 阅读全文
posted @ 2017-07-26 22:27 pprp 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 2017-07-26 10:32:07 writer:pprp Kruskal算法是根据边的加权值以递增的方式,一次找出加权值最低的边来建最小生成树;并且每次添加的边不能造成生成树有回路,直到找到N-1个边为止; 适用范围:边集比较少的时候,可以考虑用这个方法; 做法:将图形中所有的边的权值,递增排 阅读全文
posted @ 2017-07-26 10:45 pprp 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 2017-07-25 22:18:16 writer:pprp 定义:(来源于搜狗百科)并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 作用:用来判断两个节点是否属于同一颗树; 操作:1,查找,Find 2,合并,Merg 阅读全文
posted @ 2017-07-25 22:49 pprp 阅读(260) 评论(0) 推荐(0) 编辑