codeforces 851C Five Dimensional Points(鸽巢原理)
http://codeforces.com/contest/851/problem/C
题意
- 给出 n 个五维空间的点
- 一个点a为 bad 的定义为 存在两点 b, c, 使的<ab, ac> 为锐角
- 分析
- 在二维平面内, 选取坐标轴原点为a点, 其余点数大于4时, 由鸽巢定理必定有至少两个点位于同一象限, 此时位于统一象限的点与原点夹角为锐角
- 在三维空间内, 选取坐标轴原点为a点, 其余点数大于8时, 同理存在锐角
- 推广, 5维空间内, 除原点外有大于(1<<5) = 32 个时, 必定存在锐角.
所以当点数大于 32+1 的时候, 必定没有好点.
当 n <= 33 时, n^3暴力即可
摘自:http://blog.csdn.net/qq_37764392/article/details/77846093
#include <bits/stdc++.h> using namespace std;
int n;
int p[][];
bool flag[];
bool bad(int i)
{
long long sum;
for(int j=;j<=n;j++)
{
if (j==i) continue;
for(int k=;k<=n;k++)
{
sum=;
if (k==i || k==j) continue;
for(int t=;t<=;t++)
sum+=(long long)(p[j][t]-p[i][t])*(p[k][t]-p[i][t]);
if (sum>) return ;
}
}
return ;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=;j++)
scanf("%d",&p[i][j]); if ( n >= (<<) + ) printf("0\n");
else
{
memset(flag,,sizeof(flag));
int cnt=n;
for(int i=;i<=n;i++)
if( bad(i) ) {cnt--; flag[i]=;}
printf("%d\n",cnt);
for(int i=;i<=n;i++)
if (!flag[i])
{
printf("%d",i);
if (--cnt>) printf(" "); else printf("\n");
}
}
return ;
}
codeforces 851C Five Dimensional Points(鸽巢原理)的更多相关文章
- Codeforces.618F.Double Knapsack(构造 鸽巢原理)
题目链接 \(Description\) 给定两个大小为\(n\)的可重集合\(A,B\),集合中的元素都在\([1,n]\)内.你需要从这两个集合中各选一个非空子集,使它们的和相等.输出方案. \( ...
- Codeforces Round #648 (Div. 2) E. Maximum Subsequence Value(鸽巢原理)
题目链接:https://codeforces.com/problemset/problem/1365/E 题意 有 $n$ 个元素,定义大小为 $k$ 的集合值为 $\sum2^i$,其中,若集合内 ...
- CodeForces 125D【鸽巢原理】
哇塞?开始的三个数其中两个数一定能确定一个序列.(鸽巢原理) #include <bits/stdc++.h> using namespace std; typedef long long ...
- Codeforces 1188C DP 鸽巢原理
题意:定义一个序列的beauty值为序列中元素之差绝对值的最小值,现在给你一个数组,问所有长度为k的子序列的beauty值的和是多少? 思路:(官方题解)我们先解决这个问题的子问题:我们可以求出bea ...
- ACM数论之旅14---抽屉原理,鸽巢原理,球盒原理(叫法不一又有什么关系呢╮(╯▽╰)╭)
这章没有什么算法可言,单纯的你懂了原理后会不会运用(反正我基本没怎么用过 ̄ 3 ̄) 有366人,那么至少有两人同一天出生(好孩子就不要在意闰年啦( ̄▽ ̄")) 有13人,那么至少有两人同一月 ...
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) F. Double Knapsack 鸽巢原理 构造
F. Double Knapsack 题目连接: http://www.codeforces.com/contest/618/problem/F Description You are given t ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
- cf319.B. Modulo Sum(dp && 鸽巢原理 && 同余模)
B. Modulo Sum time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
随机推荐
- C# 将文件转换为 Stream
public Stream FileToStream(string fileName) { // 打开文件 FileStream fileStream = new FileStream(fileNam ...
- FJUT Home_W的gcd(乱搞)题解
题意: 给出一个序列a1,a2,a3,……an. HOME_W想在其中挖掘二元组,其中二元组的挖掘方法如下. 对于任意整数 l,r ,可得到一个二元组(l,gcd(al,al+1,……,ar)). H ...
- redis.conf 配置 详解 中文 2.8
# redis version 2.8.19 # 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1m ...
- linux中C语言发送广播报文
2. 指令的解决方法: oute add -net 255.255.255.255 netmask 255.255.255.255 dev eth0 metric 1 或者 route add -ho ...
- spark-shuffle分析
前言 shuffle是分布式计算系统中最重要的一部分,spark和mapreduce的shuffle的大体思路类似,在实现上有一些区分.Spark提供了插件式的接口,使用者可以通过继承ShuffleM ...
- UVa 1602 网格动物(回溯)
https://vjudge.net/problem/UVA-1602 题意:计算n连通块不同形态的个数. 思路: 实在是不知道该怎么做好,感觉判重实在是太麻烦了. 判重就是判断所有格子位置是否都相同 ...
- HHVM代码规范
原文戳我 本文旨在为HHVM编写C++代码提供一种指南,包括了什么时候.怎么使用各种语言功能,以及代码的格式.我们的目标是确保代码持续高可用的同时,还能容易被阅读和参与贡献,尤其是对新人而言. HHV ...
- shell 无限循环输出时间
#!/bin/bash while(true) do date >> /home/k/a.log sleep done 查看 tail -f /home/k/a.log
- YOLO V1论文理解
摘要 作者提出了一种新的物体检测方法YOLO.YOLO之前的物体检测方法主要是通过region proposal产生大量的可能包含待检测物体的 potential bounding box,再用分类器 ...
- iOS Socket编程-C语言版(UDP)
. UDP Socket编程 先讲一讲UDP编程,因为比TCP要简单多了.首先,我们需要明白UDP是用户数据报协议,英文名为User Datagram Protocol,它是面向无连接的. 注意:So ...