HDU4631+Set+最近点对
题意:一个空平面,每次增加一个点,
其坐标根据上一个点算出:(x[i-1] * Ax + Bx ) mod Cx,(y[i-1] * Ay + By ) mod Cy
求出现有点集中的最近点对的距离的平方,共增加n个点,求每次求得的平方的和
http://blog.csdn.net/liuledidai/article/details/9664031
/*
set+最近点对
每次对于一个新插入的点,找出x与之最近的,然后分别向两侧搜
题意:一个空平面,每次增加一个点,
其坐标根据上一个点算出:(x[i-1] * Ax + Bx ) mod Cx,(y[i-1] * Ay + By ) mod Cy
求出现有点集中的最近点对的距离的平方,共增加n个点,求每次求得的平方的和
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<math.h>
using namespace std;
typedef long long int64;
//typedef __int64 int64;
const int maxn = 5e5+;
const int64 inf = ;
const double pi=acos(-1.0);
const double eps = 1e-;
struct Node{
int64 x,y;
};
Node cur,nxt;
typedef pair<int64,int64> PII;
#define MP(a,b) make_pair((a),(b))
set< pair<int64,int64> > s;
int main(){
int T;
scanf("%d",&T);
while( T-- ){
int64 Ax,Bx,Cx,Ay,By,Cy;
int n;
scanf("%d%I64d%I64d%I64d%I64d%I64d%I64d",&n,&Ax,&Bx,&Cx,&Ay,&By,&Cy);
//scanf("%d%lld%lld%lld%lld%lld%lld",&n,&Ax,&Bx,&Cx,&Ay,&By,&Cy);
s.clear();
cur.x = cur.y = ;
nxt.x = (Ax*cur.x+Bx)%Cx;
nxt.y = (Ay*cur.y+By)%Cy;
cur = nxt;
s.insert( MP(cur.x,cur.y) );
n--;
int64 res,Min;
res = ;
Min = inf;
while( n-- ){
if( Min== ) break;
nxt.x = (Ax*cur.x+Bx)%Cx;
nxt.y = (Ay*cur.y+By)%Cy;
cur = nxt;
if( s.count(MP(cur.x,cur.y)) ) {
res += ;
break;
}
s.insert( MP(cur.x,cur.y) );
set<PII>::iterator it,tmp;
it = s.lower_bound( MP(cur.x,cur.y) );
for( tmp=it,tmp++;tmp!=s.end();tmp++ ){
int64 tx = (*tmp).first;
int64 ty = (*tmp).second;
if( (tx-cur.x)*(tx-cur.x)>=Min ) break;
else{
int64 Dis = (tx-cur.x)*(tx-cur.x)+(ty-cur.y)*(ty-cur.y);
Min = min( Min,Dis );
}
}
for( tmp=it,tmp--;it!=s.begin();tmp-- ){
int64 tx = (*tmp).first;
int64 ty = (*tmp).second;
if( (tx-cur.x)*(tx-cur.x)>=Min ) break;
else{
int64 Dis = (tx-cur.x)*(tx-cur.x)+(ty-cur.y)*(ty-cur.y);
Min = min( Min,Dis );
}
if( tmp==s.begin() ) break;
}
res += Min;
}
//printf("%lld\n",res);
printf("%I64d\n",res);
}
return ;
}
HDU4631+Set+最近点对的更多相关文章
- HDU-4631 Sad Love Story 平面最近点对
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4631 数据是随机的,没有极端数据,所以可以分段考虑,最小值是一个单调不增的函数,然后每次分治算平面最近 ...
- [hdu4631 Sad Love Story]最近点对,枚举
题意:S是平面内点的集合,初始为空,每次向集合里面加入一个点P(x,y),询问S内最近点对的距离的平方和 思路:设当前集合的答案为D,则找到集合里面横坐标在(x-√D,x+√D)内的数,用它们来更新答 ...
- ICP算法(Iterative Closest Point迭代最近点算法)
标签: 图像匹配ICP算法机器视觉 2015-12-01 21:09 2217人阅读 评论(0) 收藏 举报 分类: Computer Vision(27) 版权声明:本文为博主原创文章,未经博主允许 ...
- Quoit Design---hdu1007(最近点对问题 分治法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007 题意:给你n(2<=n<=10^6)个点的坐标,然后找到两个点使得他们之间的距离最小 ...
- 求空间内两条直线的最近距离以及最近点的坐标(C++)
关键词:空间几何 用途:总有地方会用到吧 文章类型:C++函数展示 @Author:VShawn(singlex@foxmail.com) @Date:2016-11-19 @Lab: CvLab20 ...
- HDU 1007Quoit Design(最近点问题)
最近点问题:二维平面中有n(n很大)个点,求出距离最近的两个点 思路:因为n的值很大,所以暴力和dp都行不通了吧!分治法就挺好的. 将区间一半一半的分开,直到分成只有一个点或两个点的时候! 对于只有两 ...
- 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索
第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...
- 计算几何 平面最近点对 nlogn分治算法 求平面中距离最近的两点
平面最近点对,即平面中距离最近的两点 分治算法: int SOLVE(int left,int right)//求解点集中区间[left,right]中的最近点对 { double ans; //an ...
- 2.11 2D平面最近点对问题[closest pair problem]
[本文链接] http://www.cnblogs.com/hellogiser/p/closest-pair-problem.html [题目] 给定平面上N个点的坐标,找出距离最近的两个点之间的距 ...
随机推荐
- (转)ASP.NET并发处理
对于DB服务器同样也可以调整最大连接数来做优化. 在调整优化好最大连接数之后,就只有软硬件负载均衡了.硬件负载均衡能够直接通过智能交换机实现,处理能力强,而且与系统无关,但是价格贵,配置困难,不能区分 ...
- [java学习笔记]java语言基础概述之内存的划分&堆和栈
1.内存的划分 1.寄存器 cpu处理 2.本地方法区 和所在系统相关 3.方法区 方法加载进内存,其实就是开辟了一块该方法的方法区 方法区中还可以有静态区,用于存放静态变量(类变量) 4.栈内存 5 ...
- 【Android】Android SDK在线更新镜像服务器
Android SDK在线更新镜像服务器 中国科学院开源协会镜像站地址: IPV4/IPV6: http://mirrors.opencas.cn 端口:80 IPV4/IPV6: http://mi ...
- php curl基本操作
如何使用cURL的基本方法?首先,修改php.ini文件的设置,找到php_curl.dll,取消下在的注释extension=php_curl.dll,因为php默认是不开启cURL的. cURL是 ...
- pyunit实现数据测试框架
PyUnit提供的动态方法,只编写一个测试类来完成对整个软件模块的测试,这样对象的初始化工作可以在setUp()方法中完成,而资源的释放则可以在tearDown()方法中完成. 使用PyUnit可以像 ...
- 在iframe结构中,如何使弹出层位于所有框架的上方(-)
在做后台管理页面的时候,经常用到iframe.虽说这东西有些过时,也不利于SEO,但是后台就是后台,不需要考虑那么多东西,综合来说,用iframe还是很适合后台管理界面的. 但是在遇到弹出层时,出现了 ...
- 1018. Public Bike Management (30)
时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue There is a public bike service i ...
- lazy instructor
Description A math instructor is too lazy to grade a question in the exam papers in which students a ...
- 查看某一个点是否在某个多边形内 使用ST_Contains函数
查看某一个点是否在某个多边形内 使用ST_Contains函数 --LINESTRING ( 121.312350 30.971457 , 121.156783 31.092221 , 121.35 ...
- MVC视图引擎
1.视图引擎:把视图解析成浏览器可执行的html代码 2.aspx视图: <%=表达式%>: <% C#代码段 %>: 3.razor视图: @(表达式):@ViewData[ ...