摘要: 这是求带负边权但是不能有负环的最短路算法,是中国人发明的一种算法吧也是。 首先我们还是用前向星存图,dis[]存当前的最短路径,然后用队列存储待优化的点。首先将起点入队,其次去遍历他所连接的点,如果可以松弛那么只要当前不在队里就将其入队。每一次去用他的队首去去遍历就可以,当队列为空的时候结束。 代码 阅读全文
posted @ 2019-10-24 22:54 毛炯人 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 这是一个用来求没有负边权的最短路径算法,复杂度是n^3,经过优先队列优化则是n^2. 算法思想:首先用前向星存储图,用一个node(需要重载运算符)类的priority_queue来存储被松弛的点(vis[i]==0)的的信息,dis[]数组存放当前到达这个点的最短路。其次进行扫描,看堆顶,也就是当 阅读全文
posted @ 2019-10-24 22:39 毛炯人 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 直接上代码... 阅读全文
posted @ 2019-10-23 00:02 毛炯人 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 这是USACO2008年的一道最小生成树题,感谢dzj老师那天教的图论。 要引渠让每一个村庄都可以接到水,然后从某一个村庄到另一个村庄修剪水道要花费w元,并且还要打井(至少一个)(而输入数据也包括了在每一个村庄打井的费用),需要为使所有农场都与有水的村庄相连或拥有水井所需要的钱数。很明显,这个题只有 阅读全文
posted @ 2019-10-12 19:46 毛炯人 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 这是USACO的一道记忆化搜索题,还记得原来学搜索就是被此所困。 给定n深的数,第i层有i个节点,存储有一个数字,询问从第一层走到最后一层所经过节点上数字和的最大值。我们很容易想到枚举所有路径来计算最大值,但这是2^n的复杂度,显然,对于固定的x,y的返回值是一定的,与上面怎么走过来的没有关系,所以 阅读全文
posted @ 2019-10-12 19:16 毛炯人 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 这是一道动态规划的水题,难度为提高-。 题意为:n个人围成一个环传球,每一次都可以往左或右传,传m次,问有几种最后传到小明手里的方案数。然后因为一个状态有两个变量,所以我们用dp[][]来存储【传球次数】【当前序号】的方案数,然后我们可以得知每一个最优子结构都是由相邻左边或者右边的两种子结构得来的, 阅读全文
posted @ 2019-10-12 18:35 毛炯人 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 1995年的noi区间dp题,这道题AC耗时达到了数月。 有一道题叫做果子合并,也是求合并的最小花费,但是那个题是可以随便合并两堆,但是这个题只能合并相邻的两堆,并且是一个环。对于环的问题,我们一般可以特判i==1和i==n或者倍增转化成链的问题,长度为两倍的时候即可涵盖所有环的情况。meanwhi 阅读全文
posted @ 2019-10-12 18:12 毛炯人 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 这是uva上的一道模拟题。 首先给出n(n<=700)个点的坐标(坐标在1*10^9)之内,询问走直线可以经过的点数。一开始我想到了一个类似于桶排序的方法来存坐标,但是要注意数组大小啊!第二次想到了判断行,列,对角线的方法,然后这是错误的,因为直线不一定是对角线。而正确,的方法应该是先计算两个点的向 阅读全文
posted @ 2019-10-12 17:36 毛炯人 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-10-12 17:05 毛炯人 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 这是一个用于实现单点修改以及区间求和查询的数据结构,修改和求和复杂度均为O(lgn)。存储的方式已经在清北学堂的本子上进行了推导,直接写代码。 #include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<s 阅读全文
posted @ 2019-10-12 16:42 毛炯人 阅读(80) 评论(2) 推荐(0) 编辑