1275-导弹发射

  • 内存限制:64MB 时间限制:1000ms 特判: No
  • 通过数:22 提交数:116 难度: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

输出描述:

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

样例输入:

1
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

题目意思比较。。。不容易懂。。

前进,就是把两个射线看做x轴与y轴,每次必须x也增大y也增大。

那么就是一个lis

对于不在范围里面的点,直接忽略。

二分插入,找到第一个>=key的位置,然后插入。这里只要比node.y,因为x升序。

这个题还是比较绕思维的。。。口怕

#include<bits/stdc++.h>
using namespace std;
const int max_n=1e5+5;
int n;
struct no{double x,y;
}a[max_n];
bool operator<(const no &a,const no &b){if(a.x==b.x)return a.y<b.y;return a.x<b.x;
}
bool cmp(no a,no b){if(a.x<=b.x&&a.y<b.y) return 1;return 0;
}
double a1,b1,c1,d1;
no f[max_n];
//可以手写
/*int binary(int low,int high,int num){//最后一个小于的元素 return 第一个>=key的元素int mid;int re=0;while(low<=high){mid=(low+high)/2;if(a[num].y>f[mid].y) re=mid,low=mid+1;//y肯定越小越好else    high=mid-1;}return re+1;
}*/
int main(){int T;scanf("%d",&T);while(T--){scanf("%d",&n);scanf("%lf%lf%lf%lf",&a1,&b1,&c1,&d1);int p=0;for(int i=1;i<=n;i++) {double x,y;scanf("%lf%lf",&x,&y);if(y*d1<x*c1&&x*a1<y*b1){a[++p].x=(x-y*d1/c1)*c1/sqrt(c1*c1+d1*d1); //坐标转换a[p].y=(y-x*a1/b1)*b1/sqrt(a1*a1+b1*b1);}}sort(a+1,a+1+p);int pp=0;f[++pp]=a[1];for(int i=2;i<=p;i++){if(a[i].y>f[pp].y&&a[i].x>f[pp].x) f[++pp]=a[i];//这里不能有等于else{int idx=lower_bound(f+1,f+1+pp,a[i],cmp)-f;f[idx]=a[i];}}printf("%d\n",pp);}return 0;
}

还看到一种有树状数组求lis的。有意思

https://blog.csdn.net/lxt_Lucia/article/details/81206439

按照值的大小进行遍历,每次查询并更新最大值。

树状数组里保存的是以i结束的lis

nyoj 1275-导弹发射 //lis相关推荐

  1. nyoj 1275 导弹发射(河南省2016年省赛)

    导弹发射 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 Alpha 机构研发出一种新型智能导弹,它能够在雷达检测到的区域内,选择一条前进的路径,击破路径上所有的目标物. ...

  2. 河南省赛 导弹发射 lis

    导弹发射 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 Alpha 机构研发出一种新型智能导弹,它能够在雷达检测到的区域内,选择一条前进的路径, 击破路径上所有的目标物 ...

  3. NYOJ_1275 导弹发射 【LIS】

    导弹发射 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 Alpha 机构研发出一种新型智能导弹,它能够在雷达检测到的区域内,选择一条前进的路径, 击破路径上所有的目标物 ...

  4. 第九届河南省ACM省赛 D 导弹发射

    D 导弹发射 Description Alpha 机构研发出一种新型智能导弹,它能够在雷达检测到的区域内,选择一条前进的路径, 击破路径上所有的目标物. 雷达位于(0,0)处,它能够检测到两条射线之间 ...

  5. UVa 10051 Tower of Cubes(类似LIS)

    题意: 一些重量递增而且各个面都有颜色的立方体,要将这些立方体堆成一个塔,要求两个接触面同色,而且下面的立方体更重.求塔的最大高度. 思路: 用求LIS的思想,无非是多了几个状态.dp[i][j]表示 ...

  6. 1045 Favorite Color Stripe(LIS解法)

    解题思路 本题属于Longest Increasing Sequence最长不下降子序列,但是要注意,LIS当中不会有无效的元素,而本题是有的,所以先要把无效元素过滤掉,才能转化成为LIS问题. 这里 ...

  7. LIS ZOJ - 4028

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4028 memset超时 这题竟然是一个差分约束 好吧呢 对于每一个a[i] ...

  8. 【hdu】4521 小明序列【LIS变种】【间隔至少为d】

    题目链接:https://vjudge.net/contest/228455#problem/B 转载于:https://blog.csdn.net/a709743744/article/detail ...

  9. HDU 1257 - 最少拦截系统 ( LIS / 贪心 )

    题目 现在有一种拦截系统,第一发拦截可以是任意高度,但是之后的拦截高度不能比上次高.为了拦截下所有的炮弹,最少需要准备几套拦截系统? 思路 可能是语文没学好吧,一开始被题意卡了一下.(而且题目连数据范 ...

最新文章

  1. 热点:3个故事概览突飞猛进的肠道病毒组研究
  2. 【数据中台】关于数据中台系统,需要了解哪些技术?
  3. AI基础:一文看懂BERT
  4. 详细透彻的分析DM9000网卡驱动程序(3)
  5. win7 能下node什么版本_微软从未公开的win10版本,3GB+极度精简,老爷机有救了
  6. 说干就干的p2psearcher2013
  7. 掌握鸿蒙轻内核静态内存的使用,从源码分析开始
  8. PHP学习笔记--015 PHP 随笔
  9. 【Uva 1633】Dyslexic Gollum
  10. 模拟退火算法(simulated annealing algorithm)求极值
  11. Pytorch - Tips
  12. Dorado7 notify非alert 输入框prompt confirm layer dialoger,layer.msg,toast效果,几秒关闭layer.load layer.open
  13. UnityShader学习笔记:Caustic水纹焦散与鱼群制作水族馆
  14. php.ini afm,nanoscope analysis(AFM数据处理软件) v1.5 官方安装免费版(附安装教程)
  15. [从头学数学] 第189节 常用逻辑用语
  16. 《C语言及程序设计初步》网络课程主页
  17. [RK3399][Android7.1] 调试笔记 --- RTC读取时间失败
  18. 基于HANA数据库的BW4HANA
  19. 20k+招聘要求(截图自boss直聘)
  20. 华为政企云副总裁 年薪_5年经历3家公司跳槽到华为,年薪从17万到75万,网友说一般...

热门文章

  1. html根据地点名称查坐标,根据地址查询经纬度Js
  2. 一个 R 包带你挖掘宏基因组公共数据库
  3. 设位于第一象限的曲线y=f(x)上的任一点P(x,y)的切线在x轴上的截距等于该点发现在y轴上截距的相反数,且曲线经过(1,0),求该曲线
  4. 【css】css动画实现的3种方式
  5. 【HTML5】基础教程
  6. 疫情地图网页版代码实例
  7. 微信小程序实现图片文字识别提取
  8. 1.1.3 操作系统的发展与分类(手工操作阶段、批处理阶段、分时操作系统、实时操作系统、其它操作系统)
  9. 广工数据结构课设——校园导游咨询(C语言)
  10. lisp画弯箭头_在cad中直接画箭头