分离出文件名 路径 后缀

version  1

从右到左排序,每次都尽可能的选打击范围内最右边的点安装雷达(由于浮点,所以不要一棒子打死的判断是大是小,给出一个精度范围,一开始范围给打了就WA),拿这个雷达去覆盖其他点,最后雷达总数一定是最少的

/*
poj    1328
264K	16MS
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>

#define MAXN 1005

using namespace std;
struct node
{
	double x,y,pos;
	node()
	{
		x = y = pos =  -1.0;
	}
}per[MAXN];
int n;
double m;

bool cmp(node a,node b)
{
	return a.pos< b.pos;
}

bool init()
{
	bool flag = true;
	for(int i = 1;i <= n;i ++)
	{
		scanf("%lf %lf",&per[i].x , &per[i].y);
		if(per[i].y > m)
			flag = false;
		per[i].pos = per[i].x + sqrt(m * m - per[i].y * per[i].y);
	}
	if(!flag)
		return false;
	sort(per + 1 , per + n + 1 , cmp);
	return true;
}

int calc()
{
	int cnt = 0,id = 1;
	while(id <= n)
	{
		double now = per[id].pos;
		cnt ++;
		while(id <= n &&
			(fabs(per[id].x - now) * (per[id].x - now) + per[id].y * per[id].y - m * m) <= 0.001)
		{
			id ++;
		}
	}
	return cnt ;
}

int main()
{
	int cnt = 1;
	while(cin>>n>>m && (n || m))
	{
		if(!init())
		{
			printf("Case %d: -1\n",cnt);
			cnt ++;
			continue;
		}
		printf("Case %d: %d\n",cnt , calc());
		cnt ++;
	}
	return 0;
}

version  2

找到以每个岛为圆心的圆与x轴左右交点形成一个区间,按左端点关键字升序排序后,用右端点去覆盖之后的点(如果遇到更小的右端点应该把目前的点更新),遇到不能覆盖的就雷达数目+1

/*
poj     1328
272K	32MS
*/
#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>

#define MAXN 1005

using namespace std;

struct node
{
	double x,y,lp,rp;
	node()
	{
		x = y = lp = rp =  -1.0;
	}
}per[MAXN];
int n;
double m;

bool cmp(node a,node b)
{
	return a.lp < b.lp;
}

bool init()
{
	bool flag = true;
	for(int i = 1;i <= n;i ++)
	{
		scanf("%lf %lf",&per[i].x , &per[i].y);
		if(per[i].y > m)
			flag = false;
		per[i].lp = per[i].x - sqrt(m * m - per[i].y * per[i].y);
		per[i].rp = per[i].x + sqrt(m * m - per[i].y * per[i].y);
	}
	if(!flag)
		return false;
	sort(per + 1 , per + n + 1 , cmp);
	return true;
}

int calc()
{
	int cnt = 1,id = 1;
	bool mark[MAXN] = {false};
	double now = per[1].rp;
	for(int i = 1;i <= n;i ++)
	{
		if(per[i].rp < now)
			now = per[i].rp;
		if(per[i].lp > now)
		{
			cnt ++;
			now = per[i].rp;
		}
	}
	return cnt;
}

int main()
{
	int cnt = 1;
	while(cin>>n>>m && (n || m))
	{
		if(!init())
		{
			printf("Case %d: -1\n",cnt);
			cnt ++;
			continue;
		}
		printf("Case %d: %d\n",cnt , calc());
		cnt ++;
	}
	return 0;
}

分离出文件名 路径 后缀,布布扣,bubuko.com

时间: 2024-08-01 06:28:17

分离出文件名 路径 后缀的相关文章

c#根据绝对路径获取 带后缀文件名、后缀名、文件名

zz   C#根据绝对路径获取 带后缀文件名.后缀名.文件名 1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名. string str =" F:\test\Default.aspx";                string filename = System.IO.Path.GetFileName(str);//文件名 “Default.aspx”                string extension = System.IO.Path.GetExtension(

【.Net】C# 根据绝对路径获取 带后缀文件名、后缀名、文件名、不带文件名的文件路径

1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名. 1 string str =" F:\test\Default.aspx"; 2 string filename = System.IO.Path.GetFileName(str);//文件名 "Default.aspx" 3 string extension = System.IO.Path.GetExtension(str);//扩展名 ".aspx" 4 string fileNam

获取文件路径、文件名、后缀名

#########start 获取文件路径.文件名.后缀名############ from gevent import os def jwkj_get_filePath_fileName_fileExt(filename): (filepath,tempfilename) = os.path.split(filename); (shotname,extension) = os.path.splitext(tempfilename); return filepath,shotname,exten

快速获取url文件名和后缀名

安卓下载文件时,判断文件名和后缀一直比较麻烦,我们可以通过已知URL路径,自定义正则表达式获取下载文件的文件名和后缀名: 自定义mime type:String suffixes="avi|mpeg|3gp|mp3|mp4|wav"    //可以把所有的文件格式放进去 MIME  来源 String suffixes="avi|mpeg|3gp|mp3|mp4|wav|jpeg|gif|jpg|png|apk|exe|txt|html|htm|java|doc";

java开发中截取上传文件的文件名和后缀名

java开发中截取上传文件的文件名和后缀名 /** * Return the extension portion of the file's name . * * @see #getExtension */ public static String getExtension(File f) { return (f != null) ? getExtension(f.getName()) : ""; } public static String getExtension(String f

Android Java 与 C++ 调用过程中的常量,路径名、文件名、后缀名最大长度

/**************************************************************************** **************************************************************************** *** ***   This header was automatically generated from a Linux kernel header ***   of the same

批量化修改文件名及后缀

python小脚本文件,可自主输入某一文件夹,从而修改该文件夹下的文件名和后缀. 修改文件名:人工输入文件名文字部分,批量化由递增数字组成 修改后缀名:人工输入文件后缀,批量化全处理. 代码如下: # -*- coding: utf-8 -*- """ @author: yinggang zhang change the the file name in a dictionary """ import os def changelastname(

分析:淘宝为什么要分离出一个天猫出来

分析:淘宝为什么要分离出一个天猫出来组籽宗庄驻拙转资赘资资酌嘴谞桌分析:淘宝为什么要分离出一个天猫出来 http://www.songtaste.com/user/10249177/info http://www.songtaste.com/user/10249178/info http://www.songtaste.com/user/10249183/info http://www.songtaste.com/user/10249185/info http://www.songtaste.c

用LibRaw dump数码相机raw的参数,并分离出raw图像

libRaw中的unprocessed_raw程序可以将数码相机的raw图像转存为tiff图像.但是如果想知道更多的raw图像信息,并分离出不带tiff头的raw图像数据,则需要改造unprocessed_raw程序. ispforfun在unprocessed_raw中添加了相应的代码,改写出第一版的代码.分享给大家,如果有好的建议,欢迎大家一起讨论.ispforfun会根据大家的意见将好的建议实现在后续的版本中. 1 /* -*- C++ -*- 2 * File: unprocessed_