CF851 C 暴力
给出n个5维下的点,求点a不与其它任意的b,c重合,向量ab,ac的夹角都为钝角,这样的点个数,并打印它们。
转换二维下的求角度的函数为五维的,而且由于要求角度大于90度,在二维情况下最多有4个点,也就是象限的数量,那么推导到5维就有$2^5$个象限,所以实际上只需要判断这么多个点就能退出了,并不会TLE
/** @Date : 2017-09-04 23:12:31
* @FileName: C.cpp
* @Platform: Windows
* @Author : Lweleth (SoungEarlf@gmail.com)
* @Link : https://github.com/
* @Version : $Id$
*/
#include <bits/stdc++.h>
#define LL long long
#define PII pair<int ,int>
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std; const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8;
const double Pi = acos(-1.0);
//减少精度问题
int sign(double x)
{
if(fabs(x) < eps)
return 0;
if(x < 0)
return x;
else return x;
} struct yuu
{
double a, b, c, d, e;
yuu(){}
yuu(double aa, double bb, double cc, double dd, double ee):a(aa),b(bb),c(cc),d(dd),e(ee){}
yuu operator -(const yuu &y) const
{
//cout << y.a << y.b << y.c << y.d << y.e<<endl;
return yuu(sign(y.a-a) , sign(y.b-b) , sign(y.c-c) , sign(y.d-d) , sign(y.e-e));
}
double operator *(const yuu &y)
{
double ans = (a*y.a) + (b*y.b) + (c*y.c)+ (d*y.d) + (e*y.e);
//cout << ans << endl;
return sign(ans);
}
}; double leng(yuu x, yuu y)
{
if(sign(x*y) == 0)
return -1;
double ans = sqrt(sign(x*y));
return ans;
} yuu p[1010];
int main()
{
int n;
while(cin >> n)
{
for(int i = 0; i < n; i++)
{
double a, b, c, d, e;//double 写错int
scanf("%lf%lf%lf%lf%lf",&a, &b, &c, &d, &e);
p[i] = yuu(a, b, c, d, e);
//cout << p[i].a << endl;
}
vector<int>q;
for(int i = 0; i < n; i++)
{
int flag = 0;
for(int j = 0; j < n && !flag; j++)
{
for(int k = j + 1; k < n; k++)
{
if(i == j || j == k || i == k)
continue;
yuu ij = p[i] - p[j];
yuu ik = p[i] - p[k];
/*if(leng(ij,ij) == -1 || leng(ik,ik) == -1)
continue;*/
double agl = acos(ij * ik / (leng(ij, ij) * leng(ik, ik)));
/*if(i == 1 && j == 2 && k == 3)
printf("%.lf %.lf\n", leng(ij, ij) , leng(ik, ik));*/
//cout << i << j<< k<< "~"<<agl * 180.00 / Pi<< endl;
if(agl * 2.00000 + eps < Pi)
{
flag = 1;
break;
}
}
}
if(!flag)
q.PB(i);
}
sort(q.begin(), q.end());
printf("%d\n", q.size());
for(int i = 0; i < q.size(); i++)
printf("%d%s", q[i] + 1, i==q.size() - 1?"\n":" ");
}
return 0;
}
CF851 C 暴力的更多相关文章
- zone.js - 暴力之美
在ng2的开发过程中,Angular团队为我们带来了一个新的库 – zone.js.zone.js的设计灵感来源于Dart语言,它描述JavaScript执行过程的上下文,可以在异步任务之间进行持久性 ...
- [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)
Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数 ...
- HDU 5944 Fxx and string(暴力/枚举)
传送门 Fxx and string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Othe ...
- 1250 Super Fast Fourier Transform(湘潭邀请赛 暴力 思维)
湘潭邀请赛的一题,名字叫"超级FFT"最终暴力就行,还是思维不够灵活,要吸取教训. 由于每组数据总量只有1e5这个级别,和不超过1e6,故先预处理再暴力即可. #include&l ...
- fragment+viepager 的简单暴力的切换方式
这里是自定义了一个方法来获取viewpager private static ViewPager viewPager; public static ViewPager getMyViewPager() ...
- ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力
Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS Memory Limit:65536KB 64bit IO Fo ...
- uoj98未来程序改 纯暴力不要想了
暴力模拟A了,数据还是良(shui)心(shui)的 90分的地方卡了半天最后发现一个局部变量被我手抖写到全局去了,,, 心碎*∞ 没什么好解释的,其实只要写完表达式求值(带函数和变量的),然后处理一 ...
- 开源服务专题之------ssh防止暴力破解及fail2ban的使用方法
15年出现的JAVA反序列化漏洞,另一个是redis配置不当导致机器入侵.只要redis是用root启动的并且未授权的话,就可以通过set方式直接写入一个authorized_keys到系统的/roo ...
- 关于csrss.exe和winlogon.exe进程多、占用CPU高的解决办法,有人在暴力破解
关于csrss.exe和winlogon.exe进程多.占用CPU高的解决办法 最近VPS的CPU一直处在100%左右,后台管理上去经常打不开,后来发现上远程都要好半天才反映过来,看到任务管理器有多个 ...
随机推荐
- Controller与Switch建立连接
连接建立 控制器和交换机认识的过程. 用于交互Openflow版本,如果不同则没有后续. 同1. 特征请求,控制器询问交换机的特征信息. 交换机回复控制器,相当于把整个交换机的所有配置都告诉控制器了. ...
- 第一章 JavaScript简介
DOM级别 DOM1:映射文档的结构 DOM2: DOM视图,定义了跟踪不同文档视图的接口(例如CSS应用前后的文档) DOM事件,定义了事件和事件处理的接口 DOM样式,定义了基于CSS为元素应用样 ...
- (三)MySQL终极篇
1.索引 详细介绍:http://www.cnblogs.com/57rongjielong/p/8039452.html 索引是对数据库表中一个或多个列的值进行排序的结构.索引是经过某种算法优化过的 ...
- java复利计算基本代码
源代码: public class Calculate { public static void main(String[] args){ double money = 1000; //本金 int ...
- 找xpath好用的工具(比较少用,针对只能在IE上打开的网站)
有一些网站只能在IE浏览器里打开,不像firefox那样有好多好用的插件来找元素的xpath,css path等. 当然现在IE也可以,F12出现像firebug那样的窗口,来查看元素. 这里呢在介绍 ...
- java 基础 --File
1, 创建文件 File file = new File(path); file.createNewFile(); //如果路径不存在,会抛异常 file.mkdir();//如果路径不存在,返回fa ...
- jQuery表单验证组件BootstrapValidator
github:https://github.com/nghuuphuoc/bootstrapvalidator 参考博客:JS组件系列——Form表单验证神器: BootstrapValidator ...
- PC和FPGA间的串口通信实现
应用笔记 V1.0 2015/03/26 PC和FPGA间的串口通信实现 概述 本文将介绍PC和FPGA间的串口通信实现的基本思路和Verilog代码,对于通信而言,收发双方都要有相应的控制. ...
- HDU4043_FXTZ II
题目描述的意思就不说了,自己考虑的时候就是在所有的排列中,碰到大于前面最大的出现数字的时候就乘以一个二分之一,然后求和. 打表后就会发现,答案分子为1*3*5*……*(2*n-1):分母为2*4*6* ...
- bzoj2301-Problem b
题意 \(T\le 5\times 10^4\) 次询问,每次询问 \(a,b,c,d,k\le 5\times 10^4\),求 \[ \sum _{i=a}^b\sum _{j=c}^d[gcd( ...