题目链接:uva 10691 - Subway
题目大意:给定n个点,要求建造尽量少得铁路(从原点发射出的射线),使得所有点到铁路的最短距离小于d。
解题思路:题目可以转化成区间选点问题,即以极角来表示铁轨,然后计算出每个区间可行的极角范围,进行区间选点。
注意:(1)如果点到原点的距离dis<=d的话,不进行考虑,也无法判断,因为没有说直角边大于等于斜边的。
(2)区间有可能在二三象限时重叠,我的处理方法是每次枚举起始点,进行n次选点问题。
(3)因为每次都将区间i的左右区间+2pi后放到最后,忘记考虑s[i].r+2pi 有可能小于 s[m-1].r的情况,所以一直WA。
处理,在初始化区间时,将右区间大于pi的统一左右区间减掉2pi。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
const int N = 205;
const int INF = 0x3f3f3f3f;
const double pi = acos(-1.0);
const double eps = 1e-9;
struct state {
double l, r;
}s[N*2];
int n, m;
double d;
bool cmp(const state& a, const state& b) {
return a.r - b.r < eps;
}
void init () {
double x, y, c, k;
m = 0;
scanf("%d%lf", &n, &d);
for (int i = 0; i < n; i++) {
scanf("%lf%lf", &x, &y);
c = atan2(y, x);
double dis = sqrt(x*x + y*y);
if (d >= dis) continue;
k = asin(d/dis);
s[m].l = c-k; s[m].r = c+k;
if (s[m].r > pi) {
s[m].l -= 2*pi;
s[m].r -= 2*pi;
}
m++;
}
sort(s, s + m, cmp);
for (int i = 0; i < m; i++) {
s[i+m].l = s[i].l + 2*pi;
s[i+m].r = s[i].r + 2*pi;
}
}
int del (state* f) {
int ans = 1;
double tmp = f[0].r;
for (int i = 1; i < m; i++) {
if (tmp - f[i].l > -eps) continue;
else {
tmp = f[i].r;
ans++;
}
}
return ans;
}
int solve () {
if (m == 0) return 0;
int ans = m;
for (int i = 0; i < m; i++) {
ans = min(del(s+i), ans);
}
return ans;
}
int main () {
int cas;
scanf("%d", &cas);
while (cas--) {
init();
printf("%d\n", solve());
}
return 0;
}
分享到:
相关推荐
app_subway_data数据库脚本文件
#A-subway-weixin_20150611
npm install --save mta-realtime-subway-departures :information: 用法 呼叫具有地铁综合体ID的client.departures() ,以获取离开该车站的下一个地铁出发点。 受支持的复合体在中定义。 const { createClient }...
Y2Mate.is - Smart Subway - Bluetooth AoA Locator Practical Application Case-sJPala1LPGA-1080p-1648179110395
纽约市最快的地铁 此资源库包含与我的项目“纽约市最快的地铁(每10秒钟更新一次)”相关的所有文件。与该项目相关的博客位于: : 该项目是2015年9月9日开放数据聚会期间公开演讲的对象: :
nyc-2020-地铁活动
地铁区间删除功能可以删除在路线上注册的车站。 删除终点后,下一个桩号即为终点。 如果路线上的站点少于两个,则无法删除站点。在地铁线上注册的车站搜索功能您可以按连接顺序从线路的上行链路端点到下行链路端点...
#分析纽约地铁数据集 今天,我们正在研究降雨的影响如何影响地铁的乘车人。 我从2011年5月起抽取了MTA纽约市地铁数据集的样本,其中包含每小时在地铁系统中按小时进入和驶出旋转门(UNIT)的时间。...
지하철 하철관하는하는하는하는하는。。。 :rocket: 기능요구사항초기설정 역로그램역로역를정를를리있다。 전사보정보로반드시기초정을기 1. 지하철역으로 교대역, 강남역, 역삼역, 남부터미널역, 양재역, 양재시민...
关键是您可以像在subway.rb york north做类似类似的subway.rb york north并且在接下来的几个时间里,您将获得York Street Northbound的地铁时间。 subway.rb可以与几个命令行选项一起使用,以便您可以指定:即将...
在此 Codelab 中,您将为 NYC Subway Station 数据集构建一个可视化,即: 可扩展- 您将使用 Google App Engine 自动扩展您的服务能力以匹配请求负载。 可维护- 您将使用 Go 编程语言使后端代码简单、可靠且高效。...
多伦多TTC地铁,用于 在Google Play上下载 屏幕截图 社会的 测试版计划 了解有关BETA计划的更多信息 执照 Apache版本2.0
Introduction中国所有已开通地铁城市的地铁数据,包含名称、拼音、站点等数据本数据来源为百度地图,使用了如下两个接口:格式说明本数据库内含三张表,分别为citys (中国已开通地铁城市)lines(对应城市的地铁线路,...
纽约市地铁旋转门数据从下载NYC地铁旋转门数据文件,并将其加载到数据库中仓促在2020年3月整合在一起,构建为Rails应用程序,但唯一的功能是下载文件并将其加载到称为turnstile_observations的Postgres表该存储库...
纽约地铁 纽约地铁谷歌地图/照片混搭(建立在 MEAN 堆栈上)
宁波地铁线路图 在线浏览: 宁波城建论坛: 宁波地铁线路建设计划 线路 状态 开通年份 1 号线一期 运营 2014 1 号线二期 运营 2016 2 号线一期 ...本工具用于将 SVG 地铁图转换为 JSON 数据用于本项目
地铁子弹 SVG图标基于当前纽约市MTA地铁线路。 一些注意事项 使用官方的MTA颜色。 笔记: SIR(史坦顿岛铁路)线没有正式颜色; 现在,它使用新的MTA网站上的最新颜色。... 计划中的T(第二大道)线没有正式颜色;...
纽约地铁数据一个Rails应用程序,用于从收集数据。 analysis/子文件夹中包含其他SQL和R分析脚本/指令。 用于支持该帖子的代码,该文章设置假设已经安装了Ruby,Rails和PostgreSQL 在注册MTA API密钥将.sample.env...
基于QuartusII环境下的地铁自动售票系统
Subway Svg Tools 本工具用于将 SVG 格式地铁线路图解析为 JSON 格式 图层命名设置 使用 Adobe Illustrator 图层名 类型 矢量类型 line 线路图 polyline station 普通车站 circle station-ex 换乘车站 rect text ...