题目链接:11529 - Strange Tax Calculation
题意:平面上n个建筑物,3个建筑物可以组成一个三角形,计算平均每个三角形内有多少个点
思路:问题等价于,求凹四边形的占所有四边形的比例,用O(n^2)的算法,跟
HDU 3629 Convex
这题是一个道理
代码:
#include
#include
#include
#include
using...
分类:
其他好文 时间:
2014-05-23 08:00:18
阅读次数:
192
题意:求一个无向图的,去掉两个不同的点后最多有几个连通分量。
思路:枚举每个点,假设去掉该点,然后对图求割点后连通分量数,更新最大的即可。算法相对简单,但是注意几个细节:
1:原图可能不连通。
2:有的连通分量只有一个点,当舍去该点时候,连通分量-1;
复习求割点的好题!
#include
#include
#include
using namespace std;
i...
分类:
其他好文 时间:
2014-05-23 07:56:52
阅读次数:
317
http://acm.hdu.edu.cn/showproblem.php?pid=2833
大致题意:给定一个无向图,以及悟空和师傅起点与终点,求它们分别从起点到终点的最短路径中经过相同的点的最大个数。
思路:首先dijkstra求出最短路,那么如果有dis[a] + map[a][b] = dis[b],则边(a,b)一定在最短路径上。根据这一定理可以求出所有最短路径。然后...
分类:
其他好文 时间:
2014-05-22 13:00:41
阅读次数:
234
题意:
给定n个点 m条有向边 k
下面m条有向边
问删最少几个点使得1-n的最短路>k
这样思考:
如果k = inf,那么我们只要给每个点拆点一下,限流为1,然后原图的边容量为inf,跑个最小割即可(这样建图就能求出删点的最小割,而不是删边的最小割)
注意这样建图,起点拆点出的边容量=inf,终点同理
而此题中,我们只需要把所有在满足k条件的所有路径上的点加入图即...
分类:
其他好文 时间:
2014-05-22 12:20:36
阅读次数:
258
题目链接:hdu 4804 Campus Design
题目大意:有1?2的木块无穷个,要求在给定的图n?m的图上,用1?2和1?1的木块铺满,图上的0表示不需要铺的位置,1表示必须要铺的位置。并且1?1的使用数量必须在c到d之间。求总方案数。
解题思路:和uva11270一样的做法,只是需要多添加一位状态来表示用掉1得个数,以及要对当前位置判断是否为可放。
#include
#i...
分类:
其他好文 时间:
2014-05-22 09:15:28
阅读次数:
201
题目:
链接:点击打开链接
题意:
给出N种设备的价值和数量,怎样尽可能的平分。
算法:
多重背包。
思路:
1.转化为01背包解决。2.使用单调队列优化O(VN)算法。
代码:
法一:
#include
#include
#include
using namespace std;
int n;
int v[55],m[55];
int...
分类:
其他好文 时间:
2014-05-22 09:09:38
阅读次数:
205
http://acm.hdu.edu.cn/showproblem.php?pid=3832
大致题意:给出n个灯的位置以及每个灯照亮的范围。问最后至多可以熄灭多少盏灯使得编号为1,2,3的点连通。
思路:若任意两灯的照亮范围相交,那么两点之间建边,权值为1。最后枚举一点使它到1,2,3点的距离最近,那么该距离之和+1(还有该点本身)代表必须不能熄灭的灯,那么熄灭的灯数就求出来...
分类:
其他好文 时间:
2014-05-22 08:46:23
阅读次数:
229
题目:
链接:点击打开链接
题意:
有n个朋友,编号为1......n。知道其中一些人相互认识,求最少需要多少桌子。
算法:
并查集算法的模板题。
(来源:LCY-teacher课件)
>>在某个城市里住着n个人,现在给定关于 n个人的m条信息(即某2个人认识)假设所有认识的人一定属于同一个单位,请计算该城市最多有多少单位?
>>如何实现...
分类:
其他好文 时间:
2014-05-22 08:03:40
阅读次数:
314
数塔
Problem Description
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:
有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?
已经告诉你了,这是个DP的题目,你能AC吗?
Input
输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整...
分类:
其他好文 时间:
2014-05-22 06:32:17
阅读次数:
198
题目:
链接:点击打开链接
题意:
判断是否能够平分弹珠。
算法:
多重背包。
思路:
模板。。。dp[i]中i表示花费。。
代码:
#include
#include
#include
using namespace std;
int n[7];
int dp[120010];
int V;
void bag_01(int c,int w)/...
分类:
其他好文 时间:
2014-05-20 16:03:26
阅读次数:
256