hdu 1384 Intervals (差分约束)
2013-07-20 01:37
323 查看
Problem - 1384
好歹用了一天,也算是看懂了差分约束的原理,做出第一条查分约束了。
题意是告诉你一些区间中最少有多少元素,最少需要多少个元素才能满足所有要求。
构图的方法是,(a)->(b+1)=c。还有就是所有的相邻的点都要连上(i+1)->(i)=0,(i)->(i+1)=-1。因为我对点离散了,所以就变成(rx[i])->(rx[i+1])=rx[i]-rx[i+1]。
代码如下:
View Code
跑的比较慢,元素进队的次数比较多。用固定大小的queue因为越界WA了好多次。
——written by Lyon
好歹用了一天,也算是看懂了差分约束的原理,做出第一条查分约束了。
题意是告诉你一些区间中最少有多少元素,最少需要多少个元素才能满足所有要求。
构图的方法是,(a)->(b+1)=c。还有就是所有的相邻的点都要连上(i+1)->(i)=0,(i)->(i+1)=-1。因为我对点离散了,所以就变成(rx[i])->(rx[i+1])=rx[i]-rx[i+1]。
代码如下:
#include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <iostream> using namespace std; const int N = 55555; const int INF = 0x55555555; struct Edge { int id, nx, val; Edge() {} Edge(int id, int nx, int val) : id(id), nx(nx), val(val) {} } edge[N << 2]; int eh , ec; void init() { ec = 0; memset(eh, -1, sizeof(eh)); } void addedge(int u, int v, int w) { edge[ec] = Edge(v, eh[u], w); eh[u] = ec++; } int rx[N << 1], dis ; bool vis ; queue<int> Q; void spfa(int s) { while (!Q.empty()) Q.pop(); memset(vis, 0, sizeof(vis)); for (int i = 0; i < N; i++) dis[i] = -INF; Q.push(s); vis[s] = true; dis[s] = 0; while (!Q.empty()) { int cur = Q.front(); Q.pop(); vis[cur] = false; for (int t = eh[cur]; ~t; t = edge[t].nx) { if (dis[edge[t].id] < dis[cur] + edge[t].val) { dis[edge[t].id] = dis[cur] + edge[t].val; if (vis[edge[t].id]) continue; Q.push(edge[t].id); vis[edge[t].id] = true; } } } } int main() { // freopen("in", "r", stdin); int n, x, y, z; while (~scanf("%d", &n)) { init(); int cnt = 0; for (int i = 0; i < n; i++) { scanf("%d%d%d", &x, &y, &z); addedge(x, y + 1, z); rx[cnt++] = x; rx[cnt++] = y + 1; } sort(rx, rx + cnt); cnt = unique(rx, rx + cnt) - rx; for (int i = 1; i < cnt; i++) addedge(rx[i], rx[i - 1], rx[i - 1] - rx[i]), addedge(rx[i - 1], rx[i], 0); spfa(rx[0]); printf("%d\n", dis[rx[cnt - 1]]); } return 0; }
View Code
跑的比较慢,元素进队的次数比较多。用固定大小的queue因为越界WA了好多次。
——written by Lyon
相关文章推荐
- hdu 1384 Intervals (差分约束)
- HDU 1384 Intervals 差分约束
- HDU 1384 Intervals (差分约束)
- HDU 1384 && POJ 1201--Intervals 【基础差分约束】
- hdu 1384 Intervals 差分约束 解题报告
- hdu 1384 Intervals (差分约束)
- HDU 1384 Intervals 差分约束
- hdu 1384 Intervals 差分约束
- HDU 1384 Intervals(差分约束)
- Hdu1384-Intervals(差分约束)
- HDU 1384 Intervals【差分约束-SPFA】
- hdu 1384 Intervals (差分约束)
- HDU - 1384 差分约束
- (差分约束) hdu 1384
- hdoj 1384 Intervals 【差分约束基础题目】
- hdoj--1384--Intervals(差分约束)
- hdoj--1384--Intervals(差分约束)
- hdu 1384 差分约束(SPFA实现)
- 【差分约束】 HDOJ 1384 Intervals
- HDU 1384 (差分约束)