博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ1201 Intervals 【差分约束】
阅读量:5136 次
发布时间:2019-06-13

本文共 1771 字,大约阅读时间需要 5 分钟。

题目链接

题解

差分约束

\(a[i]\)表示是否选择\(i\)\(s[i]\)表示\(a[i]\)的前缀和
\(s[i] \quad i \in [-1,50000]\)分别建立一个点
首先有
\[s[i] - s[i - 1] \ge 0\]
\[s[i] - s[i - 1] \le 1\]
然后就是限制条件
\[s[b] - s[a - 1] \ge c\]
然后就没了

\(spfa\)跑最长路

由于题目保证有解,所以不会存在正环
复杂度上界是\(O(nm)\)的,但由于保证有解,而且\(spfa\)的玄学复杂度,并不会\(T\)

#include
#include
#include
#include
#include
#include
#include
#define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt)#define REP(i,n) for (int i = 1; i <= (n); i++)#define mp(a,b) make_pair
(a,b)#define cls(s) memset(s,-0x3f3f3f3f,sizeof(s))#define cp pair
#define LL long long intusing namespace std;const int maxn = 50005,maxm = 200005,INF = 1000000000;inline int read(){ int out = 0,flag = 1; char c = getchar(); while (c < 48 || c > 57){if (c == '-') flag = -1; c = getchar();} while (c >= 48 && c <= 57){out = (out << 3) + (out << 1) + c - 48; c = getchar();} return out * flag;}int h[maxn],ne,N = 50001;struct EDGE{int to,nxt,w;}ed[maxm];inline void build(int u,int v,int w){ ed[++ne] = (EDGE){v,h[u],w}; h[u] = ne;}queue
q;int d[maxn],vis[maxn];void spfa(){ for (int i = 0; i <= N; i++) d[i] = -INF; d[N] = 0; q.push(N); int u; while (!q.empty()){ u = q.front(); q.pop(); vis[u] = false; Redge(u) if (d[to = ed[k].to] < d[u] + ed[k].w){ d[to] = d[u] + ed[k].w; if (!vis[to]) q.push(to),vis[to] = true; } }}int main(){ int m = read(),a,b,c; while (m--){ a = read(); b = read(); c = read(); a--; if (a == -1) a = N; build(a,b,c); } build(N,0,0); build(0,N,-1); for (int i = 1; i < N; i++) build(i - 1,i,0),build(i,i - 1,-1); spfa(); /*for (int i = 0; i < 15; i++) printf("d[%d] = %d\n",i,d[i]);*/ printf("%d\n",d[N - 1]); return 0;}

转载于:https://www.cnblogs.com/Mychael/p/9160278.html

你可能感兴趣的文章
网站搭建(一)
查看>>
Spring JDBCTemplate
查看>>
Radon变换——MATLAB
查看>>
Iroha and a Grid AtCoder - 1974(思维水题)
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
[LeetCode] Palindrome Number
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
SQL更新某列包含XX的所有值
查看>>
网易味央第二座猪场落户江西 面积超过3300亩
查看>>
面试时被问到的问题
查看>>
spring 事务管理
查看>>
VS2008 去掉msvcr90的依赖
查看>>
当前记录已被另一个用户锁定
查看>>
Bootstrap
查看>>
Node.js 连接 MySQL
查看>>
ACM-ICPC 2018 world final A题 Catch the Plane
查看>>
那些年,那些书
查看>>