UVALive - 4223(hdu 2926)
---恢复内容开始---
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2962
Trucking
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 11428 Accepted Submission(s): 1104
For the given cargo truck, maximizing the height of the goods transported is equivalent to maximizing the amount of goods transported. For safety reasons, there is a certain height limit for the cargo truck which cannot be exceeded.
1 2 7 5
1 3 4 2
2 4 -1 10
2 5 2 4
3 4 10 1
4 5 8 5
1 5 10
5 6
1 2 7 5
1 3 4 2
2 4 -1 10
2 5 2 4
3 4 10 1
4 5 8 5
1 5 4
3 1
1 2 -1 100
1 3 10
0 0
maximum height = 7
length of shortest route = 20
Case 2:
maximum height = 4
length of shortest route = 8
Case 3:
cannot reach destination
思路:这题既要控制最短路,也要控制height值的最大,总思路就是二分+最短路。
二分控制最大的height,最短路控制最小的路径。 值得一提的是这题格式很严格,写不对就是wa...不会PE, 还有时限卡的很紧,能优化的最好都优化了
具体看代码
#include<iostream>
#include<string.h>
#include<map>
#include<cstdio>
#include<cstring>
#include<stdio.h>
#include<cmath>
#include<ctype.h>
#include<math.h>
#include<algorithm>
#include<set>
#include<queue>
typedef long long ll;
using namespace std;
const ll mod=1e9+;
const int maxn=1e3+;
const int maxk=5e3+;
const int maxx=1e4+;
const ll maxe=+;
#define INF 0x3f3f3f3f3f3f
#define Lson l,mid,rt<<1
#define Rson mid+1,r,rt<<1|1
int d[maxn];//用来存储起点到该点的最短距离,初始化为足够大
int height[maxn][maxn],le[maxn][maxn];//两点间的height,length
int C,R,S,E,limit,max_he,min_le,he;//
bool vis[maxn];//是否访问过,初始化false
void init()
{
//memset(height,-1,sizeof(height));
for(int i=;i<=C;i++)
{
for(int j=;j<=i;j++)
{
le[i][j]=le[j][i]=mod;
height[i][j]=-;
}
}
}
bool solve(int mid)
{
memset(vis,false,sizeof(vis));
for(int i=;i<=C;i++)
{
if(height[S][i]>=mid) d[i]=le[S][i];
else d[i]=mod;
//d[i]=mod;
//vis[i]=false;
}
//d[S]=0;
//he=mod;
while(true)
{
int flag=-;
for(int i=;i<=C;i++)
{
if(!vis[i]&&d[i]!=mod&&(flag==-||d[i]<d[flag]))//没有访问过并且距离不等于mod,因为等于mod代表当前不能走
flag=i;
}
if(flag==-) break;
if(flag==E) return d[flag]!=mod;//这里也是一步优化,只要走到了结束点就行了
vis[flag]=true;
for(int i=;i<=C;i++)
{
//if(le[i][flag]>mid) continue;
if(height[i][flag]<mid) continue;
d[i]=min(d[i],d[flag]+le[flag][i]);
//he=min(he,height[i][flag]);
//d[i]=min(d[i],d[flag]+le[flag][i]);
}
}
return d[E]!=mod;
}
int main()
{
int ca=;
//while(cin>>C>>R)
while(scanf("%d%d",&C,&R)!=EOF)
{ if(C==&&R==) break;
if(ca!=) printf("\n");//这个好像一定要放在break的后面,反正我放在前面wa了
init();
int a,b,c,e;
for(int i=;i<R;i++)
{
scanf("%d%d%d%d",&a,&b,&c,&e);
//cin>>a>>b>>c>>e;
if(c==-) c=mod;//c=-1的话,初始化为无穷大
height[a][b]=c;
height[b][a]=c;
le[a][b]=e;
le[b][a]=e;
}
//cin>>S>>E>>limit;
scanf("%d%d%d",&S,&E,&limit);
int l=,r=limit;
min_le=,max_he=;
while(l<=r)//从0~imit开始二分
{
int mid=(l+r)/;
if(solve(mid))//mid值可以满足,寻求更大的
{
max_he=mid;
min_le=d[E];
l=mid+;
}
else//不能满足,寻求小的
r=mid-;
}
printf("Case %d:\n",ca++);
if(min_le+max_he==) printf("cannot reach destination\n");
else
{
printf("maximum height = %d\n",max_he);
printf("length of shortest route = %d\n",min_le);
} }
return ;
}
UVALive - 4223(hdu 2926)的更多相关文章
- UVALive 4223 / HDU 2962 spfa + 二分
Trucking Problem Description A certain local trucking company would like to transport some goods on ...
- UVALive 4223 Trucking 二分+spfa
Trucking 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8& ...
- UVALive - 4223,hdu2962(简单dijkstra)
Trucking Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 二分+最短路 UVALive - 4223
题目链接:https://vjudge.net/contest/244167#problem/E 这题做了好久都还是超时,看了博客才发现可以用二分+最短路(dijkstra和spfa都可以),也可以用 ...
- bzoj千题计划210:bzoj2642 | Poj3968 | UVALive 4992| hdu 3761 Jungle Outpost
http://www.lydsy.com/JudgeOnline/problem.php?id=2642 题意: n个瞭望台,形成一个凸n边形.这些瞭望台的保护范围是这个凸包内的任意点. 敌人进攻时, ...
- UVALive 4225 / HDU 2964 Prime Bases 贪心
Prime Bases Problem Description Given any integer base b >= 2, it is well known that every positi ...
- UVALive 4222 /HDU 2961 Dance 大模拟
Dance Problem Description For a dance to be proper in the Altered Culture of Machinema, it must abid ...
- UVALive 4192/HDU 2959 Close Enough Computations 数学
Close Enough Computations Problem Description The nutritional food label has become ubiquitous. A sa ...
- 【ACM】那些年,我们挖(WA)过的最短路
不定时更新博客,该博客仅仅是一篇关于最短路的题集,题目顺序随机. 算法思想什么的,我就随便说(复)说(制)咯: Dijkstra算法:以起始点为中心向外层层扩展,直到扩展到终点为止.有贪心的意思. 大 ...
随机推荐
- 洛谷P4721 【模板】分治 FFT(生成函数+多项式求逆)
传送门 我是用多项式求逆做的因为分治FFT看不懂…… upd:分治FFT的看这里 话说这个万恶的生成函数到底是什么东西…… 我们令$F(x)=\sum_{i=0}^\infty f_ix^i,G(x) ...
- redhat 安装lamp
安装Apache yum install httpd 安装MySql yum install mysql mysql-server 安装php yum install php 安装php的mysql模 ...
- 【转】 Pro Android学习笔记(五十):ActionBar(3):搜索条
目录(?)[-] ActionBar中的搜索条 通过Menu item上定义search view 进行Searchable的配置 在activity中将search view关联searchable ...
- ES6学习之Promise
详见之前文章:Promise详解
- Android Studio配置使用git
一.准备 如果没有安装git,那么先要到到Git官网下载git,然后按照提示一步一步安装即可,这个没有什么难度,不过要记得安装的目录. 二.Android Studio配置git File->S ...
- HTTP ERROR
HTTP 400 – 请求无效HTTP 401.1 – 未授权:登录失败HTTP 401.2 – 未授权:服务器配置问题导致登录失败HTTP 401.3 – ACL 禁止访问资源HTTP 401.4 ...
- java多线程无锁和工具类
1 无锁 (1) cas (compare and swap) 设置值的时候,会比较当前值和当时拿到的值是否相同,如果相同则设值,不同则拿新值重复过程:注意,在设置值的时候,取值+比较+设值 是一条c ...
- MQTT,XMPP,STOMP,AMQP,WAMP适用范围优缺点比较
想要向服务器发送请求并获得响应?直接使用 HTTP 吧!非常简单.但是当需要通过持久的双向连接来通信时,如 WebSockets,当然你也有其它的选择. 这篇文章会简单扼要的解释 MQTT,XMPP, ...
- 微信小程序报错.wxss无法找到
小程序原来一直运行正常,编译都没有问题,但今天更新了一下工具,就一直编译不过,报.wxss无法找到,搜索半天,才解决. 解决方案如下: 在控制台输入openVendor(), 在打开的目录中清除wcs ...
- Servlet的一些细节
由于客户端是通过URL地址访问web服务器的中的资源的,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet& ...