51nod1369 无穷印章
提示:下图给出一些印章图案以及它们对应的结果。

多组测试数据,第一行一个整数T,表示测试数据数量,1<=T<=5
每组测试数据有相同的结构构成。
每组数据的第一行包含一个整数N,表示印章中的线段条数,其中1<=N<=50
接下来N行每行四个整数ai,bi,ci,di,表示一条线段的两个端点(ai,bi)与(ci,di),其中-1000<=ai,bi,ci,di<=1000
每组数据一行输出,存在无穷个印章的盖法输出"Infinite",否则输出"Finite".
这题卡精度。。。最好不要用浮点数。。。
#include<cstdio>
#include<algorithm>
struct vec{
int x,y;
void fix(){
if(y<||y==&&x<)x=-x,y=-y;
}
};
vec operator+(vec a,vec b){return (vec){a.x+b.x,a.y+b.y};}
vec operator-(vec a,vec b){return (vec){a.x-b.x,a.y-b.y};}
int operator*(vec a,vec b){return a.x*b.y-a.y*b.x;}
bool operator==(vec a,vec b){return a.x==b.x&&a.y==b.y;}
struct seg{
vec a,b;
void scan(){
scanf("%d%d%d%d",&a.x,&a.y,&b.x,&b.y);
}
void swap(){
std::swap(a,b);
}
bool isp(){
vec c=a-b;
return !(c.x|c.y);
}
}ss[];
int ep,sum,cnt;
int sgn(int x){
return x>?:x<?-:;
}
bool cross(seg a,seg b){
return
sgn((b.a-a.a)*(a.b-a.a))*sgn((b.b-a.a)*(a.b-a.a))+
sgn((a.a-b.a)*(b.b-b.a))*sgn((a.b-b.a)*(b.b-b.a))<;
}
bool pal(seg a,seg b){
return (a.b-a.a)*(b.b-b.a)==;
}
struct event{
vec x;int v;
}es[];
bool operator<(event a,event b){
int c=a.x*b.x;
return c?c>:a.v<b.v;
}
void chk(seg a,seg b){
if(a.a==b.b)b.swap();
if(a.b==b.a)a.swap();
if(a.b==b.b)a.swap(),b.swap();
if(a.a==b.a){
vec p1=a.b-a.a,p2=b.b-b.a;
if(p1*p2<)std::swap(p1,p2);
p1.fix();p2.fix();
if(p1*p2<)++sum;
++cnt;
es[ep++]=(event){p1,};
es[ep++]=(event){p2,-};
}
}
int T,n;
int main(){
scanf("%d",&T);
while(T--){
ep=;sum=cnt=;
scanf("%d",&n);
for(int i=;i<n;i++)ss[i].scan();
int is=;
for(int i=;i<n;i++)for(int j=;j<i;j++){
if(ss[i].isp()||ss[j].isp())continue;
if(pal(ss[i],ss[j]))continue;
if(cross(ss[i],ss[j])){
is=;
i=n;
break;
}
chk(ss[i],ss[j]);
}
if(is){
std::sort(es,es+ep);
for(int i=;i<ep;i++){
if((sum+=es[i].v)==cnt){
is=;
break;
}
}
}
puts((is==||is==&&!cnt)?"Infinite":"Finite");
}
return ;
}
51nod1369 无穷印章的更多相关文章
- C#如何在PDF文件添加图片印章
文档中添加印章可以起一定的作用,比如,防止文件随意被使用,或者确保文档内容的安全性和权威性.C#添加图片印章其实也有很多实现方法,这里我使用的是免费的第三方软件Free Spire.PDF,向大家阐述 ...
- ASP.NET Identity 2新增双重认证、帐号锁定、防伪印章功能并修复了一些bug
Microsoft最近发布了ASP.NET Identity 2,该版本支持双重认证.帐号锁定以及防伪印章功能,还增强了用户帐号和索引.此外新版本还包含一个改进的密码验证器并修复了一些bug. 借助于 ...
- python的正负无穷float("inf")的用法
今天,在看书的时候看到这么一个例子: 这是用来求解 从某个数字列表中找出俩个彼此最接近但是不相等的数(俩者之间的绝对差是最小的): >>> from random import ra ...
- Scalaz(50)- scalaz-stream: 安全的无穷运算-running infinite stream freely
scalaz-stream支持无穷数据流(infinite stream),这本身是它强大的功能之一,试想有多少系统需要通过无穷运算才能得以实现.这是因为外界的输入是不可预料的,对于系统本身就是无穷的 ...
- 无穷滚动(Infinite scroll)的实现原理
1 无穷滚动(无限加载)与分页的比较 现在越来越多的网站或者博客的列表页开始抛弃传统的分页技术,大致的原因在于,分页明显地增加了用户的操作行为以及页面加载等待的时间,而网页浏览者往往没什么耐心. 而无 ...
- 泛函编程(13)-无穷数据流-Infinite Stream
上节我们提到Stream和List的主要分别是在于Stream的“延后计算“(lazy evaluation)特性.我们还讨论过在处理大规模排列数据集时,Stream可以一个一个把数据元素搬进内存并且 ...
- JavaScript和html5 canvas生成圆形印章
代码: function createSeal(id,company,name){ var canvas = document.getElementById(id); var context = ca ...
- html5 canvas绘制圆形印章,以及与页面交互
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Python 关于正负无穷float(‘inf’)的一些用法
Python中可以用如下方式表示正负无穷: float("inf"), float("-inf") 利用 inf 做简单加.乘算术运算仍会得到 inf > ...
随机推荐
- sql server 内置ETL工具学习(一) BCP篇
sql server 内置ETL工具学习 常用的导入方式:bcp, BULK INSERT,OPENROWSET和 SSIS. BCP BCP全称BULK COPY PROGRAM 有以下特点: 命令 ...
- [转载] C++ typedef 用法详解
typedef的语法描述 在现实生活中,信息的概念可能是长度,数量和面积等.在C语言中,信息被抽象为int.float和 double等基本数据类型.从基本数据类型名称上,不能够看出其所代表的物理属性 ...
- 在WAS 中建立db2 dataSource
1: 安全性->JAAS配置->J2C认证数据: 新建-> 名称(随意起) 数据库用户名 密码.数据库密码 2:应用程序服务器?server1?Web容器?会话管理?分布式环境设置 ...
- 98. Validate Binary Search Tree
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
- jni数据传递——会不断的更新,测试没有问题,再整理进来。
工作中遇到了ndk编程,其实核心就是java和本地的数据交互.现把所有数据类型的传递写成demo. 1,ini数组传递 我们实现传递8个数值过去,然后本地将八个数值放到数组,返回. java代码: ...
- Spring MVC 通过@Value注解读取.properties配置内容
第一步:在applicationContext.xml配置: <bean id="configProperties" class="org.springframew ...
- Spring MVC数组绑定
需求:商品批量删除,用户在页面选择多个商品,批量删除. 关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id // 批量删除 商品信息 @ ...
- POJ2375 Cow Ski Area (强连通)(缩点)
Cow Ski Area Time Limit: 1000MS Memory Limit: 65536K Total Sub ...
- hiho一下116周 网络流
网络流二·最大流最小割定理 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi:在上一周的Hiho一下中我们初步讲解了网络流的概念以及常规解法,小Ho你还记得内容么? ...
- 使用jquery插件实现图片延迟加载技术(懒加载)
有时我们看到一些大型网站,页面如果有很多图片的时候,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对 ...