【16级第一周寒假作业B题】
来源:互联网 发布:手机ai软件下载 编辑:程序博客网 时间:2024/06/12 00:29
网址链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P1
二分强化——浮点数序列查询
TimeLimit:4000MS MemoryLimit:128MB
64-bit integer IO format:%I64d
Problem Description
已知在二维空间中有n个点,p0,p1……pn-1
已按照x为第一优先级,y为第二优先级从大到小排好序;
即若 pi<pj
则pi.x<pj.x,或者pi.x==pj.x&&pi.y<pj.y
Input
只有一组数据
第一行是两个整数n,m分别代表点的个数和查询次数
接下来n行,每行有二个带三位小数的浮点数x,y代表一个点的坐标
再接下来m行,每行的有4个数字x1,y1,x2,y2代表p1,p2且p1>=p2
其中n,m<=100000;
任意0<=x,y<10^6;
Output
输出n个点所有小于等于p1且大于等于p2的点的下标之和
SampleInput
6 4125.689 125.689125.689 125.688125.688 125.689125.688 125.689125.688 125.688125.688 125.688125.688 125.688 125.688 125.688125.688 125.689 125.688 125.688125.689 125.689 125.688 125.689125.688 125.689 125.688 125.689
SampleOutput
91465
思路:
1.这是一道二分题。为什么是二分?QAQ说实在没学二分之前甚至初学之时我也看不出这是二分题,很苦恼。。不过多做几次关于二分的题便也能辨认出来,毕竟呵呵人家问题就是这么问的(下标)。需要的请看链接:http://www.cnblogs.com/qswg/p/6251887.html
2.第一眼看这道题我就联想到了结构体,但事实上用结构体很麻烦的,而且还容易出错。根据题意,我们可以根据优先级把两个数的分别比较化为一个数的比较,即把第一个数的最小分度提到第二个数的最大分度之前,把两者合并为一个数。当然,在这之前要先把这两个带三位小数的浮点数化整,这又涉及另外一个问题——精度问题。(容易坑死人的问题,反正博主这菜鸡……T^T我放图,这是博主的大佬给的,很直观!)
3.其他好像也没有什么了,注意一下二分函数返回的下标值就好了。。
/**p1,p2的输入同pi*/long long k1=1e9,k2=1e3;for(i=0; i<n; i++){ scanf("%lf%lf",&x,&y); p[i]=(ll)(k2*x+0.0001)*k1+(ll)(k2*y+0.0001);}当然,1e9是浮点数,也会有精度缺失,最好写成1000000000。二分的代码段我就不给了,需要的请看思路1的链接。
0 0
- 【16级第一周寒假作业B题】
- 【16级第一周寒假作业H题】
- swpu2016级第一周寒假作业题解
- 寒假第一周
- 【16级第二周寒假作业A题】
- 第一周作业
- 第一周作业
- java第一周作业
- 操作系统 : 第一周作业
- 第一周作业
- 第一周作业
- Java第一周作业
- 第一周作业
- 第一周课外作业
- 算法第一周作业
- 算法第一周作业
- C++第一周作业
- 第一周作业
- 看过的觉得好的TED演讲(Update@0521)
- Android开发之Manifest.xml
- 烂泥:redis3.2.3安装与配置
- 2017.1.20【初中部 】普及组模拟赛C组 鸡腿の游戏 题解
- NOI 2015 品酒大会
- 【16级第一周寒假作业B题】
- ARM之时钟体系
- hdu 线段树 (矩形面积并+离散化+二分查找)
- 细说vue的过渡动画
- View分发机制
- (转)量化策略:Ricequant迎新年50篇干货分享
- 51 NOD 1091 线段的重叠
- OpenJudge 2989 糖果
- CodeForces 444C - DZY Loves Colors(线段树)