明显是一个差分约束系统

对于第一种限制,其实就是x[a]+1<=x[b] x[b]-1<=x[a]

根据三角不等式很容易建图

但这题他比较奇怪,问的是X最多不同取值的个数

根据这张图的特殊性我们不难发现,两个强联通分量内X的取值种类是互不干涉的

也就是说我们可以分别统计每个强联通分量然后累计即可

为什么这样呢?观察这个限制,两个强联通分量之间只可能存在第二种限制的单向边,xc<=xd 显然xc,xd可以取不同取值

怎么统计强联通分量内的答案呢?

首先对于差分约束系统的可行解是最长路,每块的答案就是点与点之间距离绝对值的最大值

注意无解就是存在正环

 const inf=;
type node=record
po,next:longint;
end; var e:array[..] of node;
st,q,p,dfn,low:array[..] of longint;
d:array[..,..] of longint;
v,f:array[..] of boolean;
h,s,ans,x,y,len,j,t,i,n,m1,m2:longint; procedure max(var a:longint;b:longint);
begin
if b>a then a:=b;
end; function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; procedure add(x,y:longint);
begin
inc(len);
e[len].po:=y;
e[len].next:=p[x];
p[x]:=len;
end; procedure floyd;
var i,j,k:longint;
begin
for k:= to s do
for i:= to s do
if d[q[i],q[k]]>-inf then
for j:= to s do
if d[q[k],q[j]]>-inf then
max(d[q[i],q[j]],d[q[i],q[k]]+d[q[k],q[j]]);
for i:= to s do
if d[q[i],q[i]]> then
begin
writeln('NIE');
halt;
end; k:=;
for i:= to s do
for j:= to s do
if d[q[i],q[j]]>-inf then max(k,abs(d[q[i],q[j]]));
ans:=ans+k+;
end; procedure dfs(x:longint);
var i,y:longint;
begin
inc(h);
dfn[x]:=h;
low[x]:=h;
v[x]:=true;
inc(t);
st[t]:=x;
f[x]:=true;
i:=p[x];
while i<> do
begin
y:=e[i].po;
if not v[y] then
begin
dfs(y);
low[x]:=min(low[x],low[y]);
end
else if f[y] then low[x]:=min(low[x],low[y]);
i:=e[i].next;
end;
if dfn[x]=low[x] then
begin
s:=;
while st[t+]<>x do
begin
inc(s);
q[s]:=st[t];
f[st[t]]:=false;
dec(t);
end;
floyd;
end;
end; begin
readln(n,m1,m2);
for i:= to n do
for j:= to n do
if i<>j then d[i,j]:=-inf;
for i:= to m1 do
begin
readln(x,y);
add(x,y);
add(y,x);
max(d[x,y],);
max(d[y,x],-);
end;
for i:= to m2 do
begin
readln(x,y);
add(x,y);
max(d[x,y],);
end;
for i:= to n do
if not v[i] then
begin
h:=;
t:=;
dfs(i);
end; writeln(ans);
end.

bzoj2788的更多相关文章

  1. 【bzoj2788】Festival

    Portal --> bzoj2788 Description 有\(n\)个正整数\(X_1,X_2,...,X_n\),再给出\(m1+m2\)个限制条件,限制分为两类: 1.给出\(a,b ...

  2. [BZOJ2788][Poi2012]Festival

    2788: [Poi2012]Festival Time Limit: 30 Sec  Memory Limit: 64 MBSubmit: 187  Solved: 91[Submit][Statu ...

  3. POI2012题解

    POI2012题解 这次的完整的\(17\)道题哟. [BZOJ2788][Poi2012]Festival 很显然可以差分约束建图.这里问的是变量最多有多少种不同的取值. 我们知道,在同一个强连通分 ...

随机推荐

  1. 例题-文件系统的放大 (LVM):

    纯粹假设的,我们的 /home 不够用了,你想要将 /home 放大到 7GB 可不可行啊? 答: 因为当初就担心这个问题,所以 /home 已经是 LVM 的方式来管理了.此时我们要来瞧瞧 VG 够 ...

  2. p1205单词翻转-递归解决

    题目描述 Description 给出一个英语句子,希望你把句子里的单词顺序都翻转过来 输入描述 Input Description 输入包括一个英语句子. 输出描述 Output Descripti ...

  3. HDOJ 3547 DIY Cube 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3547 题目大意:求用$C$种颜色给立方体的8个顶点染色的本质不同的方法.两种方法本质不同即不能通过旋转 ...

  4. C++字符串分割

    //字符串分割函数 std::vector<std::string> split(std::string str,std::string pattern) { std::string::s ...

  5. js 判断是否为chrome浏览器

    var isChrome =navigator.userAgent.indexOf("Chrome") !== -1 用 navigator.appVersion 不好使,因为al ...

  6. 并行编译加快 VS C++ 项目的编译速度

    最近编译的项目都比较大,话说自己的电脑配置还行,但编译所花的时间还是很长,遇到需要重新编译整个项目的时候真的有回宿舍睡一觉的冲动.昨天一不小心被我发现了一款软件Xoreax IncrediBuild ...

  7. vsftp在REDHAT,CENTOS 5中登录慢的解决办法

    vsftp在REDHAT,CENTOS 5中登录慢的解决办法 vsftp在REDHAT,CENTOS 5中不仅登录慢,至少花30秒左右,而且上传文件的速度也受影响, 经过摸索,根本原因在DNS解析上花 ...

  8. 如果使用得当,MySQL 也可以化身 NoSQL

    [编者按]随着互联网和移动互联网的发展,各个机构都需要支撑远超过以往的数据.而在这个需求的刺激下,IT 领域出现了大量数据处理技术,其中之一就是 NoSQL .灵活的数据类型,高效的处理能力,让 No ...

  9. zoj 3232 It's not Floyd Algorithm(强联通分量,缩点)

    题目 /******************************************************************/ 以下题解来自互联网:Juny的博客 思路核心:给你的闭包 ...

  10. 深入浅出ES6(四):模板字符串

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 反撇号(`)基础知识 ES6引入了一种新型的字符串字面量语法,我们称之为模板字符 ...