【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…

MySQL全文索引应用简明教程

本文从以下几个方面介绍下MySQL全文索引的基础知识&#xff1a; MySQL全文索引的几个注意事项全文索引的语法几种搜索类型的简介几种搜索类型的实例全文索引的几个注意事项 搜索必须在类型为fulltext的索引列上&#xff0c;match中指定的列必须在fulltext中指定过仅能应用在表引…

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…

windows server 2003R2\2008R2\2012\2016 安装【故障转移群集】cluster

温故而知新&#xff01; 靠&#xff0c;突然觉得it技能只要一年的时间就能忘记&#xff01; virtualbox虚拟机安装群集&#xff0c;注意点&#xff1a; clone的虚拟机&#xff0c;sid问题。sysprep太慢了&#xff0c;不如重新安装快&#xff01;虚拟机增强组件&#xff0c;会影…

oracle数据库主键自增序列_oracle数据库ID自增长--序列

什么是序列&#xff1f;在mysql中有一个主键自动增长的id&#xff0c;例如&#xff1a;uid number primary key auto_increment;在oracle中序列就是类似于主键自动增长&#xff0c;两者功能是一样的&#xff0c;只是叫法不同而已。在oracle中想要实现id自动增长只能用序列来实现…

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

一。首先介绍一下时间及日期函数 日期和时间函数主要用来处理日期和时间的值&#xff0c;一般的日期函数除了使用 DATE 类型的参数外&#xff0c;也可以使用DATETIME 或 TIMESTAMP 类型的参数&#xff0c;只是忽略了这些类型值的时间部分。类似的情况还有以 TIME 类型为参数的…

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

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

python信息找人的算法_算法篇-python查找算法

上一篇的递归算法中&#xff0c;了解到算法的复杂度。递归就是在函数中调用本身。在汉诺塔游戏例子中&#xff0c;如果你需要移动的盘子很多时&#xff0c;程序运行就会消耗很长时间来计算结果。可以回顾下 —>算法篇-python递归算法用递归打印斐波那契数列&#xff0c;你会…

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

二。时间与日期函数的type取值 type 值 代表的实际时间 MICROSECOND 微秒数 SECOND 秒数 MINUTE 分钟数 HOUR 小时数 DAY 天数 WEEK 周数 MONTH 月数 QUARTER 季度数 YEAR 年数 type 值 代表的实际时间 SECOND_MICROSECOND ‘秒数 . 微秒数’ …

解决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 带有英语后缀的一个月中的每一天的…

根据图片地址得到文件流

/*** 得到文件流** param url 图片地址* return*/public static byte[] getFileStream(String url) {try {URL httpUrl new URL(url);HttpURLConnection conn (HttpURLConnection) httpUrl.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(…

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

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

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

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