「日常训练」「小专题·图论」 Frogger (1-1)
题意
分析
变形的dijkstra。
分析题意之后补充。
代码
// Origin:
// Theme: Graph Theory (Basic)
// Date: 080518
// Author: Sam X
//#include <bits/stdc++.h>
#include <iostream>
#include <utility>
#include <iomanip>
#include <cstring>
#include <cmath>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
using namespace std;
typedef long long ll;
typedef unsigned long long ul;
typedef pair<int,int> pi;
typedef pair<int,pi> pii;
template<typename T>
T read()
{
T tmp; cin>>tmp;
return tmp;
}
inline double dist(pi x,pi y) { return sqrt((x.fi-y.fi)*(x.fi-y.fi)+(x.se-y.se)*(x.se-y.se)); }
pi pnt[205];
double d[205][205];
double dijkstra(int cnt,int beg)
{
bool vis[205]; ZERO(vis);
double tmpd[205];
memset(tmpd,0x43,sizeof(tmpd)); // INF
tmpd[beg]=0;
rep(i,1,cnt)
{
//cout<<endl<<"***"<<endl;
//rep(i,1,cnt) cout<<tmpd[i]<<" "; cout<<endl;
int minx=-1;double minv=tmpd[0];
rep(j,1,cnt) if(!vis[j] && minv-tmpd[j]>1e-8) minv=tmpd[minx=j];
if(minx==-1) break;
vis[minx]=true;
rep(j,1,cnt) if(!vis[j])
{
tmpd[j]=min(tmpd[j],max(tmpd[minx],d[minx][j]));
}
}
return tmpd[2];
}
int main()
{
int n,kase=0;
while(cin>>n)
{
if(!n) break;
rep(i,1,n)
{
cin>>pnt[i].fi>>pnt[i].se;
}
rep(i,1,n)
{
rep(j,i,n)
{
d[i][j]=d[j][i]=dist(pnt[i],pnt[j]);
}
}
cout<<"Scenario #"<<++kase<<endl<<"Frog Distance = "<<fixed<<setprecision(3)<<dijkstra(n,1)<<endl;
cout<<endl;
}
return 0;
}
kuangbin的代码与分析
floyed的算法本身就带有dp的色彩在里面,所以我们可以从这个角度出发分析。
//============================================================================
// Name : POJ.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
#include <set>
#include <queue>
#include <map>
#include <vector>
#include <string>
#include <math.h>
using namespace std;
const int MAXN=210;
pair<int,int>p[MAXN];
double dis(pair<int,int>p1,pair<int,int>p2)
{
return sqrt((double)(p1.first-p2.first)*(p1.first-p2.first)+(p2.second-p1.second)*(p2.second-p1.second));
}
double dist[MAXN][MAXN];
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
int n;
int x,y;
int iCase=0;
while(scanf("%d",&n)==1&&n)
{
iCase++;
printf("Scenario #%d\n",iCase);
for(int i=0;i<n;i++)
{
scanf("%d%d",&x,&y);
p[i]=make_pair(x,y);
}
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
{
if(i==j)dist[i][j]=dis(p[i],p[j]);
else dist[j][i]=dist[i][j]=dis(p[i],p[j]);
}
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(dist[i][j]>max(dist[i][k],dist[k][j]))
dist[i][j]=max(dist[i][k],dist[k][j]);
printf("Frog Distance = %.3f\n\n",dist[0][1]);
}
return 0;
}
「日常训练」「小专题·图论」 Frogger (1-1)的更多相关文章
- 「日常训练」「小专题·图论」Domino Effect(1-5)
题意 分析 这题几乎就是一条dijkstra的问题.但是,如何考虑倒在中间? 要意识到这题求什么:单源最短路的最大值.那么有没有更大的?倒在中间有可能会使它更大. 但是要注意一个问题:不要把不存在的边 ...
- 「日常训练」「小专题·图论」 Cow Contest (1-3)
题意 分析 问题是要看出来这是个floyd闭包问题.我没看出来- - 分析之后补充. 代码 // Origin: // Theme: Graph Theory (Basic) // Date: 080 ...
- 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)
题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...
- 「日常训练」「小专题·USACO」 Ski Course Design (1-4)
题目 以后补 分析 mmp这题把我写蠢哭了 我原来的思路是什么呢? 每轮找min/max,然后两个决策:升min/降max 像这样子dfs找最优,然后花式剪枝 但是一想不对啊,这才1-4,哪有那么复杂 ...
- 「日常训练」「小专题·USACO」 Wormholes(1-4)
题意 之后补充. 分析 这是一条很好的考察递归(或者说搜索)的题目.它的两个过程(建立初步解,验证)都用到了递归(或者说运用递归可以相当程度的减少代码量). 具体实现见代码.注意,为了使用std::p ...
- 「日常训练」「小专题·USACO」 Barn Repair(1-4)
题意 之后补. 分析 这题同样也很精巧.我们不妨思考一下,如果只允许用一块木板,那么要购买多少距离?是整个的距离吗?不是,是从第一个到最后一个(哈哈哈哈哈哈哈).但是,不包括第一个的"左边& ...
- 「日常训练」「小专题·USACO」 Broken Necklace(1-2)
题意 圆形链条,打断一处可以形成一条链.问在哪个地方开始打断,能够形成最大的连续颜色(白色视作同样的颜色)? 分析 说起来很高级,但是我们实际上并不需要穷举打断的地方,只需要把串重复三回啊三回.然后从 ...
- 「日常训练」 Fire!(UVA-11624)
与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ...
- 「日常训练」Card Game Cheater(HDU-1528)
题意与分析 题意是这样的:有\(n\)张牌,然后第一行是Adam的牌,第二行是Eve的牌:每两个字符代表一张牌,第一个字符表示牌的点数,第二个表示牌的花色.Adam和Eve每次从自己的牌中选出一张牌进 ...
随机推荐
- 原生ajax接收json字符串(简单介绍)
什么是json? JSON的全称是 Javascript Object Notation(javascript对象表示法),是基于javascript对象字面量,如果单从眼睛看,JSON里的数据是被保 ...
- Ueditor上传图片到本地改造到上传图片到七牛云存储
作为新手说多了都是泪啊!我特别想记录一下作为菜鸟时的坑.看看以后是否会看着笑出来. 为什么要改到云存储上就不说了.好处多多. 视频教程上使用的又拍云同时也提到了七牛云.下来我自己也查了下.又拍云是试用 ...
- A Year in Computer Vision
A Year in Computer Vision http://themtank.org/
- Ajax全接触(2)
例子简介 1.查询员工信息,可以通过输入员工编号查询员工基本信息: 2.新建员工信息,包含员工姓名,员工编号,员工性别,员工职位: 实现: 1.纯html页面,用来实现员工查询和新建的页面: 2.ph ...
- Python基础—15-正则表达式
正则表达式 应用场景 特定规律字符串的查找替换切割等 邮箱格式.URL.IP等的校验 爬虫项目中,特定内容的提取 使用原则 只要是能够使用字符串函数解决的问题,就不要使用正则 正则的效率较低,还会降低 ...
- javaScript 字符串与unicode码之间的相互转换,函数的封装
在我们的开发过程中,有时在对数据进行储存的时候,我们需要将字符串转成unicode. 比如,在jsp开发时,前端使用页面间传值时,将传值参数先存入cookie中,然后在使用的时候,再从ookie中取出 ...
- java对象中的三种状态和脏检查及刷新缓存机制
瞬时状态 瞬时状态又称临时状态.如果java对象与数据库中的数据没有任何的关联,即此java对象在数据库中没有相关联的记录,此时java对象的状态为瞬时状态,session对于 瞬时状态的ava对象是 ...
- doT.js使用介绍
doT.js特点是快,小,无依赖其他插件,压缩版仅有4K大小. doT.js详细使用介绍 使用方法: 1 2 3 4 5 6 7 {{ }} 模板 开始标记 结束标记 {{= }} 赋值 {{~ ...
- python构造二维列表以及排序字典
1. 构造二维列表: 比如我现在需要一个100*100的二维列表: a = [] for i in range(100): a.append([]) for j in range(100): a[i] ...
- 移植Linux Kernel SM750 驱动到VxWorks 7
一.SM750简介 SM750 是SiliconMotion 推出的一款适合嵌入式设备的显卡(Embedded GPU),采用PCIe接口与CPU连接,内部集成16MB DDR SDRAM显存,产品具 ...