【BZOJ2300】【SCOI2011】糖果

差点就忘了还有差分约束这个东西……看见了就要学习一个

原题:

幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,lxhgww需要满足小朋友们的K个要求。幼儿园的糖果总是有限的,lxhgww想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。

N<=100000,K<=100000,1<=A, B<=N

 

差分约束模板题,学习一个!

以操作3为例,如果a不少于b,那么a-b>=0,a>=b+0

所以连b到a权值为0的边,根据三角形不等式,要跑最长路来使条件满足

具体原理我也想不太清楚,反正记住搞出三角形不等式后跑符号相反的spfa就对了 _(:3 」∠)_

因为写出了像"q[tl]=false"酱sb的东西+没对拍所以没1A……

注意longlong

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 using namespace std;
 7 int rd(){int z=0,mk=1;  char ch=getchar();
 8     while(ch<'0'||ch>'9'){if(ch=='-')mk=-1;  ch=getchar();}
 9     while(ch>='0'&&ch<='9'){z=(z<<3)+(z<<1)+ch-'0';  ch=getchar();}
10     return z*mk;
11 }
12 struct ddd{int nxt,y,v;}e[210000];  int lk[110000],ltp=0;
13 inline void ist(int x,int y,int z){  e[++ltp].nxt=lk[x],lk[x]=ltp,e[ltp].y=y,e[ltp].v=z;}
14 int n,m;
15 int dstc[110000],cnt[110000];
16 int q[110000],hd=0,tl=0,tp=100001;  bool vstd[110000];
17 bool spfa(){
18     memset(vstd,0,sizeof(vstd));
19     //memset(dstc,0,sizeof(dstc));
20     for(int i=1;i<=n;++i)  q[++hd]=i,dstc[i]=1;
21     while(tl!=hd){
22         tl=(tl==tp ? 0 : tl+1);
23         for(int i=lk[q[tl]];i;i=e[i].nxt)if(dstc[q[tl]]+e[i].v>dstc[e[i].y]){
24             dstc[e[i].y]=dstc[q[tl]]+e[i].v;
25             if(++cnt[e[i].y]==n)  return false;
26             if(!vstd[e[i].y])  q[hd=(hd==tp ? 0 : hd+1)]=e[i].y,vstd[e[i].y]=true;
27         }
28         vstd[q[tl]]=false;
29     }
30     return true;
31 }
32 int main(){//freopen("ddd.in","r",stdin);
33     cin>>n>>m;
34     int mk,l,r;
35     while(m--){
36         mk=rd(),l=rd(),r=rd();
37         if(mk==1)  ist(l,r,0),ist(r,l,0);
38         else if(mk==2){
39             if(l==r){  cout<<-1<<endl;  return 0;}
40             ist(l,r,1);
41         }
42         else if(mk==3)  ist(r,l,0);
43         else if(mk==4){
44             if(l==r){  cout<<-1<<endl;  return 0;}
45             ist(r,l,1);
46         }
47         else if(mk==5)  ist(l,r,0);
48     }
49     if(!spfa()){  cout<<-1<<endl;  return 0;}
50     long long ans=0;
51     for(int i=1;i<=n;++i)  ans+=dstc[i];
52     cout<<ans<<endl;
53     return 0;
54 }
View Code

 

转载于:https://www.cnblogs.com/JSL2018/p/6539363.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql中的函数有哪些?(2.控制流函数)

一.函数类型 1.数学函数和控制流函数 2.字符串函数 3.日期和时间函数 4.系统信息函数和加密函数 二.解析控制流函数及其包含类型 1.控制流函数也称作“条件判断函数”&#xff0c;其根据满足的条件不同&#xff0c;执行相应的流程。 MySQL 中常见的控制流函数有 IF、IFNU…

st庞大股票股吧_黄金变石头!6倍大牛股提前锁定退市,市值蒸发98%,还有这些股票拉响警报(附名单)...

12月18日&#xff0c;*ST刚泰再次以跌停收盘&#xff0c;报0.53元/股&#xff0c;总市值仅7.89亿元。截至今日&#xff0c;公司已连续8日跌停&#xff0c;同时连续第19天收盘价低于1元/股&#xff0c;面值退市已是板上钉钉。戏剧性的是&#xff0c;与*ST刚泰行业、境遇相似的*S…

MYSQL的函数有哪些?(3.字符串函数)

一。字符串函数的类别及其作用 字符串函数主要用来处理字符串数据&#xff0c;MySQL 字符串函数主要有计算字符长度函数、字符串合并函数、字符串转换函数、字符串比较函数以及查找指定字符串位置函数等。 如下表所类 字符串函数 功能介绍 CHAR_LENGTH(str) 返回字符串 s…

多线程卖票问题

