这次小编给大家整理了pojSquares(n个点求正方形个数),本文共7篇,供大家阅读参考,也相信能帮助到您。

篇1:pojSquares(n个点求正方形个数)

SquaresTime Limit:3500MSMemory Limit:65536KTotal Submissions:16615Accepted:6320

Description

A square is a 4-sided polygon whose sides have equal length and adjacent sides form. 90-degree angles. It is also a polygon such that rotating about its centre by 90 degrees gives the same polygon. It is not the only polygon with the latter property, however, as a regular octagon also has this property.

So we all know what a square looks like, but can we find all possible squares that can be formed from a set of stars in a night sky? To make the problem easier, we will assume that the night sky is a 2-dimensional plane, and each star is specified by its x and y coordinates.

Input

The input consists of a number of test cases. Each test case starts with the integer n (1<= n<= 1000) indicating the number of points to follow. Each of the next n lines specify the x and y coordinates (two integers) of each point. You may assume that the points are distinct and the magnitudes of the coordinates are less than 0. The input is terminated when n = 0.

Output

For each test case, print on a line the number of squares one can form. from the given stars.

Sample Input

41 00 11 10 090 01 02 00 21 22 20 11 12 14-2 53 70 05 20

Sample Output

161

给出n个点,求出有可以组成多少个正方形?

枚举对角的两个点,然后求解出其他的两个点,将这两个点带入到n个点中查找,可以hash 或 二分,

poj2002Squares(n个点求正方形个数)

已知对角线的点 (x1,y1) (x3,y3) 求出中点( (x1+x3)/2 , (y1+y3)/2 ) ->(X,Y) 用对角线的一个点减去中点得到(x,y),那么其他的两个点就是( x1-Y,y1+X ) (x1+Y,y1-X)

#include#include#include #include#includeusing namespace std ;#define eqs 1e-9struct node{ double x , y ;}p[1100] ;bool cmp(node a,node b){ return ( a.x< b.x || ( a.x == b.x && a.y< b.y ) ) ;}bool judge(double x,double y,int n){ int low = 0 , mid , high = n-1 ; while( low<= high ) { mid = (low + high) / 2 ; if( fabs(p[mid].x-x)< eqs && fabs(p[mid].y-y)< eqs )return true ; else if( p[mid].x-x >eqs || ( fabs(p[mid].x-x)< eqs && p[mid].y-y >eqs ) )high = mid - 1 ; elselow = mid + 1 ; } return false ;}int main{ int n , i , j , num ; double x , y , xx , yy ; while( scanf(“%d”, &n) && n ) { num = 0 ; for(i = 0 ; i< n ; i++) {scanf(“%lf %lf”, &p[i].x, &p[i].y) ; } sort(p,p+n,cmp) ; for(i = 0 ; i< n ; i++) {for(j = i+1 ; j< n ; j++){ if( i == j ) continue ; x = (p[i].x+p[j].x)/2 ; y = (p[i].y+p[j].y)/2 ; xx = p[i].x - x ; yy = p[i].y - y ; if( judge(x+yy,y-xx,n) && judge(x-yy,y+xx,n) ) { //printf(“(%.1lf,%.1lf) (%.1lf,%.1lf) (%.1lf,%.1lf) (%.1lf,%.1lf)\n”, p[i].x, p[i].y , p[j].x, p[j].y,x+yy,y-xx,x-yy,y+xx ) ; num++ ; }} } printf(“%d\n”, num/2) ; } return 0;}

篇2:求n维空间点的距离(改进版)

代码如下:

#include#include#include#includeusing namespace std;int main(){ double distance(int dime,double x1,double y1,double x2=0,double y2=0,double x3=0,double y3=0,double x4=0,double y4=0); int dime; double x1,y1,x2,y2,x3,y3,x4,y4,d; cout<>x1>>y1; d = distance(dime,x1,y1); cout<>x1>>y1>>x2>>y2; d = distance(dime,x1,y1,x2,y2); cout<>x1>>y1>>x2>>y2>>x3>>y3; d = distance(dime,x1,y1,x2,y2,x3,y3); cout<>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4; d = distance(dime,x1,y1,x2,y2,x3,y3,x4,y4); cout<运行结果:

