hdu3440 差分约束系统
来源:互联网 发布:视频人脸打马赛克软件 编辑:程序博客网 时间:2024/05/21 08:03
解题报告
题目 :http://acm.hdu.edu.cn/showproblem.php?pid=3440
算法 :差分约束系统
思路:读懂题后想了很久,最后想到的是二分加判定,但是如何判定却不会,后来才知道这是道差分约束系统的题,(听说官方解题报告是极其诡异的贪心,没有看到)。有了差分约束这个念头,就不难再去思考此题了。差分约束系统解决的是一组不等式的解,对于此题,不等式还是比较好写的,
1. 位置相邻的两个house间距>= 1,<id, id - 1,-1>(2=< id <=N)
2. 高度相邻的两个house间距 <= D,<min(f[i-1].id, f[i].id),max(f[i-1].id, f[i].id), D>(2 <= i<= N)
因为是求在大值,因此用最短路,要注意的是最短路的起始点和终止点要跟与最低点和最高点的相对位置而定,要保证从左往右(因为建图的坐标位置就是从左往右的)。也就是令dis[min(minh,maxh)] = 0, 输出dis[max(minh,maxh)]即可,由于图肯定是联通的,应此不用多加源点。
由于maxn×D = 1 × 10^9, 因此初始值INF一定要很大,悲剧的检查了一上午,最后发现是这个问题,悔死我了!INF = 0x3fffffff就差不多了.214000000都不行。。。。。。
提交情况 : wrong answer N次 (INF值偏小(210000000))
收获与经验 :检查程序问题是一定要全面,不能只看主要的函数功能部分。看清楚数据范围。对差分约束系统函数不是很熟,需要再做题。
ACcode :
//代码中最短路径分别用了SPFA和bellman
#include <stdio.h>
#include <algorithm>
using namespacestd;
#define MAXN 1010
#define INF 0x3fffffff
#define MIN(a, b) ((a) < (b) ? (a) :(b))
#define MAX(a, b) ((a) > (b) ? (a) :(b))
struct NODE{
};
NODE edges[MAXN * 100];
inthead[MAXN], ad;
struct NOde{
} tall[MAXN];
intdis[MAXN], queue[MAXN], in[MAXN],times[MAXN];
int n, D;
bool comp(const NOde A,const NOde B){
}
voidclear(){
}
void insert(int u,int v, int d){
}
void built(int s,int t){
}
int SPFA(int rS,int rT){
}
intbellman(int er,int et){
}
int main(){
}
- hdu3440 差分约束系统
- hdu3440(差分约束)
- HDU3440 House Man 【差分约束系统】
- hdu3440 House Man 差分约束系统 SPFA算法
- HDU3440 House Man【SPFA】【差分约束】
- hdu3440 House Man(差分约束)
- hdu1534 差分约束系统
- 图论: 差分约束系统
- hdu3440 House Man--单源最短路径&差分约束
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 【差分约束系统】
- hdu3400 三分法
- 智能避障小车顺利结束
- 内部类和外部类
- poj1015 DP
- poj2018 最大平均值
- hdu3440 差分约束系统
- hdu3572 最大流
- hdu3221 09年上海赛区programB
- 6个常见的 PHP 安全性攻击
- hdu3658 递推 矩阵快速幂
- poj1236 强联通分量(tarjan)
- poj3613 过K条边最短路 floyed
- poj3352,3177
- poj2942 点双连通分量