题目描述

魔法炮来到了帝都,除了吃特色菜之外,还准备去尝一尝著名的北京烤鸭。帝都一共有n(1<=1<=100)个烤鸭店,可以看成是二维平面内的点。不过由于魔法炮在吃烤鸭之前没有带钱,所以吃完烤鸭之后只能留下刷盘子。刷完盘子之后,魔法炮除了不用付饭费之外,老板还会奖励他d(1<=d<=10000)元钱。魔法炮是一个特么喜欢吃烤鸭的孩子,所以在去过一家烤鸭店之后,魔法炮还准备去其他的烤鸭店。但是由于帝都路费较贵,每单位长度需要花费1元钱,所以魔法炮可能去不了所有其他的烤鸭店。在到达下一家烤鸭店之前,魔法炮会花掉手里所有钱,以便于下一次接着吃霸王餐。另外,魔法炮对于自己刷过盘子的烤鸭店有着特殊的感情,所以他要求在某一家烤鸭店吃完烤鸭后,可以到达全部已经吃过去过的烤鸭店。那么问题来了,魔法炮想知道自己最多能去多少家烤鸭店,以及这些烤鸭店都是哪些。你能帮帮他吗?

题目大意:给定平面内的n个点,选出一个点集S,使得S里的所有点两两之间欧几里得距离不超过d,问|S|的最大值以及S里的点都有哪些。若答案有多种,输出任意一个。
第一行两个整数n和d,分别表示烤鸭店数和老板给魔法炮的路费。

输入

接下来n行,每行两个整数x,y,表示n个烤鸭店的坐标。

输出

第一行一个数m,表示魔法炮最多能去多少家烤鸭店。

第二行m个数,每个数表示魔法炮能去的烤鸭店标号。

样例输入

4 1
0 0
0 1
1 0
1 1

样例输出

2
1 2


题解

随机化

题意即求最大团,然而最大团是NPC问题。

对于这道题来说,可以使用随机化算法:

首先想一个错误的贪心算法:对于每个点,能够加入答案集合中就加入,否则不加人。

如果我们把这个序列进行大量的随机排序,然后跑贪心算法,当进行次数较多时即可近似得到最优解。

给序列随机排序可以使用algorithm中的random_shuffle函数,使用方法和sort函数方法相同。

由于本题点在二维平面上的特性,所以随机次数不需要特别多,大概n^2次即可。

#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 110
using namespace std;
int n , x[N] , y[N] , a[N] , map[N][N] , sta[N] , tot , ans[N] , sum;
void cal()
{int i , j;tot = 0;for(i = 1 ; i <= n ; i ++ ){for(j = 1 ; j <= tot ; j ++ )if(!map[a[i]][sta[j]])break;if(j > tot) sta[++tot] = a[i];}if(tot > sum){sum = tot;for(i = 1 ; i <= tot ; i ++ ) ans[i] = sta[i];}
}
int main()
{int d , i , j;scanf("%d%d" , &n , &d);for(i = 1 ; i <= n ; i ++ ) scanf("%d%d" , &x[i] , &y[i]) , a[i] = i;for(i = 1 ; i <= n ; i ++ )for(j = 1 ; j <= n ; j ++ )if((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]) <= d * d)map[i][j] = 1;for(i = 1 ; i <= n * n ; i ++ )random_shuffle(a + 1 , a + n + 1) , cal();printf("%d\n" , sum);for(i = 1 ; i <= sum ; i ++ ) printf("%d " , ans[i]);printf("\n");return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/7245828.html

