Candies POJ - 3159
题目链接:https://vjudge.net/problem/POJ-3159
思路:
能看出是差分约束的题,
我们想假设一个人是 p(1),另一个人是p(2),他们之间糖果差为w,
那么需要满足的是 : p(2) - p(1) <= w,
为了让p(1) 和 p(n)差距最大,我们可以取w,为了满足题目要求
p2 - p1 <= w1, p3 - p2 <= w2, p3 - p1 <= w3 ... ... px - py <= wn(举例是任意的两个边要满足),
我们可以建图了,用spfa的话,可以把松弛条件改了,
if(dist[v] - dist[u] > w) 说明不合题目意思了,那么
dist[v] = dist[u] + w; 去更新他。
这里用队列优化spfa不可以,会超时,用栈可以,这里我认为是,栈类似于dfs,一个点的其他情况走到底,
相比于队列类比bfs宽搜,每个点和边都要遍历到,用类似于dfs的方法可以减少其他宽搜的分支。
而且,而且,而且,C++会超时。。。关了输入输出同步也会,c在大量数据输入时,c++还是比不了啊。。。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <stack>
#include <string>
#include <map>
#include <cmath>
#include <iomanip>
using namespace std; typedef long long LL;
#define inf 1e9
#define rep(i,j,k) for(int i = (j); i <= (k); i++)
#define rep__(i,j,k) for(int i = (j); i < (k); i++)
#define per(i,j,k) for(int i = (j); i >= (k); i--)
#define per__(i,j,k) for(int i = (j); i > (k); i--) const int N = ;
int head[N];
int vis[N];
int dist[N];
stack<int> sta;
int cnt;
int n,m;
bool ok; struct Edge{
int to;
int w;
int next;
}e[]; inline void add(int u,int v,int w){
e[cnt].to = v;
e[cnt].w = w;
e[cnt].next = head[u];
head[u] = cnt++;
} void SPFA(){ rep(i,,n) dist[i] = inf;
dist[] = ;
sta.push(); while(!sta.empty()){
int u = sta.top();
sta.pop();
vis[u] = false; for(int o = head[u]; ~o; o = e[o].next){
int v = e[o].to;
int w = e[o].w; if(dist[v] - dist[u] > w){
dist[v] = dist[u] + w;
if(!vis[v]){
vis[v] = true;
sta.push(v);
}
}
}
} printf("%d\n",dist[n]);
// cout << dist[n] << endl;
} int main(){ // ios::sync_with_stdio(false);
// cin.tie(0); scanf("%d%d",&n,&m);
// cin >> n >> m;
rep(i,,n) head[i] = -;
cnt = ; int u,v,w;
rep(i,,m){
// cin >> u >> v >> w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
} SPFA(); getchar(); getchar();
return ;
}
Candies POJ - 3159的更多相关文章
- Candies POJ - 3159 (最短路+差分约束)
During the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teacher b ...
- Candies POJ - 3159 差分约束
// #include<iostream> #include<cstring> #include<queue> #include<stack> #inc ...
- POJ 3159 Candies (图论,差分约束系统,最短路)
POJ 3159 Candies (图论,差分约束系统,最短路) Description During the kindergarten days, flymouse was the monitor ...
- POJ 3159 Candies(SPFA+栈)差分约束
题目链接:http://poj.org/problem?id=3159 题意:给出m给 x 与y的关系.当中y的糖数不能比x的多c个.即y-x <= c 最后求fly[n]最多能比so[1] ...
- POJ 3159 Candies(差分约束,最短路)
Candies Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 20067 Accepted: 5293 Descrip ...
- POJ 3159 Candies(差分约束)
http://poj.org/problem?id=3159 题意:有向图,第一行n是点数,m是边数,每一行有三个数,前两个是有向边的起点与终点,最后一个是权值,求从1到n的最短路径. 思路:这个题让 ...
- POJ 3159 Candies 解题报告(差分约束 Dijkstra+优先队列 SPFA+栈)
原题地址:http://poj.org/problem?id=3159 题意大概是班长发糖果,班里面有不良风气,A希望B的糖果不比自己多C个.班长要满足小朋友的需求,而且要让自己的糖果比snoopy的 ...
- POJ 3159 Candies(差分约束+spfa+链式前向星)
题目链接:http://poj.org/problem?id=3159 题目大意:给n个人派糖果,给出m组数据,每组数据包含A,B,C三个数,意思是A的糖果数比B少的个数不多于C,即B的糖果数 - A ...
- POJ 3159 Candies 还是差分约束(栈的SPFA)
http://poj.org/problem?id=3159 题目大意: n个小朋友分糖果,你要满足他们的要求(a b x 意思为b不能超过a x个糖果)并且编号1和n的糖果差距要最大. 思路: 嗯, ...
随机推荐
- [RN] React-Native中Array渲染的优化
React-Native中Array渲染的优化 例如用Push加进去的数据: constructor(props){ super(props); this.state = { b ...
- <Stack> 150 71 388
150. Evaluate Reverse Polish Notation class Solution { public int evalRPN(String[] tokens) { Stack&l ...
- calc()在less中编译报错
calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢? calc() 函数用于动态计算长度值. 需要注意的是,运算符前后都 ...
- [ Python入门教程 ] Python文件基本操作
本文将python文件操作实例进行整理,以便后续取用. 文件打开和创建 Python中使用open()函数打开或创建文件.open()的声明如下: open(name[, mode[, bufferi ...
- CF1149D Abandoning Roads(图论,最短路,状态压缩,最小生成树)
题目大意:$n$ 个点,$m$ 条边的无向图,边权只有两种,小的为 $a$,大的为 $b$. 对于每个点 $p$,询问在这张图所有的最小生成树上,$1$ 到 $p$ 的最短距离的最小值. $2\le ...
- [LeetCode] 893. Groups of Special-Equivalent Strings 特殊字符串的群组
You are given an array A of strings. Two strings S and T are special-equivalent if after any number ...
- 前后台$.post交互并返回JSON对象
1.前台代码: $.post(url,{"blogId":blogId},function(reData){ if(reData.state=="success" ...
- django实战(二)--带多字段模糊查询的分页(也是不容易)
上节我们实现了分页功能,这节我们要实现对模糊查询后的结果进行分页.(引入了bootstrap框架) urls.py from django.urls import path from . import ...
- 目标检测 <二> TensorFlow安装
一:创建TensorFlow工作环境目录 1. 在anconda安装目录下找到envs目录然后进入 2. 在当前目录下创建一个文件夹改名为tensorflow 二: 创建TensorFlow工作环境 ...
- HTML5网页上播放mp4失败的原因
HTML5先网页直接打开mp4 如果打不开 先用格式工厂转化下格式 转成mp4 avc编码 就行了 ps:ae要先导出mp4 然后再用上面的方法 不要导出avi 不然转化成 avc也是播放不了