之前的代码:

现在的代码:

由于(应该是出题的老师出得有问题)这个题目在OJ上始终无法成功完成,我就把题目和自己写的代码发给了我们上课的贺老师,贺老师也没办法解决无法提交的问题,但他把我写的代码优化了一番,于是便有了这篇博文,

求n维空间点的距离(改进版)

,之前并不是没有想过利用数组的界限,但因为当时觉得变量数目比较小,就没有多花心思去编写,,,现在想想,如果是20维怎么办?还有很长很长的路要走啊。

篇3:n个点能连多少条线段

线段(segment),技术制图中的一般规定术语,是指一个或一个以上不同线素组成一段连续的或不连续的图线,如实线的线段或由“长划、短间隔、点、短间隔、点、短间隔”组成的双点长划线的线段。

用直尺把两点连接起来,就得到一条线段。线段长就是这两点间的距离。

连接两点间线段的长度叫做这两点间的'距离(distance)。

线段用表示它两个端点的字母A、B或一个小写字母表示,有时这些字母也表示线段长度,记作线段AB或线段BA,线段a。其中A、B表示线段的的两个端点。

如果点与点之间没有间隔,那么点又不能说有长度,也就是它们都是孤立的,线段的长度也无从得出;如果点与点之间有间隔,那么是否可以在两个有间隔的点之间再插入一个点?如果有间隔,那么它们之间能插入几个点?

正确的说法是,线段是有无限个点组成的,线段的长度,跟点有无长度没有关系。两个不同尺度的数值,不能直接简单外推。有限和无限情况也不能简单外推。详细的讨论是高等数学的内容。

还有一种说法就是用运动的观点解释:线段是点的运动轨迹。不过,现实生活中,人们早已默认“线段是由无数个点组成的”这一说法。

篇4:分治法 求 逆序对数 的个数 时间复杂度为O(n*logn)

思路:

分治法 归并排序的过程中,有一步是从左右两个数组中,每次都取出小的那个元素放到tmp[]数组中

右边的数组其实就是原数组中位于右侧的元素,当不取左侧的元素而取右侧的元素时,说明左侧剩下的元素均比右侧的第一个元素大,即均能构成一个逆序对。假设现在左侧剩余n个元素,则逆序对数+n。

另外,如果当所有右侧的元素都取完,但是左侧仍然有元素剩余时,左侧剩余的元素已经在之前的运算中加到了逆序对中,不需要再添加一次

下面给出 归并排序 和 求逆序对数 两份代码:

code1:

归并排序

#include#include#includeusing namespace std;int n;int a[20];void query(int a[], int first, int mid, int last, int tmp[]){ int i = first, j = mid+1; int k = 0; while(i <= mid && j <= last){ if(a[i] < a[j]) tmp[k++] = a[i++]; else tmp[k++] = a[j++]; } while(i <= mid){ tmp[k++] = a[i++]; } while(j <= last){ tmp[k++] = a[j++]; } for(int id = 0; id < k; id++){ a[first + id] = tmp[id]; }}void merge_sort(int* a, int L, int R, int* tmp){ if(L < R){ int M = L + (R-L)/2; merge_sort(a,L,M,tmp); merge_sort(a,M+1,R,tmp); query(a,L,M,R,tmp); }}int main{ scanf(“%d”,&n); for(int i = 0; i < n; i++){ scanf(“%d”,&a[i]); } int tmp[20]; merge_sort(a,0,n-1,tmp); for(int i = 0; i < n; i++){ printf(“%d ”,a[i]); } printf(“\n”); return 0;}

code2:

求逆序对数:

cnt 表示逆序对数的个数

