摘要: 这是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 毛炯人 阅读(189) 评论(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) 编辑