(bzoj2330)糖果
2330: [SCOI2011]糖果
Time Limit: 10 Sec Memory Limit: 128 MB
Description
幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,lxhgww需要满足小朋友们的K个要求。幼儿园的糖果总是有限的,lxhgww想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。
Input
输入的第一行是两个整数N,K。
接下来K行,表示这些点需要满足的关系,每行3个数字,X,A,B。
如果X=1, 表示第A个小朋友分到的糖果必须和第B个小朋友分到的糖果一样多;
如果X=2, 表示第A个小朋友分到的糖果必须少于第B个小朋友分到的糖果;
如果X=3, 表示第A个小朋友分到的糖果必须不少于第B个小朋友分到的糖果;
如果X=4, 表示第A个小朋友分到的糖果必须多于第B个小朋友分到的糖果;
如果X=5, 表示第A个小朋友分到的糖果必须不多于第B个小朋友分到的糖果;
Output
输出一行,表示lxhgww老师至少需要准备的糖果数,如果不能满足小朋友们的所有要求,就输出-1。
Sample Input
1 1 2
2 3 2
4 4 1
3 4 5
5 4 5
2 3 5
4 5 1
Sample Output
HINT
【数据范围】
对于30%的数据,保证 N<=100
对于100%的数据,保证 N<=100000
对于所有的数据,保证 K<=100000,1<=X<=5,1<=A, B<=N
这道题思路很简单SPFA(注意这个是用spfa求出单元最大路)+差分约束,数据中会有坑。
好了讲一些可能会用到的:
当x=1时,我们可以把AB两个小朋友的权值赋成0。
当x=2时,数据里可能会有坑就是A小朋友和B小朋友是同一个人,这里要特判
else 我们可以把有一条A到B权值为1的路,尽量不要处理负数。。
当x=3时,因为说尽可能少耗费糖果,所以我们可以把不少于当做等于来处理,就是赋值为0;
剩下x=4~5时同理省略。
还有注意在用差分约束系统时,要从n到1来链,否则tle后果自负(我也不知道为什么,正着链会tle)
讲完了,下面粘代码。
#include<cstdio>
#define maxn 200005
struct node{int next,aim,lon;};
node e[*maxn];
bool vis[maxn];
int queue[maxn],time[maxn],point,head[maxn],d[maxn],t[maxn];
int n,k;
long long ans;
void add(int x,int y,int z)
{
point++;
e[point].next=head[x];
head[x]=point;
e[point].aim=y;
e[point].lon=z;
}
bool spfa()
{
,tail=;
vis[]=true;
t[]++;
while(Head!=tail)
{
int u=queue[Head];
;i=e[i].next)
{
int v=e[i].aim;
if(d[v]<d[u]+e[i].lon)
{
d[v]=d[u]+e[i].lon;
if(vis[v])continue;
if(++t[v]>n)return false;
vis[v]=true;
queue[tail]=v;
tail++;
;
}
}
vis[u]=false;
Head++;
;
}
return true;
}
int main()
{
scanf("%d%d",&n,&k);
;i<=k;i++)
{
int x,a,b;
scanf("%d%d%d",&x,&a,&b);
){add(a,b,);add(b,a,);}
)
{
;}
);
}
)add(b,a,);
){
;}
);
}
)add(a,b,);
}
;i--)
add(,i,);
if(!spfa())
{printf(;}
else
{
;i<=n;i++)
ans+=d[i];
}
printf("%lld",ans);
;
}
(bzoj2330)糖果的更多相关文章
- bzoj2330 糖果
Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...
- BZOJ2330 糖果题解 查分约束
BZOJ 2330 糖果题解 差分约束系统 + SPFA 题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2330 Description ...
- bzoj2330糖果——差分约束
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2330 差分约束,再建立一个源点0,向所有点连边权为1的边,表示每个人都会分到糖果: 答案较大 ...
- bzoj2330糖果
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2330 差分约束裸题.练习用spfa判正环(一个点入队超过n次). 据说有1e5个点连成一条链 ...
- BZOJ2330 糖果[差分约束方案+spfa?/tarjan]
以往对于差分约束理解不是太深,导致这题屡次被坑,在此记录一下细节的理解. 差分约束实际上就是利用了spfa的一个特性:只要有$dis_y>dis_x+w_{x,y}$就松弛,直到所有边关系都满足 ...
- BZOJ4383 [POI2015]Pustynia[线段树优化建边+拓扑排序+差分约束]
收获挺大的一道题. 这里的限制大小可以做差分约束,从$y\to x$连$1$,表示$y\le x-1$即$y<x$,然后跑最长路求解. 但是,如果这样每次$k+1$个小区间每个点都向$k$个断点 ...
- 【BZOJ2330】【SDOI2012】糖果(差分约束,SPFA)
[BZOJ2330][SDOI2012]糖果 题面 题目描述 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要 ...
- BZOJ2330 SCOI2011 糖果 【差分约束】
BZOJ2330 SCOI2011 糖果 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一 ...
- 【bzoj2330】: [SCOI2011]糖果 图论-差分约束-SPFA
[bzoj2330]: [SCOI2011]糖果 恩..就是裸的差分约束.. x=1 -> (A,B,0) (B,A,0) x=2 -> (A,B,1) [这个情况加个A==B无解的要特 ...
- 【BZOJ2330】糖果(差分约束系统,强连通分量,拓扑排序)
题意: 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖 ...
随机推荐
- loadrunner ---模拟多IP登录
1.打开HP LoadRunner ->Tools ->IP Wizard
- java 基本语法
标识符 标识符就是给变量.类或方法起的名字. 标识符由26个英文字符大小写(a~zA~Z).数字(0~9).下划线(_)和美元符号($)组成 不能以数字开头,不能是关键字 严格区分大小写 标识符的可以 ...
- nginx配置文件httpd.conf详解
PS:Nginx使用有两三年了,现在经常碰到有新用户问一些很基本的问题,我也没时间一一回答,今天下午花了点时间,结合自己的使用经验,把Nginx的主要配置参数说明分享一下,也参考了一些网络的内容,这 ...
- Android部分调试开关
开启 GPU Render 的profiling bar: adb shell setprop debug.hwui.profile visual_bars #或visual_lines adb sh ...
- Codeforces Round #385 //再遇状压
敲完三题挂机一小时..... 也没懂DE什么意思 rank600上了一波分... A. Hongcow Learns the Cyclic Shift 给一个字符串,每次可以把最后一个字符拿到开头 ...
- Android开发学习---使用Intelij idea 13.1 进行android 开发
1.为什么放弃eclipse?太卡!! 实在受不了eclipse的卡了,运行WEB项目还好,但android开发实在太慢,太慢!经常卡死,CPU经常被占满! 看网上很多人都说比Intelij idea ...
- Access批量操作
鉴于C#要插5万条记录到Access很慢,在网上找了好久的资料,终于找到了比较有用的信息(转载自Bach)谢谢! 总结如下: 1.导出TXT: select * into [data.txt] in ...
- poj -- 1042 Gone Fishing(枚举+贪心)
题意: John现有h个小时的空闲时间,他打算去钓鱼.钓鱼的地方共有n个湖,所有的湖沿着一条单向路顺序排列(John每在一个湖钓完鱼后,他只能走到下一个湖继续钓),John必须从1号湖开始钓起,但是他 ...
- RancherOS Hyper-V 安装
RancherOS Hyper-V 安装, Install to disk 打开 Hyper-V 管理界器, 新建虚拟机 输入名称和存储位置 选择一代 最低 1024M 配置网络 创建虚拟磁盘 设置启 ...
- Ceph剖析:定时器safetimer的实现
定时器的作用是在指定的时间执行指定的动作.SafeTimer通过multimap数据结构维护定时项,定时项是时间和事件的Pair,定时项在map中按照定时时间从小到大排列.此外,SafeTimer使用 ...