#include#include#includeusing namespace std;int n;int a[20];int cnt;void query(int a[], int first, int mid, int last, int tmp[]){ int i = first, j = mid+1; int k = 0; while(i <= mid && j <= last){ if(a[i] <= a[j]) tmp[k++] = a[i++]; else{tmp[k++] = a[j++];cnt += mid-i+1; } } while(i <= mid){ tmp[k++] = a[i++]; } while(j <= last){ tmp[k++] = a[j++]; } for(int id = 0; id < k; id++){ a[first + id] = tmp[id]; }}void merge_sort(int* a, int L, int R, int* tmp){ if(L < R){ int M = L + (R-L)/2; merge_sort(a,L,M,tmp); merge_sort(a,M+1,R,tmp); query(a,L,M,R,tmp); }}int main(){ scanf(“%d”,&n); for(int i = 0; i < n; i++){ scanf(“%d”,&a[i]); } int tmp[20]; cnt = 0; merge_sort(a,0,n-1,tmp); for(int i = 0; i < n; i++){ printf(“%d ”,a[i]); } printf(“cnt = %d\n”,cnt); printf(“\n”); return 0;}

LRJ给的代码不好理解....

篇5:志愿准备的N个细节之三――关注地方政策的四大关键点

志愿准备的N个细节(之三)――关注地方政策的四大关键点

志愿准备的N个细节(之三)――关注地方政策的四大关键点

在志愿的准备阶段,我们除了要深入地了解自己外,还得要读懂与志愿填报息息相关的当地省级招办制定的相关政策。这是志愿填报的依据,稍有不慎,就可能让志愿很“受伤”。

四川李振东

作者简介:李振东,《高校招生》采编部主任。

志愿填报,要提前打准备仗的内容很多,其中很重要的一项就是了解与高考志愿相关的本地政策。稍有不慎,我们就可能由于对政策的不知或知之甚少让志愿受伤。每年招生录取中都会出现些失败的“伤者”,这就是很好的证明。

在关注地方政策中,笔者觉得主要关注志愿填报模式、志愿填报时间、加降分条件等几个大的方面。这里,就对这些值得关注的细节一―给广大考生和家长做―梳理。

填报模式很关键

志愿的成功与否,很大程度上要取决于对不同的志愿填报模式,是否采用了不同的正确的志愿填报方法。在目前,高考志愿大致有以下几种模式:一是传统的顺序志愿,即我们熟知的梯度志愿模式;二是完全意义上的平行志愿,即各个批次都实行平行志愿模式;三是不完全平行模式,即只在某一两个批次采取平行模式,而其他批次采取顺序志愿或顺序志愿和平行志愿相结合的模式。

具体采取哪种模式,不同的省份可能不一样。即使是同一种模式各省份也可能有细微的不同,如完全平行志愿的省份,在大学或专业志愿的.设置数量上可能不一样,有的平行志愿大学数有4个,有的有5个,有的甚至更多。这样,考生在学校的选择范围和排序上就有不同的考虑办法。

而对于那些实行不完全平行模式的省份,考生和家长就要特别小心了。,某省在本科一批中实行平行志愿,但在本科二批实行一个第一志愿和四个平行的二志愿。但一考生家长在志愿填报时只注意到本省实行平行志愿,以为所有批次都是平行模式,于是在本科二批志愿填报中就完全按平行志愿“冲一冲、稳一稳、保一保”的方法报考了5所大学。本科二批录取结束后,考生成绩达到了本科二批中除第一志愿学校外几所学校的分数,但却没被录取。家长很不解,于是来到录取现场信访组进行询问。工作人员了解到这一情况后,对该考生的志愿和投档轨迹进行了查询,确如家长所说,考生档案一直没投出去。原因是考生成绩未上本科二批第一志愿学校调档线,虽然成绩上了第二平行志愿4所学校的调档线,但这几所学校第一志愿已经录取满额,不再接收二志愿考生。“不是实行平行志愿吗?成绩上了调档线怎么档案投不出去?”家长还是没明白。工作人员一听,明白了,原来是家长把本科二批也当作完全平行志愿填报了!

这就是对当地志愿模式了解不深或不够全面而导致的志愿失误。所以,我们说,要报好我们的志愿,首先就要对志愿填报模式进行了解、熟悉,有时还要深入研究。这是志愿准备的最基础工作,而这些信息各省份都要通过相关渠道对考生和家长进行宣传。

填报时间很重要

