1. /*
  2. 题意:给定每个点在平面内的坐标,要求选出一些点,在这些点建立加油站,使得总花费最少(1号点必须建立加油站)。在i点建立加油站需要花费2^i。
  3. 建立加油站要求能使得汽车从1点开始走遍全图所有的点并回到1点,途中汽车加油次数不限,每个加油站的使用次数不限,
  4. 但是汽车油箱有上限d(加满油可以跑距离d)。
  5. 第i个点的费用=比i小的点的所有费用和+1;
  6. 所以从后向前判断,如果当前点不为加油站在这个点前面的所有都为加油站的话,判断是否成立
  7. 如果不能成立的话,这个点必选,否则不用必须选
  8. */
  9. #include<stdio.h>
  10. #include<string.h>
  11. #include<stdlib.h>
  12. #include<math.h>
  13. #include<queue>
  14. #include<algorithm>
  15. #include<iostream>
  16. using namespace std;
  17. #define eps 1e-10
  18. #define inf 0x3fffffff
  19. #define N 200
  20. int ma[N][N];
  21. struct node
  22. {
  23. double x,y;
  24. } f[N*N];
  25. int n,m;
  26. int distan(int i,int j)
  27. {
  28. return ceil(sqrt((f[i].x- f[j].x)*(f[i].x-f[j].x) + (f[i].y - f[j].y)*(f[i].y-f[j].y)));
  29. }
  30. int vis[N];
  31. int bfs(int x)
  32. {
  33. int i,k,viss[N],num=1;
  34. memset(viss,0,sizeof(viss));
  35. queue<int>q;
  36. q.push(1);
  37. viss[1]=1;
  38. while(!q.empty())
  39. {
  40. k=q.front();
  41. q.pop();
  42. for(i=2; i<=n; i++)
  43. {
  44. if(i==k||viss[i])continue;
  45. if(vis[i]==0&&ma[k][i]*2<=m)
  46. {
  47. num++;
  48. viss[i]=1;
  49. }
  50. if(vis[i]&&ma[k][i]<=m)
  51. {
  52. num++;
  53. viss[i]=1;
  54. q.push(i);
  55. }
  56. if(num==n)
  57. return 1;
  58. }
  59. }
  60. return 0;
  61. }
  62. int main()
  63. {
  64. int i,j,k;
  65. while(scanf("%d%d",&n,&m)!=EOF)
  66. {
  67. for(i=1; i<=n; i++)
  68. scanf("%lf%lf",&f[i].x,&f[i].y);
  69. for(i=1; i<=n-1; i++)
  70. for(j=i+1; j<=n; j++)
  71. {
  72. k=distan(i,j);
  73. ma[i][j]=ma[j][i]=k;
  74. }
  75. for(i=1; i<=n; i++)
  76. vis[i]=1;
  77. if(!bfs(n+1))
  78. {
  79. printf("-1\n");
  80. continue;
  81. }
  82. for(i=n; i>=2; i--)
  83. {
  84. vis[i]=0;
  85. if(!bfs(i))
  86. vis[i]=1;
  87. // printf("%d ",vis[i]);
  88. }
  89. i=n;
  90. while(vis[i]==0)
  91. i--;
  92. for(; i>=1; i--)
  93. {
  94. if(vis[i])
  95. printf("1");
  96. else
  97. printf("0");
  98. }
  99. printf("\n");
  100. }
  101. return 0;
  102. }

hdu 4435 bfs+贪心的更多相关文章

  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. UVA12130 Summits(BFS + 贪心)

    UVA12130 Summits(BFS + 贪心) 题目链接 题目大意: 给你一个h ∗ w 的矩阵,矩阵的每一个元素都有一个值,代表这个位置的高度. 题目要求你找出这个图中有多少个位置是峰值点.从 ...

  4. BFS+贪心 HDOJ 5335 Walk Out

    题目传送门 /* 题意:求从(1, 1)走到(n, m)的二进制路径值最小 BFS+贪心:按照标程的作法,首先BFS搜索所有相邻0的位置,直到1出现.接下去从最靠近终点的1开始, 每一次走一步,不走回 ...

  5. HDU-1072 Nightmare (bfs+贪心)

    Nightmare Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Sub ...

  6. hdu 4531 bfs(略难)

    题目链接:点我 第一次不太清楚怎么判重,现在懂了,等下次再做 /* *HDU 4531 *BFS *注意判重 */ #include <stdio.h> #include <stri ...

  7. Hdu 4864(Task 贪心)(Java实现)

    Hdu 4864(Task 贪心) 原题链接 题意:给定n台机器和m个任务,任务和机器都有工作时间值和工作等级值,一个机器只能执行一个任务,且执行任务的条件位机器的两个值都大于等于任务的值,每完成一个 ...

  8. D - 淡黄的长裙 HDU - 4221(贪心)

    D - 淡黄的长裙 HDU - 4221(贪心) James is almost mad! Currently, he was assigned a lot of works to do, so ma ...

  9. hdu 2037简单贪心--活动安排问题

    活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子.该问题要求高效地安排一系列争用某一公共资源的活动.贪心算法提供了一个简单.漂亮的方法使得尽可能多的活动 ...

随机推荐

  1. AngularJS入门 & 分页 & CRUD示例

    一.AngularJS 简介 ​ AngularJS  诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中. ...

  2. spring framework 第一章数据库管理(data access)

    spring data access 的网址:https://docs.spring.io/spring/docs/current/spring-framework-reference/index.h ...

  3. applicationContext.getBean(“loginEntity”)

    <!-- 指定Spring需要扫描的包,并将所有是别的类放到容器中,便于识别被注解的受托管bean --> <context:component-scan base-package= ...

  4. VUE 入坑系列 一 事件

    html代码 <div id="app"> <button v-on:click="counter += 1">加1</butto ...

  5. CentOS 6.4 php-fpm 添加service 添加平滑启动/重启

    nginx通过FastCGI运行PHP比Apache包含PHP环境有明显的优势,最近有消息称,PHP5.4将很有可能把PHP-FPM补丁包含在内核里,nginx服务器平台上运行PHP将更加轻松,下面我 ...

  6. (转)淘淘商城系列——使用maven tomcat插件启动聚合工程

    http://blog.csdn.net/yerenyuan_pku/article/details/72672389 上文我们一起学习了如何使用maven tomcat插件来启动web工程,本文我们 ...

  7. Seating Arrangement

    1997: Seating Arrangement Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 543     Solved:  ...

  8. zabbix基础安装

    环境依赖:LNMP或者LAMP 简介参考:http://blog.51cto.com/zhang789/1868880 一.准备 我安装的环境及其版本如下: 系统版本 CentOS Linux rel ...

  9. JavaSE-06 二维数组

    学习要点 二维数组的定义 二维数组内存数据结构 不规则二维数组 二维数组的定义 语法格式 格式一 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. ...

  10. ArrayList中removeAll和clear的区别(无区别)

    removeAll会直接调用此方法,传入list和false,因中间的逻辑都不会走(如果由retainAll方法调用,则会走这些逻辑判断),所以只需要看finaly中的最后一个if条件,w=0,通过循 ...