【bzoj4080】[Wf2014]Sensor Network 随机化相关推荐

  1. Gym 101221I [WF2014]Sensor Network (二分图匹配)

    题目链接 https://codeforces.com/gym/101221/ 题解 又是一道看了题解的作业题. 这是一个最大团(或者补图上的最大独立集)问题,而二分图最大独立集是可以做的,因此可以考 ...

  2. 2016级移动应用开发在线测试13-Location、Sensor Network

    有趣有内涵的文章第一时间送达! 喝酒I创作I分享 生活中总有些东西值得分享 @醉翁猫咪  1. 充分利用智能手机的GPS定位信息,创造了O2O的商业模式,打通了线上与线下的信息流和商流,极大地推动了移 ...

  3. 【 Notes 】RSSI,LOS versus NLOS,Positioning, Mobility, and Tracking,Network Localization

    目录 RSSI LOS versus NLOS Positioning, Mobility, and Tracking Network Localization RSSI received signa ...

  4. Method for Discovering Network Topology中文翻译【Z-Stack Home 1.2.0开发文档】

    1.Purpose 本文描述了在任何给定的网络测定网路技术的方法,使用Z-Stack的 ZDO(Zigbee Device Object)层的API.在继续之前请先阅读ZStack Developer ...

  5. 【时序异常检测翻译】3.A Deep Neural Network for Unsupervised Anomaly Detection and Diagnosis in Multivariate T

    多元时间序列数据无监督异常检测与诊断的深层神经网络 摘要 如今,多变量时间序列数据越来越多地被收集到各种现实世界的系统中,例如发电厂.可穿戴设备等.多变量时间序列中的异常检测和诊断指的是识别特定时间步 ...

  6. HEED: A Hybrid, Energy-Efficient, Distributed Clustering Approach for Ad Hoc Sensor Networks

    文章目录 一.理论基础 二.分簇过程 三.MATLAB程序实现 四.参考文献 一.理论基础 针对大规模分布式的传感器网络,节点通过一跳直接与基站通信是不现实的,为此,Younis(2004)等人提出了 ...

  7. 无线传感网课后习题(书本名称无线传感器网络基础 : 理论和实践 : Fundamentals of wireless sensor networks : theory and practice)二

    7.4 Describe a WSN application for each of the following categories: time-driven, eventdriven, and q ...

  8. 亚洲首获奖!清华大学团队获ACM SIGCOMM 2021唯一最佳学生论文奖

    来源:清华大学 编辑:Priscilla 好困 [导读]近日,全球网络通信顶会ACM SIGCOMM 2021公布了获奖名单,清华大学信息学院刘云浩.李振华团队研究影响蜂窝网络可靠性的软硬件及人类行为 ...

  9. 东华计算机学院常珊,常姗 - 东华大学 - 计算机科学与技术学院

    近期论文 查看导师最新文章 (温馨提示:请注意重名现象,建议点开原文通过作者单位确认) 近几年的论著: 1. Shan Chang, Chao Li, Hongzi Zhu, Hang Chen, & ...

最新文章

  1. Josh Frank:XRP是有史以来第三大倒闭事件
  2. 计算机招聘网站排名,2014年互联网名企招聘人数的高校
  3. 智慧城市java开发_智慧城市主界面开发 使用eclipse开发智慧城市APP源码 - 下载 - 搜珍网...
  4. python socket thread,python实现socket+threading处理多连接的方法
  5. [WebView五学习]:调试Web Apps
  6. 揭示行业返修机背后的深层次问题
  7. PMP培训班备考资料分享
  8. Mac M系列电脑 模拟器运行时 pods库 YYkit库报错
  9. 环境土壤物理模型HYDRUS1D/2D/3D实践技术
  10. 「首席看点」也许敏捷就是问题所在
  11. 【离散数学】陪集精讲
  12. Linux入门居然只要会看就行!!!
  13. 油溶性球形金纳米颗粒,CAS7440-57-5
  14. 超全面,带你了解UI设计全流程!
  15. element-ui表格求和求平均数
  16. ARCGIS对谷歌影像进行投影转换、影像拉伸纠偏处理及倾斜摄影纠偏
  17. App 用户新体验——Agora Native SDK 3.4.0
  18. 关于HDMI与WIFI接口冲突的问题记录
  19. 算法实现---EAN13码校验位
  20. FreeFileSync 同步自动备份RealTimeSync(自动同步工具)

热门文章

  1. gRPC的那些事 - streaming
  2. android permission权限与安全机制解析(上)
  3. JZOJ 5489. 【清华集训2017模拟11.28】海明距离
  4. sqlserver 储存过程 批量更新_大白菜怎么储存过冬,好吃还不烂?掌握方法,其实很简单...
  5. python序列化模块struct_python的struct模块
  6. 每个java 初学者都应该明白的
  7. 到底什么是云计算-转自http://blog.csdn.net/adwu73
  8. 非常好用的一些软件和网站
  9. TensorRT学习笔记2 - 基础知识
  10. hdu5384(AC自动机+纪录重复单词出现的次数)