说起志愿填报时间的重要性,相信很多考生和家长觉得不以为然,怎么可能不注意呢?但恰恰每年就有一部分考生错过最后期限,而无法填报志愿。(教学论文 )为什么这里要强调时间概念?这也像我们高考每科考试从几点开始到几点结束、结束后就不再作答一样,我们的志愿填报时间各地也会有相应的限定,如果错过了,一般就不再补报。特别是现在基本都实行网上志愿填报,一旦时间到,网页就关闭,志愿也就无法再进行填报。

志愿填报时间有几点需要考生留意。

一是是否各批次志愿填报时间相同。现在,除了部分省份实行本科和专科一次性填报外,更多省份实行本科和专科分段填报,就拿在考前填报志愿的北京和上海两地来说,本科在考前填报,而专科的时间都安排在考后。有的虽然都在高考后,但批次不同,时间也不一样,如安徽省高考志愿填报时间分三个时间段:文理科提前批次、自主选拔录取的院校和艺术、体育类院校为6月26~27日;文理科第一、二批本科院校为7月2~4日;文理科第三批本科、高职(专科)院校为7月29日至8月1日。有的省份则更多,几乎每个批次填报时间都不同,如海南省20志愿填报时间从本科提前批、一本、二本、三本、专科提前批到专科批,共6个批次的志愿填报时间都不同。

二是相同省份不同地区考生的志愿填报时间也可能不一样。年,某省对高考志愿填报时间这样规定:高考志愿安排在通知考生成绩之后、6月30日前填报…一具体时间由各市州招委确定并公布。还有省这样表述:填报志愿的时间安排在文化高考结束后、通知高考成绩之前进行,具体时间由各市招办确定。从这两省规定说明,考生志愿填报时间既要在本省(区、市)规定的时间内,又要在考生所在地市级招办规定的时间之内完成。而各市级招办志愿填报时间,由于考生人数多与少等原因,有的地方结束得早,有的地方结束得晚。而这些就要看考生所在地招办的政策而定了。

三是征集志愿时间。由于一些学校在一些省(区、市)某批次录取结束后,还未完成招生计划,当地省级招办一般会采取征集志愿的办法来帮助这些院校录取满额。这之中,也会有一个志愿填报时间段。对那些上了某批次控制线而未被录取的考生来说,这个时间显得尤其重要,如果提前了解征集志愿的时间并做好志愿征集的准备,就有可能得到第二次的机会。

加分条件要读透

加分,是近几年社会关注的热点之一,各地也逐渐对加分条件严格把控,而且对享受加分资格的考生也是层层审核。所以,对能享受加分的考生来说,机会何其珍贵。此时,对享受者来说就更应该好好珍惜,争取用好属于自己的每一分,千万别因为对加分政策不了解或了解不透,而浪费自己的加分。

加分可以分两个层次,一是教育部规定针对各大高校都适用的加分项目,二是一些省(区、市)针对适用于本地高校的加分政策。这之中,适用于本地高校加分政策对更多考生具有吸引力,但这些政策往往对享受者设置了前提条件,需要考生和家长多仔细研读。

例如,2011年,四川对第一志愿报考四川省地方属农、林院校农、林专业的考生,规定可加10分。短短的一句话,我们如果稍加分析,就会得出考生至少需要达到五个“必须”的条件才可享受到这10分:一是考生必须报考的是农林类院校,而非师范、医学等院校;二是必须把这些院校填报在第一志愿,而非其他顺序的志愿;三是这些院校必须是四川省所属,而非全国各地高校;四是专业必须是农林类专业,而非经济学、英语等专业;五是还必须把这些专业放在第一专业志愿的位置,而非第二、第三专业。

另外,如上海对报考外地高校的本市考生在投档时加20分向外地高校投档;湖北省农村独女报考省属高校可加10分投档;重庆市报考市属院校的三峡库区搬迁移民考生可加5分投档;江苏省外语选考非英语语种的考生,其本科平行院校志愿中的A院校的第一专业报考非英语语种的外语专业,录取时可加10分投档…一这些加分都对考生有制约条件,而这些条件就是我们要认真捉摸的地方,不光知道有加分,而且要知道怎样做才能享受到加分。拿一句通俗的话说,要知其然,还要知其所以然。就是这个道理。

降分录取勿忽视

与加分政策相比,降分也是考生直接享受实惠的渠道之一,从某种意义上说,加分和降分有异曲同工之妙――都能得到相应分数的照顾,从而为自己的高考起到加分的效果。

