导弹发射

时间限制:1000 ms | 内存限制:65535 KB 
难度:4

描述

Alpha 机构研发出一种新型智能导弹,它能够在雷达检测到的区域内,选择一条前进的路径, 击破路径上所有的目标物。 雷达位于(0,0)处,它能够检测到两条射线之间的区域(不妨设在第一象限)。 导弹一开始置放在(0,0)处,它可以在雷达能检测到的区域内先选择一个目标物击破,然后 再继续前进,选择另一个目标物击破。注意,导弹不能沿着这两条射线前进,当然也不能停在原 地。 可以假设,导弹一旦发射,其能量无比大,前进的路径无限长。 已知雷达能够检测到区域,其射线 1:ax-by=0 和射线 2:cx-dy=0。Alpha 机构的总指挥希望 在发现目标群的第一时刻,计算出一条可以击破最多目标物的路径。 

输入

第一行: T 表示以下有 T 组测试数据(1≤T ≤8) 
对每组测试数据: 
第 1 行: n 表示目标物的个数 
第 2 行: a b c d 代表两条射线的斜率分别是 a/b 和 c/d。 
接下来有 n 行,每行 2 个正整数 xi yi 即第 i 个目标物的坐标。 
【约束条件】 
(1) n<=10^5 0<=a, b, c, d<=10^5 a 和 b 不会同时为 0,c 和 d 不会同时为 0; 
(2) 0<= xi , yi <=10^6 i=1,…..,n

输出

每组测试数据,输出占一行,即导弹能击破的最多目标数。

样例输入


15 
1 3 2 1 
3 1 
6 2 
4 2 
2 5 
4 5 
6 6 
3 4 
1 6 
2 1 
7 4 
9 3 
5 3 
1 3 
15 5 
12 4

样例输出

4

本题刚开始就想错方向了开始认为是只要把射线夹着的点提取出来再找最大递增子序列即可,但是后来才发现原来射线内部和射线平行的两点也不行,所以还要进行一个判断,当时想着这样每次判断太复杂,但是也没更好的方法,就上网搜了一下,发现可以以两条射线为坐标轴重新定义坐标轴即可

代码:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<string>
#define INF 0x3fffffff
#include<iostream>
#include<algorithm>
using namespace std;
struct zb
{double x,y;
}s[100005];
bool cmp(zb a,zb b)
{if(a.x==b.x)return a.y<b.y;elsereturn a.x<b.x;
}
int erf(zb a,zb b[],int la,int lb)//注意二分,不二分会时间超限
{int zd;while(la<=lb){zd=(la+lb)/2;if(a.y>b[zd].y)la=zd+1;elselb=zd-1;}return la;
}
int di(zb a[],int n)//求最长上升子序列
{int k=1;zb b[100005];b[0]=a[0];for(int i=1;i<n;i++){if(a[i].x>b[k-1].x&&a[i].y>b[k-1].y){b[k++]=a[i];}else{int mi=erf(a[i],b,0,k);b[mi]=a[i];}}return k;
}
int main()
{int N;scanf("%d",&N);while(N--){int m;int a,b,c,d;double s1;double s2;scanf("%d",&m);scanf("%d%d%d%d",&a,&b,&c,&d);s1=a*1.0/b;s2=c*1.0/d;if(s1>s2){double r;r=s1;s1=s2;s2=r;}int t=0;for(int i=0;i<m;i++){scanf("%d%d",&a,&b);double  ans=b*1.0/a;if(s1<ans&&s2>ans)//这个地方真的伤,开始是if(s1<b*1.0/a&&s2>b*1.0/a)总是错,还找不到错误,就找了网上代码,一点点改,都改的差不多一样了,还是错,最后发现就是这的问题,但不知道为啥,有大神可以帮忙解惑吗,求教
{s[t].x=a*1.0-b*1.0/s2;s[t].y=b*1.0-a*s1;t++;}}sort(s,s+t,cmp);int l=di(s,t);printf("%d\n",l);}
}

