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%左右,后台管理上去经常打不开,后来发现上远程都要好半天才反映过来,看到任务管理器有多个 ...
随机推荐
- 01慕课网《vue.js2.5入门》——基础知识
前端框架 Vue.js2.5 2018-05-12 Vue官网:https://cn.vuejs.org/ 基础语法+案例实践+TodoList+Vue-cli构建工具+TodoList Vue基础语 ...
- 团队开发——软件需求分析报告(Hello World 团队)
一. 项目名称 超级迷宫 二. 设计背景 随着生活节奏加快,游戏更新速度的加快,游戏大同小异缺少新颖度,同时为了满足多游戏的结合,充实人们的生活,同时增加知识,有协作模式增进友谊和感情,在闲暇 ...
- OOP 1.2 const关键字
1.2 const关键字 1.常量 指针常量 定义常量:const 类型 =值 定义指针常量:const *类型=值 常量指针不可通过常量指针修改其指向的内容 可直接修改其指向的内容 常量指针的指向可 ...
- 0429团队项目-Scrum团队成立
Scrum团队成立 团队名称:开拓者 团队目标:努力让每一个小伙伴在学会走路的基础上学会跑. 团队口号:我们要的只是这片天而已. 团队照:正面照+背影照(那就是为什么组名叫开拓者) 5.2 角色分配 ...
- WPF和Expression Blend开发实例:充分利用Blend实现一个探照灯的效果
本篇文章阅读的基础是在读者对于WPF有一定的了解并且有WPF相关的编码经验,对于Blend的界面布局有基础的知识.文章中对于相应的在Blend中的操作进行演示,并不会进行细致到每个属性的介绍.同时,本 ...
- 201621123037 《Java程序设计》第6周学习总结
作业06-接口.内部类 1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多 ...
- 敏捷冲刺DAY4
一. 每日会议 1. 照片 2. 昨日完成工作 登录界面的进一步完善 服务器搭建 建立数据库 3. 今日完成工作 发布和提供需求功能的实现 用户修改自己的信息 用户界面设计 管理员界面设计 4. 工作 ...
- 【Linux】- 六个超赞的字符画生成器
ASCII是一个非常吸引人的字符编码系统,在计算机,通讯设备,以及其他设备中,通过它来用代码表示字符.新生代的人可能会觉得它已经过时了,但是那些熟悉它的人会懂得ASCII是多么的独特.我们在这里为你准 ...
- Mac 常用快捷键整理
Mac下常用的快捷键: Command+W 将当前窗口关闭(可以关闭Safari标签栏,很实用) Command+Option+M 将所有窗口最小化 Command+Q 关闭当前应用程序(相当于Doc ...
- brush
简介 Brushing是一个通过点击或触摸来选择一个一维或二维区域的交互操作,比如可以通过点击鼠标并移动. brush经常被用来选择离散的元素比如散点图中的点或桌面上的文件等.它也可以被用来放大选中的 ...