Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem H. Parallel Worlds 计算几何
Problem H. Parallel Worlds
题目连接:
http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c7022&all_runs=1&action=140
Description
Alex is a Baisuralen State University student. Alex and BSU live in two parallel worlds. As we know from
school geometry classes, parallel lines do not intersect. However, in reality and unfortunately these two
parallel worlds do intersect.
There are some courses in BSU that came from hell. They make parallel worlds intersect and force Alex
to visit lectures. Or even more, they cause pain and humiliation. (It was once even said, that the other
name for course of ‘Functional Analysis’ (shortly FUN) is ‘Pain and Humiliation’. That is, FUN is not
fun.) For example, once Alex slept during such course, and was woken up by professor’s voice. Afterwards
he was asked if he had moved to Banach Space and was told to move to railway station.
Not everything is so bad, however. There are courses that are from heaven. They are finished in any mark
you want without needing to visit them.
You are requested to provide a procedure to establish that some courses are from heaven. As part of that,
you need to provide two sets of points P and Q on a plane, each containing N points. All points in P
and Q should be distinct, and the intersection of P and Q should be empty. Sets P and Q should satisfy
the following property. There should exist N pairwise nonparallel lines, such that sets of projections of P
and Q on these lines coincide. Of course, the lines should also be provided. Moreover, pairs of points that
coincide are also required.
One can show that for any positive integer N such sets of points exist.
Input
The only line of input contains a single number N (1 ≤ N ≤ 100).
Output
Output 3 × N lines.
First N lines should contain two real numbers x
P
i
y
P
i — coordinates of points in set P.
Next N lines should contain two real numbers x
Q
i
y
Q
i — coordinates of points in set Q.
Afterwards output the descriptions of the lines: three real numbers Ai
, Bi and Ci—coefficients of the ith
line (Aix + Biy + Ci = 0), and a permutation of numbers from 1 to N (qi1, qi2, . . . , qiN ) (the projection of
the first point from P should coincide with the projection of the qi1st point of the set Q, the projection
of the second point from P should coincide with the projection of the qi2nd point of Q and so on).
Absolute value of all numbers should not be greater than 106
.
The distance between any two points from P ∪ Q should be at least 1. And P ∩ Q = ∅.
Two lines are considered parallel if the angle between the lines is less than 10−2
rad., or if the cross
product AiBj − BiAj is less than 10−6
.
Two projections coincide if the distance between them is not greater than 10−6
Sample Input
1
Sample Output
0 0
1 0
1 0 0 1
Hint
题意
让你构造两个点集合,各有n个点,且不相交。
然后你需要构造n条直线
然后需要这俩集合中的点,对于每一条线,都能在直线上面的映射相同。
题解:
看着烧脑子,但实际上构造一个正2n边形就好了。
代码
#include<bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
vector<pair<double,double> >P;
vector<pair<double,double> >Q;
/* 基本几何结构 */
struct POINT
{
double x;
double y;
POINT(double a=0, double b=0) { x=a; y=b;} //constructor
};
struct LINESEG
{
POINT s;
POINT e;
LINESEG(POINT a, POINT b) { s=a; e=b;}
LINESEG() { }
};
struct LINE // 直线的解析方程 a*x+b*y+c=0 为统一表示,约定 a >= 0
{
double a;
double b;
double c;
LINE(double d1=1, double d2=-1, double d3=0) {a=d1; b=d2; c=d3;}
};
LINE makeline(POINT p1,POINT p2)
{
LINE tl;
int sign = 1;
tl.a=p2.y-p1.y;
if(tl.a<0)
{
sign = -1;
tl.a=sign*tl.a;
}
tl.b=sign*(p1.x-p2.x);
tl.c=sign*(p1.y*p2.x-p1.x*p2.y);
return tl;
}
vector<LINE>AA;
int mp[105];
int main(){
int n;
scanf("%d",&n);
if(n==1){
printf("0 0\n");
printf("1 0\n");
printf("1 0 0 1\n");
return 0;
}
double len = 10000;
double x = pi/n;
POINT AAA,BBB;
for(int i=0;i<2*n;i++){
double X = len * sin(x*i);
double Y = len * cos(x*i);
if(i%2==0){
P.push_back(make_pair(X,Y));
AAA = POINT(X,Y);
}else{
Q.push_back(make_pair(X,Y));
BBB = POINT(X,Y);
}
if(i>=1&&i<=n){
POINT A,B;
A.x = (AAA.x+BBB.x)/2.0;
A.y = (AAA.y+BBB.y)/2.0;
B.x = 0;
B.y = 0;
AA.push_back(makeline(A,B));
}
}
for(int i=0;i<n;i++)
printf("%.12f %.12f\n",P[i].first,P[i].second);
for(int i=0;i<n;i++)
printf("%.12f %.12f\n",Q[i].first,Q[i].second);
for(int i=0;i<n;i++){
printf("%.12f %.12f %.12f ",AA[i].a,AA[i].b,AA[i].c);
int a1 = i/2,b1 = (i+1)/2;
for(int j=0;j<n;j++){
mp[(a1-j+n)%n] = (b1+j)%n;
}
for(int j=0;j<n;j++)
printf("%d ",mp[j]+1);
printf("\n");
}
}
Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem H. Parallel Worlds 计算几何的更多相关文章
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem K. UTF-8 Decoder 模拟题
Problem K. UTF-8 Decoder 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c702 ...
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem I. Alien Rectangles 数学
Problem I. Alien Rectangles 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c ...
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem F. Turning Grille 暴力
Problem F. Turning Grille 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c70 ...
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem C. Cargo Transportation 暴力
Problem C. Cargo Transportation 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed ...
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem G. k-palindrome dp
Problem G. k-palindrome 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c7022 ...
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem A. A + B
Problem A. A + B 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c7022&al ...
- 2010 NEERC Western subregional
2010 NEERC Western subregional Problem A. Area and Circumference 题目描述:给定平面上的\(n\)个矩形,求出面积与周长比的最大值. s ...
- 2009-2010 ACM-ICPC, NEERC, Western Subregional Contest
2009-2010 ACM-ICPC, NEERC, Western Subregional Contest 排名 A B C D E F G H I J K L X 1 0 1 1 1 0 1 X ...
- 【GYM101409】2010-2011 ACM-ICPC, NEERC, Western Subregional Contest
A-Area and Circumference 题目大意:在平面上给出$N$个三角形,问周长和面积比的最大值. #include <iostream> #include <algo ...
随机推荐
- Does Deep Learning Come from the Devil?
Does Deep Learning Come from the Devil? Deep learning has revolutionized computer vision and natural ...
- Codeforces 238 div2 B. Domino Effect
题目链接:http://codeforces.com/contest/405/problem/B 解题报告:一排n个的多米诺骨牌,规定,若从一边推的话多米诺骨牌会一直倒,但是如果从两个方向同时往中间推 ...
- Javascript - 表达式与语句
表达式与语句(Expression&Statement) 流程控制语句 1.嵌入式语句 嵌入式即这种语句可以无限嵌套N层.所有嵌入式语句只需要键入首个关键单词,在visual studio里按 ...
- redhat7配置本地yum源
1.首先是要有一个iso文件,并将这个文件挂载到某个目录 挂载: 配置: 检验: yum list 现在你就可以在没有网的情况下,安装软件了~~~
- 利用C&C漏洞来查看恶意软件Dridex的操作流程
利用C&C漏洞来查看恶意软件Dridex的操作流程 据了解,安全研究人员已经获取到了银行恶意软件Dridex的C&C的访问权限了.这也就意味着,安全研究人员可以了解到网络犯罪分子到底窃 ...
- oracle日期、转换函数
转换函数 日期类型转换成字符类型 select to_char(sysdate) s1, --14-3月 -16 to_char(sysdate, 'yyyy-mm-dd') s2, - ...
- 小白学习安全测试(二)——httrack的安装和使用
httrack是一款免费的网站镜像程序,简单理解就是可以在网站结构(网页及一些主要信息文件),下载到本地,可离线浏览,我是按照搭建成功后的console直译过来的 下面说下安装: 我都是在Linux环 ...
- Flask页面模板化代码片段
文中展示了Flask官网的Tutorial示例中用到的模板化代码片段,以备查阅. base.html: {% block title %}{% endblock %} {% if g.user %} ...
- 移动端点击300ms延迟
转载自:http://www.jianshu.com/p/6e2b68a93c88 一.移动端300ms点击延迟 一般情况下,如果没有经过特殊处理,移动端浏览器在派发点击事件的时候,通常会出现300m ...
- 浅谈js设计模式之发布 — 订阅模式
发布 — 订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.在 JavaScript开发中,我们一般用事件模型来替代传统的发布 — ...