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%左右,后台管理上去经常打不开,后来发现上远程都要好半天才反映过来,看到任务管理器有多个 ...
 
随机推荐
- 基于NABCD评论探路者团队贪吃蛇作品及改进建议
			
1.根据(不限于)NABCD评论作品的选题 N:随着人们生活压力越来越大,需要去去缓解压力,并且也需要不断进步,学习英语知识. A:它是基于java开发的一款软件,采用逐个吃字母,加长蛇身,增强记忆的 ...
 - win10自带中文输入法的用户体验
			
用户界面: 貌似没有什么界面,不过我感觉这就是最大的优点,没有过度渲染的界面,没有烦人的推送.弹窗,没有定期不定期的更新提示,简洁也是我使用这款输入法的最主要的原因 记住用户的选择: 这点我认为win ...
 - 软工实践-Alpha 冲刺 (6/10)
			
队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 已经解决登录注册等基本功能的界面. 完成了主界面的基本布局 ...
 - 未能加载文件或程序集“log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821”或它的某一个依赖项。系统找不到指定的文件。
			
在网上找了很久,很多个地方让修改配置文件,也有重装log4net的. 如文章:使用Common.Logging与log4net的组件版本兼容问题 我检查下发现项目中的package包中的Log4net ...
 - 解决因生成javadoc失败导致Maven打包失败问题
			
方案就是设置javadoc生成失败时不导致整个打包失败: <plugin> <groupId>org.apache.maven.plugins</groupId> ...
 - (十)Jmeter中的Debug Sampler介绍
			
一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter v ...
 - Delphi 组件渐进开发浅谈(一)——由简入繁
			
最近业余时间在写游戏修改器玩,对于Delphi自带的组件总觉得差强人意,需要书写大量冗余代码,如果大量使用第三方组件,在以后的移植和与他人交互时也不是很方便,因此便产生了自己封装组件的想法. 实际上这 ...
 - 【计算机网络】NAT:网络地址转换
			
NAT(Network Address Translation,网络地址转换)是1994年提出的.当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因 ...
 - apache server-status配置
			
引言 自己配置LAMP服务器时(xwamp),获取状态信息出现错误: You don't have permission to access /server-status on this server ...
 - Qt——数据的隐式共享
			
一.隐式共享类 在Qt中有很多隐式共享类( Implicitly Shared Classes ),什么是隐式共享呢,请参考官方文档的说明. 好吧,翻译一下—— 许多C++类隐式地共享数据,使得资源使 ...