导弹发射-河南省第九届省赛D题相关推荐

  1. nyoj1273 河南省第九届省赛_宣传墙、状压DP+矩阵幂加速

    宣传墙 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 ALPHA 小镇风景美丽,道路整齐,干净,到此旅游的游客特别多.CBA 镇长准备在一条道路南 面 4*N 的墙上做 ...

  2. 蓝桥杯嵌入式STM32G431——第九届省赛真题电子定时器

    第九届省赛真题电子定时器 第九届省赛真题 主函数代码(不包含各模块初始化代码) 按键模块与LCD模块的逻辑图(仅供参考) 第九届省赛真题 主函数代码(不包含各模块初始化代码) #include &qu ...

  3. [蓝桥杯]2018年第九届省赛真题C/C++ B组 填空+大题

    第九届蓝桥杯省赛题目 填空A:第几天 填空B:明码 填空C:乘积尾零 填空 D: 测试次数(待学习) 填空 E:快速排序 大题F:递增三元组 大题G: 螺旋折线 大题H:日志统计 大题I-全球变暖 填 ...

  4. 蓝桥杯嵌入式-第九届省赛-电子定时器

    /*程序说明: 蓝桥杯大赛嵌入式-第九届省赛-电子定时器软件环境: Keil uVision 4.11 硬件环境: CT117E嵌入式竞赛板(代码兼容ILI932X系列.uc8230液晶控制器)日 期 ...

  5. 蓝桥杯嵌入式第十届省赛真题

    蓝桥杯嵌入式第十届省赛真题 文章目录 蓝桥杯嵌入式第十届省赛真题 1.题目分析 2.项目结构 2.1数组思路 2.2Key_Flag控制对应逻辑 2.3KEY控制操作 1.题目分析 总的来说这题考点特 ...

  6. 第九届蓝桥杯真题解析JavaC组

    第九届蓝桥杯真题解析JavaC组 文章目录 ***第九届蓝桥杯真题解析JavaC组*** 前言 A.哪天回家 B.猴子分香蕉 C.字母阵列 D.第几个幸运数 E.书号验证 F.打印大X G.缩位求和 ...

  7. 蓝桥杯嵌入式STM32G431——第七届省赛真题模拟液位检测告警系统

    第七届省赛真题模拟液位检测告警系统 第七届省赛真题 主函数部分的代码功能实现(不包含各模块初始化代码) 第七届省赛真题 主函数部分的代码功能实现(不包含各模块初始化代码) #include " ...

  8. ACM Sdut 2158 Hello World!(数学题,排序) (山东省ACM第一届省赛C题)

    ACM Sdut 2158 Hello World!(数学题,排序) (山东省ACM第一届省赛C题) 题目描述 We know thatIvan gives Saya three problems t ...

  9. 突击蓝桥杯嵌入式(六)——第十届省赛真题

    突击蓝桥杯嵌入式(六)--第十届省赛真题 一.题干 二.题目分析 考点1.ADC(没啥好说的) 占用引脚PB15(R37) 考点2:按键4个(PB0,PB1,PB2,PA0) 考点3:LCD,高亮 考 ...

最新文章

  1. poj 1740 A New Stone Game 博弈
  2. HTML属性——180226
  3. 构建根文件系统之启动第1个程序init
  4. 切换 uniapp_万能前端框架uni app初探03:底部导航开发
  5. Spring_02_AOP初级总结
  6. Linux开关命令(shutdown,reboot,halt,init)
  7. python实现knn分类_knn分类算法底层实现(python)
  8. 用java的socket来发送一个类
  9. Access 中数据库操作时提示from子句语法错误
  10. 最长公共子序列 (nyoj36) [动态规划]
  11. 操作系统原理(六)设备管理
  12. 拓端tecdat|R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化
  13. 小波包8层分解与重构MATLAB代码,谐波小波包分解与重构程序谁有呢?
  14. linux内核中的以太网phy芯片的驱动介绍:以lan8720和ip101作为对比
  15. 《Loy解说SpringCloud之Zuul》
  16. CIO:人工智能将改变企业IT
  17. vue模块给模块传参_Vue店面的Paypal支付模块
  18. 解决win10系统无法安装.Net framework3.5,安装Visual Studio 2010提示你的电脑上的应用需要使用以下Windows功能:.Net framework3.5(包括
  19. NBA得分后卫阅兵:科比榜首麦蒂第9 小AI获至高赞誉
  20. arduino使用oled代码_【教程】在ESP32上使用E32433T LoRa模块

热门文章

  1. 【STM32】时钟系统RCC
  2. 安卓期末大作业——琴社商店,sqlite增删改查
  3. deepin 下使用节能模式不降低屏幕亮度
  4. oracle灾备同步_【oracle灾备方案系列】基于DDS的Oracle复制容灾方案(三)
  5. 解决——U盘格式化为NTFs之后,显示不了U盘
  6. 期末前端web大作业:餐饮美食网站设计与实现——餐厅响应式网站制作html+css+javascript+jquery+bootstarp
  7. Mac上显示实时网速小工具
  8. AD18系统设置界面各层详解
  9. 笔记本光驱拆解——让整个世界变得安静
  10. openssl-genras命令简单入门