// 题意 从1出发逛完N个点回到出发点 要在这N个点选择性建设加油站 车每次加满油最多可以行使D米
// 然后最少要花多少钱才能达到上述要求
// 注意到 第i个城市的花费是 2^(i-1) 所以 我就从N枚举到2
// 尽量让 i大的不建加油站 应为前i-1个加油站总费用都没有第i个加油站一个的费用多
// 难点是怎么判断一组方案的可行性
// 注意到 若i 不建加油站 那么必须存在某个加油站和他距离等于小于 (D+1)/2
// 这样对于每组方案进行搜索,看下是否每个点都是可以达到并可以回到起点的
//
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cmath>
using namespace std;
#define INF 100000000
bool mark[];
int dis[][];
int N,D;
double sq(double x1,double y1,double x2,double y2){
return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
}
bool visit[];
int ct;
void dfs(int u){// 判断有无解
visit[u]=true;
ct++;
for(int i=;i<=N;i++)
if(!visit[i]&&dis[u][i]<=D){
dfs(i);
}
}
void OK(int u,int lt){// 判断方案的可行性
if(mark[u]){
lt=D,visit[u]=true;
ct++;
}
else{
if(lt>=(D+)/) visit[u]=true,ct++;
else return;
}
for(int i=;i<=N;i++)
if(u!=i&&!visit[i]&&dis[u][i]<=lt)
OK(i,lt-dis[u][i]);
} int main(){ int rc[][];
int i,j;
while(scanf("%d %d",&N,&D)!=EOF){
for(i=;i<=N;i++) mark[i]=true;
for(i=;i<=N;i++)
scanf("%d %d",&rc[i][],&rc[i][]);
if(N==){printf("0\n");continue;}
for(i=;i<N;i++)
for(j=i+;j<=N;j++){
double t=sq(rc[i][],rc[i][],rc[j][],rc[j][]);
int ti=ceil(sqrt(t));
dis[i][j]=dis[j][i]=ti;
}
memset(visit,,sizeof(visit));
ct=;
dfs();
if(ct<N) {printf("-1\n");continue;}
for(i=N;i>;i--){ // 枚举方案
mark[i]=false;
ct=;
memset(visit,,sizeof(visit));
OK(,);
if(ct<N)
mark[i]=true;
}
for(i=N;i>;i--)if(mark[i]) break;
for(;i>;i--) if(mark[i])printf("");else printf("");
printf("\n");
}
return ;
}

hdu 4435 charge-station的更多相关文章

  1. HDU 4435 charge-station () bfs图论问题

    E - charge-station Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  2. HDU 4435 charge-station bfs图论问题

    E - charge-station Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  3. hdu 3879 Base Station 最大权闭合图

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3879 A famous mobile communication company is plannin ...

  4. HDU 3879 Base Station

    Base Station Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on HDU. Original I ...

  5. 【转载】【最短路Floyd+KM 最佳匹配】hdu 2448 Mining Station on the Sea

    Mining Station on the Sea Problem Description The ocean is a treasure house of resources and the dev ...

  6. HDU 3879 Base Station(最大权闭合子图)

    经典例题,好像说可以转化成maxflow(n,n+m),暂时只可以勉强理解maxflow(n+m,n+m)的做法. 题意:输入n个点,m条边的无向图.点权为负,边权为正,点权为代价,边权为获益,输出最 ...

  7. hdu 4435

    一道枚举+搜索题: 很容易看出这道题目要求尽量不在大的城市里面建加油站: 所以从最大的城市开始枚举! 代码: #include<cstdio> #include<cmath> ...

  8. HDU 4435 charge-station (并查集)

    先说下题目的意思: 在一个二维坐标系中有N个点,某人要来个走遍所有点的旅行,但是他的车每次加油后只能走M个单位距离:所以要在这个N点中选一些建立加油站:问题来了:i^th  点 建加油站的花费是  2 ...

  9. [DLX反复覆盖] hdu 3656 Fire station

    题意: N个点.再点上建M个消防站. 问消防站到每一个点的最大距离的最小是多少. 思路: DLX直接二分推断TLE了. 这时候一个非常巧妙的思路 我们求的距离一定是两个点之间的距离 因此我们把距离都求 ...

随机推荐

  1. cf 363A B C

    A水题 ~~  注意0输出 /************************************************************************* > Author ...

  2. Unity3d游戏中添加移动MM支付SDK问题处理

    原地址:http://www.tuicool.com/articles/I73QFb 由于移动mm的SDK将部分资源文件放在jar包中,导致Unity无法识别,提示failed to find res ...

  3. [转]Ubuntu alternate和desktop区别

    原文地址:http://blog.csdn.net/is2120/article/details/6797621 Desktop : 刻录在光盘,从光盘运行的系统,相当于 Live CD Altern ...

  4. Enum枚举 简单的使用

    在枚举中使用抽象方法 /** * 为枚举类定义一个抽象方法,<br/> * 这个抽象方法由不同的枚举值提供不同的实现 * * @author wangzhu * @date 2014-9- ...

  5. lintcode: search for a range 搜索区间

    题目 搜索区间 给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置. 如果目标值不在数组中,则返回[-1, -1] 样例 给出[5, 7, 7, 8, 8, 10]和目 ...

  6. SaaS系列介绍之十一: SaaS商业模式分析

    1 配置模式 中国企业很多是人治,管理弹性非常大,公司的政策经常变化,管理流程.业务变化也非常大,发展也非常快;一个公司今年是10个人,明年是100个人,后年可能是1000人.管理机制.方法处于经常变 ...

  7. SpingMVC中利用BindingResult将错误信息返回到页面中

    SpingMVC中利用BindingResult将错误信息返回到页面中. ActionFrom中: private String name; private String password; get( ...

  8. QC、IQC、IPQC、FQC、OQC

    品质政策为:全面品管.贯彻制度.提供客户需求的品质:全员参与.及时处理.以达成零缺点的目标. 品质三不政策为:不接受不良品.不制造不良品.不流出不良品. QC即英文QUALITY CONTROL的简称 ...

  9. java:访问权限

    访问权限四大类:权限从大->小 1.public:   公共权限 2.protected:  受保护权限 3.default: 包级别访问权限/默认权限 4.private:   私有权限 以p ...

  10. SQLite数据插入异常

    对比两条SQL语句 1.insert into MemberInfo(MTypeId,MName,MPhone,MMoney,MIsDelete) values(@tid,@name,@phone,@ ...