public class Ticket {private int number 30;public void sale(){if(number > 0){System.out.println(Thread.currentThread().getName() "卖出了" (number--) "票&#xff0c;剩余&#xff1a;" number);}}public static void main(String[] args…

在配置静态IP的时候遇到 :bringing up interface eth0 : error unknown connection

首先这是动态ip配置成功的结果 接下来切换到root用户来配置静态的 按照静态ip的配置方法配置好文件后&#xff08;具体过程这里就不多加说明&#xff09; 然后保存退出 当我们重启网卡的时候问题来了&#xff08;因为本人有点强迫症&#xff0c;多次重启了&#xff0c;结果还是…

解决java.net.ConnectException: Connection refused:connect报错

解决java.net.ConnectException: Connection refused:connect报错 2. 原因和解决&#xff1a; 1&#xff09;端口号被占用&#xff1a;杀死占用端口号&#xff08;一般为8080&#xff09;的进程&#xff0c;释放端口&#xff1b;彻底关闭 Tomcat 服务器&#xff0c;或者重新启…

discuz修改用户uid_你知道Linux中的UID和GID的含义吗

你知道Linux中的UID和GID的含义吗是不是大家看到UID(user id)和GID(group id)&#xff0c;都会立马说不就是用户和用户组ID。但是。当我们登陆Linux系统时&#xff0c;输入自己的用户名和密码&#xff0c;这里其实Linux系统并不认识你的用户名(或者换一种说法&#xff0c;不是依…

linux5种IO模型以及同步异步,阻塞非阻塞

同步&#xff08;synchronous&#xff09; IO和异步&#xff08;asynchronous&#xff09; IO&#xff0c;阻塞&#xff08;blocking&#xff09; IO和非阻塞&#xff08;non-blocking&#xff09;IO分别是什么&#xff0c;到底有什么区别&#xff1f;这个问题其实不同的人给出…

MYSQL的函数有哪些?(4.3时间与日期函数)

一。时间与日期函数的格式说明符 格式说明符 描述说明 %a 一星期中每天名称的缩写&#xff08;Sun...Sat&#xff09; %b 月份的缩写&#xff08;Jan...Dec&#xff09; %c 月份的数字表现形式&#xff08;0...12&#xff09; %D 带有英语后缀的一个月中的每一天的…

MYSQL中最基础的的聚合函数(重点!)

一。聚合函数的介绍 在数据库查询过程中&#xff0c;不仅只返回数据的基础信息&#xff0c;有时还需对这些数据进行统计和汇总。MySQL 提供了聚合函数&#xff0c;用于实现这些高级功能。 二。聚合函数的基础运用 聚合函数用于对一组值进行计算并返回一个汇总值&#xff0c;…

商品尺码规格和颜色需要支持双引号

商品尺码规格和颜色需要支持双引号 商品尺码规格和颜色既然要支持双引号&#xff0c;不得不佩服这个需求&#xff1b; 如果支持英文双引号 就会是 "color":""red"" 导致前端获取不到颜色&#xff0c;但是中文状态下是没有问题的 只能将英文转换…

EasyExcel导入的时候报错Caused by: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/File

今天用EasyExcel导入的时候报错&#xff0c;如下 com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/FileMagic at com.alibaba.excel.analysis.ExcelAnalyserImpl.<init>(ExcelAnalyserImpl.java…

MYSQL中最基础的的聚合函数(avg求平均值及count求和)

一。avg函数 1.性质及作用&#xff1a;avg(column) 用于返回数字型字段 column 的平均值&#xff0c;注意&#xff1a;列值为 null 的字段不参与运算。 2.如何运用 实例&#xff1a;1.获取线路里程的平均值。 2.获取公交二公司所属线路的平均里程数。 二。count函数 1.性质…

分组查询 group by 子句及order by子句

一。group by的实际意义 使用 group by 子句可以将数据划分到不同的组中&#xff0c;实现对记录的分组查询。group by 从英文字面的意义上可以理解为“根据&#xff08;by&#xff09;一定的规则进行分组&#xff08;group&#xff09;”&#xff0c;该子句的作用是通过一定的…

列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...

视频&#xff1a;《零基础学习Android开发》第五课 类与面向对象编程1-1类的定义、成员变量、构造方法、成员方法一、从数据与逻辑相互关系审视代码通过前面的课程&#xff0c;我们不断接触Java语言的知识&#xff0c;不断增加自己的语言表达能力。到现在为止&#xff0c;我已经…

MYSQL多字段分组having子句

一。多字段分组的意义 group by 子句的分组字段是一个字段列表&#xff0c;即 MySQL 支持按多个字段进行分组。具体的分组策略&#xff1a;分组优先级从左至右&#xff0c;即先按第一个字段进行分组&#xff0c;然后在第一个字段值相同的记录中&#xff0c;再根据第二个字段的…

Hadoop的多节点集群启动,唯独没有namenode进程?(血淋淋教训,一定拍快照)(四十五)...

前言 大家在搭建hadoop集群时&#xff0c;第一次格式化后&#xff0c;一路要做好快照。别随便动不动缺少什么进程&#xff0c;就来个格式化。 问题描述&#xff1a;启动hadoop时报namenode未初始化&#xff1a;java.io.IOException: NameNode is not formatted. 同时&#xff0…