[BZOJ2788][Poi2012]Festival
2788: [Poi2012]Festival
Time Limit: 30 Sec Memory Limit: 64 MB
Submit: 187 Solved: 91
[Submit][Status][Discuss]
Description
有n个正整数X1,X2,...,Xn,再给出m1+m2个限制条件,限制分为两类:
1. 给出a,b (1<=a,b<=n),要求满足Xa + 1 = Xb
2. 给出c,d (1<=c,d<=n),要求满足Xc <= Xd
在满足所有限制的条件下,求集合{Xi}大小的最大值。
Input
第一行三个正整数n, m1, m2 (2<=n<=600, 1<=m1+m2<=100,000)。
接下来m1行每行两个正整数a,b (1<=a,b<=n),表示第一类限制。
接下来m2行每行两个正整数c,d (1<=c,d<=n),表示第二类限制。
Output
一个正整数,表示集合{Xi}大小的最大值。
如果无解输出NIE。
Sample Input
1 2
3 4
1 4
3 1
Sample Output
HINT
|X3=1, X1=X4=2, X2=3
这样答案为3。容易发现没有更大的方案。
Source
此题显然是个差分约束系统,先建好图。
如果两个点不是强连通的,显然这两个点不会互相影响。
所以先tarjan缩点,如果不在一个强连通块里的不会有影响,所以只需要考虑同意连通块内的点。
求元素不同的最大值等价于连通块内的最长路+1,由于数据范围较小,floyd即可。
如果存在正环,则 无解。
#include<cstdio>
#include<algorithm>
#define N 605
#define M 500010
using namespace std;
int head[N],dfn[N],belong[N],low[N],scc;
int map[N][N],q[N],top,tot,n,m1,m2,id,ans;
bool vis[N];
struct edge{int next,to;}e[M];
#define add(u,v) e[++tot]=(edge){head[u],v},head[u]=tot
void tarjan(int x)
{
low[x]=dfn[x]=++id;
q[++top]=x;vis[x]=;
for(int i=head[x];i;i=e[i].next)
if(!dfn[e[i].to])
tarjan(e[i].to),low[x]=min(low[x],low[e[i].to]);
else if(vis[e[i].to])
low[x]=min(low[x],dfn[e[i].to]);
int now=;
if(low[x]==dfn[x])
{
scc++;
while(now!=x)
{
now=q[top--];
belong[now]=scc;
vis[now]=;
}
}
}
int main()
{
scanf("%d%d%d",&n,&m1,&m2);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(i!=j)map[i][j]=-1e9;
else map[i][j]=;
int x,y;
while(m1--)
{
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
map[x][y]=max(map[x][y],);
map[y][x]=max(map[y][x],-);
}
while(m2--)
{
scanf("%d%d",&x,&y);
add(x,y);
map[x][y]=max(map[x][y],);
}
for(int i=;i<=n;i++)
if(!dfn[i])tarjan(i);
for(int p=;p<=scc;p++)
{
for(int k=;k<=n;k++)if(belong[k]==p)
for(int i=;i<=n;i++)if(belong[i]==p)
if(map[i][k]!=-1e9)
for(int j=;j<=n;j++)if(belong[j]==p)
if(map[k][j]!=-1e9)
map[i][j]=max(map[i][j],map[i][k]+map[k][j]);
int now=;
for(int i=;i<=n;i++)if(belong[i]==p)
for(int j=;j<=n;j++)if(belong[j]==p)
now=max(now,abs(map[i][j]));
ans+=now+;
}
for(int i=;i<=n;i++)
if(map[i][i]!=)
return puts("NIE"),;
printf("%d",ans);
}
[BZOJ2788][Poi2012]Festival的更多相关文章
- [Poi2012]Festival 题解
[Poi2012]Festival 时间限制: 1 Sec 内存限制: 64 MB 题目描述 有n个正整数X1,X2,...,Xn,再给出m1+m2个限制条件,限制分为两类: 1. 给出a,b (1 ...
- 【bzoj2788】Festival
Portal --> bzoj2788 Description 有\(n\)个正整数\(X_1,X_2,...,X_n\),再给出\(m1+m2\)个限制条件,限制分为两类: 1.给出\(a,b ...
- [Poi2012]Festival 差分约束+tarjan
差分约束建图,发现要在每个联通块里求最长路,600,直接O(n3) floyed #include<cstdio> #include<cstring> #include< ...
- [POI2012]Festival
题目大意: 有$n$个正整数$x_1,x_2,\ldots,x_n$,再给出一些限制条件,限制条件分为两类: 1.给出$A,B$,要求满足$X_A+1=X_B$: 2.给出$C,D$,要求满足$X_C ...
- bzoj 2788 [Poi2012]Festival 差分约束+tarjan+floyd
题目大意 有n个正整数X1,X2,...,Xn,再给出m1+m2个限制条件,限制分为两类: 1.给出a,b (1<=a,b<=n),要求满足Xa + 1 = Xb 2.给出c,d (1&l ...
- POI2012题解
POI2012题解 这次的完整的\(17\)道题哟. [BZOJ2788][Poi2012]Festival 很显然可以差分约束建图.这里问的是变量最多有多少种不同的取值. 我们知道,在同一个强连通分 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 2795: [Poi2012]A Horrible Poem
2795: [Poi2012]A Horrible Poem Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 484 Solved: 235[Subm ...
随机推荐
- sdut 487-3279【哈希查找,sscanf ,map】
487-3279 Time Limit: 2000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 题目链接: sdut: http://acm.sdut.ed ...
- Myeclipse的web工程和Eclipse互相转换
eclipse的web工程转myeclipse的web工程1.原eclipse工程叫netschool 2.在myeclipse中新建一个工程叫netschool 并在新建的时修改 web root ...
- 【131031】rel 属性 -- link标签中的rel属性,定义了文档与链接的关系
此属性通常出现在a,link标签中 属性值 Alternate -- 定义交替出现的链接 Alternate 属性值 -- alternate是LinkTypes的一个值,网页设计者可以通过此值,设计 ...
- [LeetCode] Same Tree
Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...
- 攻城狮在路上(叁)Linux(二十五)--- linux内存交换空间(swap)的构建
swap的功能是应付物理内存不足的状况,用硬盘来暂时放置内存中的信息. 对于一般主机,物理内存都差不多够用,所以也就不会用到swap,但是对于服务器而言,当遇到大量网络请求时或许就会用到. 当swap ...
- 攻城狮在路上(壹) Hibernate(三)--- 属性访问、命名策略、派生属性、指定包名等
一.hibernate访问持久化类属性的策略: 在<property>元素中的access属性用于指定Hibernate访问持久化类属性的方式. 常见的方式如下: 1.property:默 ...
- WPF QuickStart系列之样式和模板(Style and Template)
在WPF桌面程序中,当我们想构建一个统一的UI表现时(在不同操作系统下,显示效果一致),此时我们就需要使用到WPF中的样式和模板技术.简单来说,如果我们需要简单的给一个Button设置宽,高,Marg ...
- python解析RSS(feedparser)
虽然说当今的博客已经不像前几年那么火了,但是RSS还是一项很有创造性和实用性的东西.RSS 是用于分发 Web 站点上的内容的摘要的一种简单的 XML 格式.它能够用于共享各种各样的信息.关于RSS的 ...
- hdu 5288 数学 ****
给一个序列 定义函数f(l ,r) 为区间[l ,r] 中 的数ai不是在这个区间其他任意数aj的倍数 求所有f(l,r)之和 通过预处理,记录 a[i] 的左右边界(所谓的左右边界时 在从 a[i] ...
- 2015最新移动App设计尺寸视觉规范【图文版】(转)
如今手机app的屏幕设计尺寸参差不齐,仿佛来到了移动界面尺寸战国时代,每家移动设备制造公司都为了迎合大众的口味,各家都在2014年大放光彩.2015年也将会是我们移动APP设计界快速发展的一年. 因为 ...