首页 > 其他分享 >POJ 2253 Frogger

POJ 2253 Frogger

时间:2023-09-12 12:01:20浏览次数:40  
标签:node map return 210 int POJ include 2253 Frogger

//变形的dijkstra//核心代码//if( d[j]>max(d[k],map[k][j]))// d[j]=max(d[k],map[k][j]);

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<cmath>
using namespace std;
#define max 999999
struct node
{
	int x,y;
}p[210];
int map[210][210],f[210],d[210];

int com(node a,node b)
{
	return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}
int n;

int mx(int a,int b)
{
	return a>b?a:b;
}
void dijkstra()
{
	int i,j,k;
	for(i=1;i<=n;i++)
	{
		d[i]=map[1][i];
		f[i]=0;
	}
	f[1]=1;
	d[1]=0;
	for(i=1;i<=n;i++)
	{
		int min=max;
		k=0;
		for(j=1;j<=n;j++)
			if(!f[j] && d[j]<min)
			{
					min=d[j];
					k=j;
			}
		if(k==0) return ;
		f[k]=1;
		for(j=1;j<=n;j++)
		{
			if(!f[j] && map[k][j]!=max && d[j]>mx(d[k],map[k][j]))
				d[j]=mx(d[k],map[k][j]);
		}
	}
}
int main()
{
	int i,j,k;
	int t=0;
	while(scanf("%d",&n),n)
	{
		t++;
		for(i=1;i<=n;i++)
			scanf("%d%d",&p[i].x,&p[i].y);
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				if(i==j)
					map[i][j]=0;
				else
					map[i][j]=max;
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				map[i][j]=com(p[i],p[j]);
		dijkstra();
		printf("Scenario #%d\n",t);
		printf("Frog Distance = %.3lf\n",sqrt(1.0*d[2]));
		printf("\n");
	}
}




#include<stdio.h>
#include<string.h>
#include<math.h>
#include<cmath>
using namespace std;
#define max 999999
struct node
{
	int x,y;
}p[210];
int map[210][210],f[210],d[210];

int com(node a,node b)
{
	return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}
int n;

int mx(int a,int b)
{
	return a>b?a:b;
}
void dijkstra()
{
	int i,j,k;
	for(i=1;i<=n;i++)
	{
		d[i]=map[1][i];
		f[i]=0;
	}
	f[1]=1;
	d[1]=0;
	for(i=1;i<=n;i++)
	{
		int min=max;
		k=0;
		for(j=1;j<=n;j++)
			if(!f[j] && d[j]<min)
			{
					min=d[j];
					k=j;
			}
		if(k==0) return ;
		f[k]=1;
		for(j=1;j<=n;j++)
		{
			if(!f[j] && map[k][j]!=max && d[j]>mx(d[k],map[k][j]))
				d[j]=mx(d[k],map[k][j]);
		}
	}
}
int main()
{
	int i,j,k;
	int t=0;
	while(scanf("%d",&n),n)
	{
		t++;
		for(i=1;i<=n;i++)
			scanf("%d%d",&p[i].x,&p[i].y);
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				if(i==j)
					map[i][j]=0;
				else
					map[i][j]=max;
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				map[i][j]=com(p[i],p[j]);
		dijkstra();
		printf("Scenario #%d\n",t);
		printf("Frog Distance = %.3lf\n",sqrt(1.0*d[2]));
		printf("\n");
	}
}

标签:node,map,return,210,int,POJ,include,2253,Frogger
From: https://blog.51cto.com/u_16244339/7444178

相关文章

  • poj 1113 Wall-----凸包
    凸包问题。先按x坐标排序,x一样的按y排序。取p【0】为开始点,每个点与开始点相连,按x轴正方向,每条线段与x轴的夹角由小到大排序。然后选点求距离。。。本题求凸包的边长+以L为半径的园的周长。//自己的凸包模板#include<stdio.h>#include<string.h>#include<math.h>#include<a......
  • POJ2411 Mondriaan's Dream(多米诺密铺问题)
    不妨设\(n,m\)相等,常规的状压DP做法时间复杂度为\(O(n*2^n)\),但是可以通过套用公式使复杂度变为\(O(n^2)\)。具体地,用\(1*2\)的小长方形覆盖\(n*m\)的棋盘的方案数为\[\Large\prod\limits_{j=1}^{\left\lceil\frac{m}{2}\right\rceil}\prod\limits_{k=1}^{\l......
  • 使用Nginx做页面采集, Kafka收集到对应Topic_6XwWe5qWHGM2PojVPUSejM
    使用Nginx做页面采集,Kafka收集到对应Topic_6XwWe5qWHGM2PojVPUSejM使用Nginx做页面采集,Kafka收集到对应Topic0.架构简介模拟线上的实时流,比如用户的操作日志,采集到数据后,进行处理,暂时只考虑数据的采集,使用Html+Jquery+Nginx+Ngx_kafka_module+Kafka来实现,其中Ngx​kafka​m......
  • 使用Nginx做页面采集, Kafka收集到对应Topic_6XwWe5qWHGM2PojVPUSejM
    使用Nginx做页面采集,Kafka收集到对应Topic_6XwWe5qWHGM2PojVPUSejM使用Nginx做页面采集,Kafka收集到对应Topic0.架构简介模拟线上的实时流,比如用户的操作日志,采集到数据后,进行处理,暂时只考虑数据的采集,使用Html+Jquery+Nginx+Ngx_kafka_module+Kafka来实现,其中Ngx​kafka​m......
  • 使用Nginx做页面采集, Kafka收集到对应Topic_6XwWe5qWHGM2PojVPUSejM
    使用Nginx做页面采集,Kafka收集到对应Topic_6XwWe5qWHGM2PojVPUSejM使用Nginx做页面采集,Kafka收集到对应Topic0.架构简介模拟线上的实时流,比如用户的操作日志,采集到数据后,进行处理,暂时只考虑数据的采集,使用Html+Jquery+Nginx+Ngx_kafka_module+Kafka来实现,其中Ngx​kafka​m......
  • BrandMapper.xml中使用resultMap得到返回结果,解决数据库中的字段与pojo中的字段不匹配
    2023-09-02<?xmlversion="1.0"encoding="utf-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.hh.......
  • POJ 1308 Is It A Tree?
    这是我做出来的第一道有含量的ACM题,应该好好总结一下!这道1308的题,其实很简单,只要抓住了树的特征,就可以解出来。我的解法的思想是这样的:树的分支数m和树的结点数n有一个关系:n==m+1,只要抓住了这个特征,问题便可迎刃而解! 源代码:#include<stdio.h>#include<cstring>inta,b,m=0,n=0,k=......
  • POJ31900(贪心)
    想对了一半,还是不扎实原本想将初始化和之后处理一起放到for里面的(i.e.将push,ans=1等放到for里面),发现比较麻烦,然后死磕这个,要建函数什么的,看了人家的代码之后发现没有必要,当然是美观了一点。其实能不能将初始化和处理一起写最重要的是看你的思路isclearornot,sometimesi......
  • POJ3253(贪心)
    1.要考虑到规模为20,000累加起来肯定会超的,要用longlong2.思想就是先从正着推,一定是先切掉最长的那块,这样之后都不会受影响;再反着来想,就是先合并最小的//#defineLOCAL#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#defineN20000using......
  • POJ2393(贪心)
    水题,comparecurrentstoringvalueandthepriceofthatday,ifcheaperthenassign,ifnotthenupdatethestorevalue.//#defineLOCAL#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;intmain(void){#ifd......