codeforces 1017E

两个凸包判断经过旋转平移能否重合。
我一看。哇傻逼题十行秒掉。
交上去跑的飞快然后wa55。
。。。
然后这个题一共就55个点,这网友的数据竟该死的强。
看了眼数据是两个反转的平行四边形,再判下角度就好了。
怎么大家都在hash然后kmp啊。这好难啊。我根本不会这东西啊。。。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cmath>
#include <deque>
#include <cstring>#define rep(n) for(int i=0;i<n;i++)
using namespace std;
typedef double db;
const db eps=1e-6;
const db pi=acos(-1);
int sign(db k){if (k>eps) return 1; else if (k<-eps) return -1; return 0;
}
int cmp(db k1,db k2){return sign(k1-k2);}
struct point{db x,y;point operator + (const point &k1) const{return (point){k1.x+x,k1.y+y};}point operator - (const point &k1) const{return (point){x-k1.x,y-k1.y};}point operator * (db k1) const{return (point){x*k1,y*k1};}point operator / (db k1) const{return (point){x/k1,y/k1};}bool operator < (const point k1) const{int a=cmp(x,k1.x);if (a==-1) return 1; else if (a==1) return 0; else return cmp(y,k1.y)==-1;}int operator == (const point &k1) const{return cmp(x,k1.x)==0&&cmp(y,k1.y)==0;}db abs(){return sqrt(x*x+y*y);}db dis(point k1){return ((*this)-k1).abs();}int dis2(point k1){ return (dis(k1)*dis(k1));}point unit(){db w=abs(); return point{x/w,y/w};}point turn90(){ return point{-y,x};}db getP()const { return sign(y)==1||(sign(y)==0&&sign(x)==-1);}void print(){printf("%.11lf %.11lf\n",x,y);}
};
db cross(point k1,point k2){ return k1.x*k2.y-k1.y*k2.x;}
db dot(point k1,point k2){ return k1.x*k2.x+k1.y*k2.y;}
db rad(point k1,point k2){ return atan2(cross(k1,k2),dot(k1,k2));}
int compareangle(point k1,point k2){return k1.getP()<k2.getP()||(k1.getP()==k2.getP()&&sign(cross(k1,k2))>0);
}
point getLL(point k1,point k2,point k3,point k4){db w1=cross(k1-k3,k4-k3),w2=cross(k4-k3,k2-k3);return (k1*w2+k2*w1)/(w1+w2);
}
struct line{point p[2];line(point k1,point k2){p[0]=k1;p[1]=k2;}point &operator[](int k){ return p[k];}int include(point k){ return sign(cross(p[1]-p[0],k-p[0])>0);}point dir(){ return p[1]-p[0];}line push(db eps){//向左手边平移eps//const db eps=1e-6;point delta=(p[1]-p[0]).turn90().unit()*eps;return {p[0]-delta,p[1]-delta};}
};
point getLL(line k1,line k2){return getLL(k1[0],k1[1],k2[0],k2[1]);
}
int parallel(line k1,line k2){ return sign(cross(k1.dir(),k2.dir()))==0;}
int sameDir(line k1,line k2){return parallel(k1,k2)&&sign(dot(k1.dir(),k2.dir()))==1;
}
int operator <(line k1,line k2){if(sameDir(k1,k2))return k2.include(k1[0]);return compareangle(k1.dir(),k2.dir());
}
int checkpos(line k1,line k2,line k3){ return k3.include(getLL(k1,k2));}
vector<point> convexHull(vector<point>ps){int n = ps.size();if(n<=1)return ps;sort(ps.begin(),ps.end());vector<point> qs(n*2);int k=0;for(int i=0;i<n;qs[k++]=ps[i++])while (k>1&&cross(qs[k-1]-qs[k-2],ps[i]-qs[k-2])<=0)--k;for(int i=n-2,t=k;i>=0;qs[k++]=ps[i--])while (k>t&&cross(qs[k-1]-qs[k-2],ps[i]-qs[k-2])<=0)--k;qs.resize(k-1);return qs;
}
vector<point> a,b;
int n,m;point o1,o2;
int main(){scanf("%d%d",&n,&m);a.resize(n);b.resize(m);rep(n)scanf("%lf%lf",&a[i].x,&a[i].y);rep(m)scanf("%lf%lf",&b[i].x,&b[i].y);a=convexHull(a);b=convexHull(b);if(a.size()!=b.size()){cout<<"NO"<<endl;return 0;}n=a.size();rep(n)o1=o1+a[i],o2=o2+b[i];o1=o1/n;o2=o2/n;rep(n)a[i]=a[i]-o1;rep(n)b[i]=b[i]-o2;sort(a.begin(),a.end(),compareangle);sort(b.begin(),b.end(),compareangle);rep(n){bool f=1;db pre=-1;for(int j=0;j<n&&f;j++){if(cmp(a[j].abs(),b[(i+j)%n].abs())!=0)f=0;db now = rad(a[j],b[(i+j)%n]);if(pre==-1)pre=fabs(now);else if(cmp(fabs(now),pre))f=0;}if(f){cout<<"YES"<<endl;return 0;}}cout<<"NO"<<endl;
}

转载于:https://www.cnblogs.com/MXang/p/11342570.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Robert C. Martin关于UML、CASE的观点

最近在看《Agile Principles,Patterns,and Practices in C#》, written by Robert C. Martin and his son Micah Martin. 其中写到他们关于UML、CASE使用的观点&#xff0c;有点颠覆传统的意味&#xff0c;觉得很好玩儿&#xff0c;贴出来和大家共享。我的理解也许还有偏差&…

Linux配置 DNS and BIND服务配置详解--缓存服务器配置 正反向解析配置

一、DNS简介一、DNS简介 DNS是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写&#xff0c;它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址&#xff0c;并具有将域名转换为IP地址功能的服务器。其中域名必…

位运算应用口诀和实例(转自大笨狼)

位运算应用口诀和实例 位运算应用口诀 清零取反要用与&#xff0c;某位置一可用或若要取反和交换&#xff0c;轻轻松松用异或移位运算要点 1 它们都是双目运算符&#xff0c;两个运算分量都是整形&#xff0c;结果也是整形。 2 "<<" 左移&#xff1a;右边空出…

我的博客网站开发6——博文关键字搜索

在页面中&#xff0c;用户可以通过关键字的搜索功能搜索博文。可以实现类似百度和Google的页面搜索功能&#xff0c;可实现多个关键字的搜索。搜索后&#xff0c;在搜索的结果中有关键字的高亮度的提示如&#xff1a; 在搜索的结果页面&#xff0c;模仿Google的搜索页面的快照功…

ogre plugin for 3dmax 最新进度和功能说明

1. position, diffuse, normal, texcoordx的导出2. multi material的处理3. 最小化vertex复制/拆分4. material及sub-material数据导出5. two-sided material的支持&#xff08;自动复制出背面顶点信息&#xff09;6. 智能texture自动复制7. bone animation的完全支持8. helper…

shell 函数定义和调用

为什么80%的码农都做不了架构师&#xff1f;>>> 一. 函数定义 语法&#xff1a; [function] functionname[()]{action;[return int;] } 说明&#xff1a; 1、可以带function fun() 定义&#xff0c;也可以直接fun() 定义,不带任何参数。 2、参数返回&#xff0c;可…

Nhibernate代码生成器v2.1中文版

Nhibernate代码生成器v2.1中文版(转发)下载转载于:https://www.cnblogs.com/hakuci/archive/2008/03/15/1106802.html

Head First设计模式读书笔记——策略模式

问题描述&#xff1a; 目前的任务是实现一个FPS类游戏的各种角色&#xff08;友军、敌军、平民和狗、猫、鸭子等动物&#xff09;以及他们的各种行为&#xff08;攻击、游泳等&#xff09;。 设计方案一 很简单&#xff0c;只要实现一个角色超类&#xff0c;将角色的各种行为放…

centos+bond+bridge+docker(ssh容器)固定ip实现测试环境(一)

硬件&#xff1a;R730交换机&#xff1a;H3C Switch S5120-28P-SI系统&#xff1a;centos7#nmtuihttp://568273240.blog.51cto.com/802.3ad为LACP模式交换机部分&#xff1a;# systemctl restart network可以多重启几遍试下。http://568273240.blog.51cto.com/注意&#xff1a;…

jQuery 获取屏幕高度、宽度

做手机Web开发做浏览器兼容用到了&#xff0c;所以在网上找了些汇总下。alert($(window).height()); //浏览器当前窗口可视区域高度 alert($(document).height()); //浏览器当前窗口文档的高度 alert($(document.body).height());//浏览器当前窗口文档body的高度 alert($(do…

python 发起HTTP请求

因为微信公众号群发需要调用高级群发接口&#xff0c;其中涉及到python发起HTTP请求&#xff0c;现在将相关实现操作记录如下&#xff1a; 首先&#xff0c;HTTP请求分为GET和POST&#xff0c;如下所示&#xff1a; 首先是发起get 请求&#xff1a; # -*- coding: utf-8 -*- im…

如何在webservice中取得sesssionid

[WebMethod(EnableSessiontrue)] 一定要标注EnableSessiontrue public string GetID() { return Session.SessionID; } 转载于:https://www.cnblogs.com/suneryong/archive/2008/03/26/1122578.html

pthread_join

函数简介 函数pthread_join用来等待一个线程的结束。函数原型为&#xff1a; extern int pthread_join (pthread_t__th, void **__thread_return); 第一个参数为被等待的线程标识符&#xff0c;第二个参数为一个用户定义的指针&#xff0c;它可以用来存储被等待线程的返回值。…

简单线性回归算法

为什么80%的码农都做不了架构师&#xff1f;>>> /*** 简单线性回归算法* param array y轴数据* param array x轴数据* returns array(slope,intercept,r2)*/ function linearRegression(y, x) {var lr {};var n y.length;var sum_x 0;var sum_y 0;var sum_xy …

模拟BS服务器

一、模拟BS服务器分析 二、BS模拟服务器代码实现 图片都是单独请求&#xff0c;后台单独线程&#xff0c;这边是通过构造方法传入的Runable接口的实现类匿名对象创建线程&#xff1b; 创建本地输入流读取到网络输出流传过来的信息再放到网络输出流中返回&#xff1b; 转载于:ht…

c#修饰符!

在C#中&#xff0c;有如下几种修饰符&#xff0c;分别是public,protected,internal,private。先来看一下C# 4th Edition中的说明&#xff1a; public No restrictions. Members marked public are visible to any method of any class. private The members in class A that ar…

wifi定位技术

wifi定位是iphone升级到1.1.3之后新加的应用服务&#xff0c;拿到机器后开始试用一下wifi定位。在美国达拉斯&#xff0c;定位按钮被按下后&#xff0c;旋转了大约2秒钟&#xff0c;所在的街道就立刻闪现在屏幕中央了。难怪乔布斯也说&#xff1a;“Its really cool”&#xff…

linux定时任务启动

/sbin/service crond stop /sbin/service crond start /sbin/service crond restart

不要62

题目 试题描述杭州人称那些傻乎乎粘嗒嗒的人为 62&#xff08;音&#xff1a;laoer&#xff09;。杭州交通管理局经常会扩充一些的士车牌照&#xff0c;新近出来一个好消息&#xff0c;以后上牌照&#xff0c;不再含有不吉利的数字了&#xff0c;这样一来&#xff0c;就可以消除…

myssh

http://blog.csdn.net/infon/archive/2007/04/17/1568309.aspx http://blog.csdn.net/infon 转载于:https://www.cnblogs.com/tries/archive/2008/04/11/1148121.html