从各地降分政策看,更多的是对一些有特殊身份考生的降分,而能够直接依靠志愿表(卡)享受到降分的条件之一就是定向。定向,是我国目前高校为了帮助边远地区、贫困地区、少数民族地区和工作环境比较艰苦的行业培养人才的一种方式,以保证这些地区或行业得到一定数量的毕业生。考生自愿填报有关高等学校定向就业招生志愿,并按政策一旦被录取为定向生,须在入学注册前与高校及定向就业单位签订有关定向就业协议。

根据各地对定向降分的政策来看,其表述都基本一致,“高校定向就业招生计划在该校调档分数线上不能完成的,可在该校调档分数线下20分以内、同批录取控制分数线以上,由省级招办补充投档”。如果考生填报了“定向”志愿,在定向生源不足时,很有可能享受到20分的降分。而对于有的定向生而言,可能会享受到更大幅度的降分,如有的高校特别是“985”“211”高校在定向西藏的生源不足时,给出的优惠条件是可以在本校调档线下降低40分录取。

除了定向可享受降分之外,高校还有一种降分,即学校整体或某专业生源不足的降分。如江西2011年的招生工作规定就明确,有这些情形之一的高校,对第一志愿报考的考生,可在相应批次录取控制分数线下降低一定分数投档:农、林、水、地、矿、油等类院校如在同批次录取控制分数线上完不成招生计划时,可降低10分从高分到低分投档;对纳入高校招生序列的民办高校,若在同批次录取控制分数线上不能完成招生计划时,可降低20分从高分到低分投档;划线类别为一本线的军队院校,指挥专业经调剂生源仍不足的,经招生院校同意后,可以降低分数录取,但不得低于二本线。

这里要提醒考生和家长的是,由于很多地方都实行征集志愿,如果有降分,一般会安排在征集志愿后进行。如20上海就规定对在“征求志愿”后仍未完成招生计划而又同意降分录取的外省(区、市)本科招生高校,实行降分投档录取的政策。

我们可以看出,定向只能在同批次控制线上享受降分,而学校录取中生源不足后降分幅度更大,不仅可以降到控制线下,而且还可降到控制线下20分(民办院校可能会更低),有的甚至可从一本降到二本控制线上。

这些降分政策如果考生和家长提前了解,并时时关注当地的招生录取动态,就可能享受到降分带来的意想不到的幸福。

篇6:求一个数是另个一数的几倍 教学设计(人教版三年级上册)

教学目标:

1.理解“一个数是另一个数的几倍”,能运用除法“求一个数是另一个数的几倍”,并能解决实际问题。

2.在情景教学中,学生通过观察发现、动手操作、讨论交流,提高观察、比较、抽象、概括和动手操作能力。

3.体会到数学与现实生活的紧密联系,增强学习数学的兴趣和信心。

教学重点:

理解“一个数是另一个数的几倍”,学会利用除法求“一个数是另一个数的几倍”并能在实际中运用。

教学难点: 理解和运用除法求“一个数是另一个数的几倍”

教学准备: 多媒体课件教学

教学过程:

一、复习铺垫

师:“今天大家的上课的精神都特别棒,所以下面的一些抢答题,相信你的举手动作是最快的。做好准备。”

1.口答。

3个5是( )             2个4是( )

8里面有(   )个2         20里面有(   )个5

2.看图说说有几个几

(1)☆☆☆ ☆☆☆       2个3

(2)○○   ○○   ○○      3个2

(3)□□□□□□         1个5或者5个1

二、探究新知

师:“前面的知识大家掌握的非常好,老师现在还想考考大家。”

1.出示情境图(例3)

师:仔细观察这幅图,你获得了哪些数学信息?

蓝花:2朵     黄花:6朵     红花:8朵

那么现在就让我们来比一比这三种花的朵数。谁能把比较的结果说一说?

2.初步感知“倍”的含义

(1)圈一圈,再比较:

师:除了用多和少来比较两种花的数量,我们还可以像学习除法那样将它们分成一份一份地比较。如果我们将蓝花看成一份,那么黄花可以怎么分?请大家自己在练习本上圈一圈,看看你圈了以后有什么发现。”

