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的糖果差距要最大. 思路: 嗯, ...
随机推荐
- [LeetCode] 212. Word Search II 词语搜索之二
Given a 2D board and a list of words from the dictionary, find all words in the board. Each word mus ...
- Spring Cloud Alibaba整合Sentinel流控
前面我们都是直接通过集成sentinel的依赖,通过编码的方式配置规则等.对于集成到Spring Cloud中阿里已经有了一套开源框架spring-cloud-alibaba,就是用于将一系列的框架成 ...
- 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用
准备 JDK (配置JDK_HOME\bin 和 CLASSPATH) 注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本) 对于我们新手来说,JD ...
- oracle --工具 ODU
一,什么是ODU ODU全称为Oracle Data ba se Unloader ,是用于Oracle 数据库紧急恢复的软件,在各种原因 造成的数据库不能打开或数据删除后没有备份时,使用ODU抢救数 ...
- 分布式事物解决方案-TCC
分布式框架下,如何保证事物一致性一直是一个热门话题.当然事物一致性解决方案有很多种(请参考:分布式事物一致性设计思路),我们今天主要介绍TCC方案解决的思路.以下是参与设计讨论的一种解决思路,大家有问 ...
- python 爬取媒体文件(无防火墙)
#coding = utf-8 import requests import pandas as pd import os,time root_path = './根目录/' input_file = ...
- C++:inline
inline inline是C++提供的一个关键字,它用于函数定义之前,表示把函数定义为内联函数.内联函数的含义是:在函数调用点把函数体直接展开,取代函数调用. inline int getZero( ...
- MongoDB学习笔记(五)
MongoDB 查看执行计划 MongoDB 中的 explain() 函数可以帮助我们查看查询相关的信息,这有助于我们快速查找到搜索瓶颈进而解决它,本文我们就来看看 explain() 的一些用法及 ...
- CPU 测评
PassMark - CPU MarkHigh End CPUs - Updated 22nd of March 2019 Processor CPU Mark Price (USD) Intel C ...
- golang --os系统包详解
环境变量 Environ 获取所有环境变量, 返回变量列表 func Environ() []string package main import ( "fmt" "os ...