题目链接:11529 - Strange Tax Calculation
题意:平面上n个建筑物,3个建筑物可以组成一个三角形,计算平均每个三角形内有多少个点
思路:问题等价于,求凹四边形的占所有四边形的比例,用O(n^2)的算法,跟
HDU 3629 Convex
这题是一个道理
代码:
#include
#include
#include
#include
using...
分类:
其他好文 时间:
2014-05-23 08:00:18
阅读次数:
192
题目:
链接:点击打开链接
题意:
有n个硬币,知道其价值A1。。。。。An。数量C1。。。Cn。问在1到m价值之间,最多能组成多少种价值。
思路:
dp[i]表示i价值能够组成的最大种数。
代码:
#include
#include
#include
using namespace std;
int n,m;
int a[110],c[110];
int ...
分类:
其他好文 时间:
2014-05-22 13:26:38
阅读次数:
205
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
首先分成一半2^17和2^18,并且把其中一半变成相反数,然后枚举一半二分查找另一半,在找到的位置前后也找找。
这里用到了二级排序,有很多细节要处理,不多说了。
巨坑的一个地方就是,不能用系统的abs,要自己手写,简直坑死。。
#include
#include
#include
#include
using namespace std;
typedef long long ...
分类:
其他好文 时间:
2014-05-22 12:01:31
阅读次数:
220
题目链接: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
数塔
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