(2)学生操作,教师巡视,并给予适当的提示。指名一位同学到黑板前操作。并用自己的话表达自己的想法。

(3)学生汇报:

师:“你圈出了几个几?为什么把2个圈一份呢?(黄花的只数是2)你知道黄花的朵数是蓝花的几倍了吗?”

(指名回答。预测提示:因为蓝花的朵数是2,所以把2看成一份,6就可以分成3份。也就是3个2)教师根据学生的回答补充讲解:因为6里面3个2,所以6是2的3倍。所以黄花的朵数是蓝花的3倍。”

随机板书:

求:6是2的几倍

想:6里面有几个2  (3个2)

所以:6是2的3倍。

3.体会加深“倍”的意义

(1)比较红花和蓝花的朵数。

(2)先让学生自己在练习本上圈一圈,再在小组内说一说。

(2)学生汇报:

师:“你把每几朵圈成一份?(2朵)为什么?(蓝花的朵数是2朵)。那么把红花圈成了几个2(4个2)

因为8里面有4个2,所以8是2的4倍。所以红花是蓝花的4倍。

随机板书:

求:8是8的几倍

想:8里面有几个2  (4个2)

所以:8是2的4倍。

(师:“这就是我们今天要一起研究的问题。求一个数是另一个数的几倍。”(板书课题)

师“我们现在知道了红花的朵数是蓝花的4倍,那么这个4如何用算式来表示出来呢?”

指名回答,8÷2=4

(3)小结: “说的非常好,求一个数是另一个数的几倍,我们一般用除法来计算。”那么黄花的朵数是蓝花的2倍,这个2如何用算式表示出来呢?

三、尝试练习,加深理解。

1.想想做做第1题。

学生独立完成后汇报。

2.想想做做第2题。

学生独立完成后汇报。

3.想想做做第3题。

注意让学生说一说算式是如何列出来的。

四、知识应用,巩固提高。

1.想想做做第4题。

让学生尝试直接列算式解答,然后说一说是如何列出算式的。

2.寻找生活中的倍数问题

在我们生活中还有很多这样的数学问题,老师知道咱们班有几个同学今年8岁,老师今年32岁了,你知道老师的岁数是他们的几倍吗?

像这样的问题,我们生活中还有很多,同学们回去可以想一想,然后把想到的问题告诉爸爸、妈妈或者是老师听,好不好?

五、全课总结

今天怎么学习了(       ),你知道怎么求一个数是另个一数的几倍吗?(求一个数是另一个数的几倍,”也就是“求一个数里面有几个几。用除法解决。

篇7:Python实现将n个点均匀地分布在球面上的方法

作者:redraiment 字体:[增加 减小] 类型:转载

最近工作上遇到一个需求,将10000左右个点均匀地分布在一个球面上。所谓的均匀,即相邻的两个点之间的距离尽量一致。

我的算法是用基于正多面体剖分球面,我选的是正八面体。

1. 效果图如下:

2.sphere.py代码如下

#!/usr/bin/python# -*- coding: utf-8 -*-import mathclass Spherical(object): ‘‘‘球坐标系‘‘‘ def __init__(self, radial = 1.0, polar = 0.0, azimuthal = 0.0): self.radial = radial self.polar = polar self.azimuthal = azimuthal def toCartesian(self): ‘‘‘转直角坐标系‘‘‘ r = math.sin(self.azimuthal) * self.radial x = math.cos(self.polar) * r y = math.sin(self.polar) * r z = math.cos(self.azimuthal) * self.radial return x, y, zdef splot(limit): s = Spherical() n = int(math.ceil(math.sqrt((limit - 2) / 4))) azimuthal = 0.5 * math.pi / n for a in range(-n, n + 1): s.polar = 0 size = (n - abs(a)) * 4 or 1 polar = 2 * math.pi / size for i in range(size):yield s.toCartesian()s.polar += polar s.azimuthal += azimuthalfor point in splot(input(‘‘)): print(“%f %f %f” % point)

希望本文所述对大家的Python程序设计有所帮助,

更多推荐

pojSquares(n个点求正方形个数)