Candies差分约束
Candies
题意:
有 n 个小朋友,编号 1∼n。
老师要给他们发糖果。
小朋友们的攀比心都很重,现在给出 m 条攀比信息。
每条信息包含三个整数 a,b,c,含义是小朋友 a 认为小朋友 b 的糖果数量最多只可以比他多 c 个,否则他就生气。
老师在发糖果时,必须照顾所有小朋友的情绪,让他们都感到满意。
请问,小朋友 n 最多比小朋友 1 多分到多少个糖果。
思路:我们可以把每一对关系看成一条边,如a->b权值为c, b <= a + c,这是明显的差分约束的特征,且题目让我们求最大值,那么我们得求最短路,如果让我们求最小值,则我们要求最长路
#include<iostream>
#include<cstring>
#include<queue>
#include<stack>
using namespace std;const int N = 3e4+10, M = 150010;int h[N], e[M], ne[M], w[M], idx;int vis[N];
int dis[N];
int n, m;void add(int a,int b,int c){e[idx] = b;ne[idx] = h[a];w[idx] = c;h[a] = idx++;
}void spfa(){stack<int>q;q.push(1);vis[1]=1;dis[1]=0;while(q.size()){int t = q.top();q.pop();vis[t]=0;for(int i = h[t]; ~i ; i = ne[i]){int j = e[i];if(dis[j] > dis[t] + w[i]){dis[j] = dis[t] + w[i];if(!vis[j]){vis[j] = 1;q.push(j);} }}}
}int main(){while(~scanf("%d%d",&n,&m)){memset(h,-1,sizeof h);memset(dis,0x3f,sizeof dis);memset(vis,0,sizeof vis);idx = 0;while(m--){int a,b,c;scanf("%d%d%d",&a,&b,&c);add(a,b,c);}spfa();printf("%d\n",dis[n]); }
}
Candies差分约束相关推荐
- POJ3159 Candies 差分约束
一.内容 During the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teac ...
- pku 3159 Candies 差分约束
题意是:fy作为班长,分发糖果给每个孩子,而分发的过程要满足一个约束条件就是 B - A <= C 表示B所得到的糖果不能比A多c个.问fy(n点代表)所能得到的糖果数量与sp(0点代表)所能 ...
- POJ 3159 Candies 差分约束dij
分析:设每个人的糖果数量是a[i] 最终就是求a[n]-a[1]的最大值 然后给出m个关系 u,v,c 表示a[u]+c>=a[v] 就是a[v]-a[u]<=c 所以对于这种情况,按照u ...
- POJ 3159 Candies(差分约束+SPAF)
题意: 给n个小朋友分发糖果,但小朋友们之间有嫉妒心.接下来m行,每行三个数,分别表示小朋友A希望B得到的糖果不能比他多x个.要求你计算在满足所有小朋友的条件的情况下最多需要准备多少颗糖. 题目: D ...
- 【POJ - 3159】Candies (差分约束,卡SPFA)
题干: 在幼儿园的时候,Flymouse是班上的班长.有时班主任会给班上的孩子们带来一大袋糖果,让他们分发.所有的孩子都非常喜欢糖果,经常比较他们和别人买的糖果的数量.一个孩子A可以有这样的想法,尽管 ...
- [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]
题意 有n个数的序列, 下标为[1.. N ], 限制条件为: 下标从 si 到 si+ni 的项求和 < 或 > ki. 一共有m个限制条件. 问是否存在满足条件的序列. 思路 转化为差 ...
- 【差分约束】POJ3159/LG P1993 小K的农场
终于把差分约束刷完了!!,这些题的套路都是很类似的 题目描述小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种 ...
- HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集
题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...
- HDU3440(差分约束+SPFA算法)
题意:两栋房子之间的最大距离为D,也就是A-B<=D,现在求出最矮和最高房子之间的最大距离 思路:差分约束+SPFA算法: 当问题可以转化为形如一组 xi‑x'i<=yi 或一组 xi‑x ...
最新文章
- iOS - UnitTests 单元测试
- itk下FFTW的FFT和IFFT
- JavaSript模块规范 - AMD规范与CMD规范介绍[转]
- Orchid兰花协议简介——分布式匿名代理网络
- Polycarp Training
- 集成方法(随机森林)
- java单例模式深入详解_javascript 模块依赖管理的本质深入详解
- 一信通短信接口对接_短信验证码接口轻松对接事项
- C语言libiconv编程,libIconv.lib编码库的生成和使用
- 4.2.5 求解幂集问题
- 澳洲计算机科学专业,盘点澳洲八大名校那些最强的专业—计算机科学专业
- 个人介绍 php 怎么说,个人介绍怎么写
- 如何设置select-option的多项起始默认值
- Verticle in Vert.x
- Springboot项目使用Idea直接生成docker镜像部署到Centos7.6
- matlab存储excel数据,怎么把matlab表格数据写入excel-怎么把matlab中处理的数据存入到excel中...
- 时间序列预测分析(2)How to Develop a Skillful Machine Learning Time Series Forecasting Model
- 诺基亚C5智能手机的功能非常好,并具有一定程度的可取性
- OpenCV Java入门三 Mat的基本操作
- ural 1998 The old Padawan