codeforces 851 #432 div2 C Five Dimensional Points

2023-11-04

Problem

codeforces.com/contest/851/problem/C

Preference

Codeforces Round #432 editorial
Codeforces Round #432 (Div. 2) - C - Five Dimensional Points

Meaning

有 n 个五维空间里的点,构成点集。对于任意一个点 a,如果点集中存在任意两个不相同的点 b 和 c(也不和 a 相同),使得向量 ab ac 的夹角小于 90 ,则 a 是bad,否则 a 是good。输出所有good的点。

Analysis

在二维平面中,对任意一个点,如果它是good,那么平面中除了它之外最多只能有另外 4 的点,分别在它的:x 轴正半轴方向、负半轴方向、y 轴正半轴方向、负半轴方向上(反正就是 4 个直角,可以把坐标系旋到这种分布)。再多一个点,必然会形成小于 90 的情况。
到三维空间,就再加多两个点:z 轴正、负半轴方向上。
以此类推,五维空间里最多就只能存在另外 10 个点(加上good点自己 11 个),否则一个good点都没有。
题目判夹角小于 90 是用 arccos(x⃗ y⃗ |x⃗ ||y⃗ |) 。因为向量夹角范围是 [0,π] ,观察arccos [0,π] 的函数图像可以发现,夹角小于 90 等价于 x⃗ y⃗ >0

Code

#include <cstdio>
#include <cstring>
using namespace std;
const int N = 1000, D = 5;

int p[N][D]; // 点
int vec[N][N][D]; // vec[i][j]:向量 ij
int ans[N]; // 答案序列
bool ok[N]; // good 点为 true
bool vis[N][N]; // vec[i][j] 是否计算过

int main()
{
    int n;
    scanf("%d", &n);
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < D; ++j)
            scanf("%d", p[i]+j);
    // 多于 11 个点 -> 必无 good 点
    if(n > 11)
    {
        puts("0");
        return 0;
    }
    memset(vis, false, sizeof vis);
    memset(ok, true, sizeof ok);
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < n; ++j)
        {
            if(i == j)
                continue;
            // 计算向量 ij 和 ji
            if(!vis[i][j])
            {
                vis[i][j] = vis[j][i] = true;
                for(int k = 0; k < D; ++k)
                {
                    vec[i][j][k] = p[j][k] - p[i][k];
                    vec[j][i][k] = -vec[i][j][k];
                }
            }
            // 判点 i 是否为 good
            for(int k = 0, dot; ok[i] && k < j; ++k)
            {
                dot = 0; // 向量 ij 和 ik 的点积
                for(int l = 0; l < D; ++l)
                    dot += vec[i][k][l] * vec[i][j][l];
                // 点积大于 0 -> 小于 90 度 -> bad
                if(dot > 0)
                    ok[i] = false;
            }
        }
    int cnt = 0;
    for(int i = 0; i < n; ++i)
        if(ok[i])
            ans[cnt++] = i + 1;
    printf("%d\n", cnt);
    for(int i = 0; i < cnt; ++i)
        printf("%d%c", ans[i], i == cnt - 1 ? '\n' : ' ');
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

codeforces 851 #432 div2 C Five Dimensional Points 的相关文章

  • ACM--田忌赛马--贪心--HDOJ 1052--Tian Ji -- The Horse Racing

    HDOJ题目地址 传送门 Tian Ji The Horse Racing Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total S
  • gym 101505 CTU Open Contest 2016 G Orchard Division

    Problem codeforces com gym 101505 attachments vjudge net contest 187874 problem G Meaning 一个 m m 的网格 长 宽下标 0 m 1 里有 n 个点
  • 火星探险 (Mars)

    暂无链接 题目描述 在2051年 若干火星探险队探索了这颗红色行星的不同区域并且制作了这些区域的地图 现在 Baltic空间机构有一个雄心勃勃的计划 他们想制作一张整个行星的地图 为了考虑必要的工作 他们需要知道地图上已经存在的全部区域的大
  • Codeforces Round #561 (Div. 2)ABC

    三个题 各位大佬别喷我 我很菜 A Silent Classroom There are n students in the first grade of Nlogonia high school The principal wishes
  • Codeforces 1454B Unique Bid Auction(模拟)

    Description 题目大意 找到一个序列中唯一且是最小的那个数的下标 感叹我的语言描述真是越来越精炼了 解题思路 算法标签 模拟 记录每个数字出现的次数以及其下标 然后从1开始寻找 第一个找到的数字的下标就是答案 没什么难度 只是不想
  • 奇异值分解方法求解最小二乘问题的原理

    文章目录 一 奇异值分解 SVD 原理 1 1 回顾特征值和特征向量 1 2 SVD的定义 1 3 求出SVD分解后的U V矩阵 1 4 SVD计算举例 1 5 SVD的一些性质 二 线性最小二乘问题 2 1 最小二乘问题复习 2 2 奇异
  • 《数字图像处理》学习总结及感悟:第二章数字图像基础(5)数学工具

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 本系列文章记录老猿自学冈萨雷斯 数字图像处理 的感悟和总结 不过估计更新会比较慢 白天要工作 都是晚上抽空学习 学习完一章再回头总结
  • ACM-子串(字符串处理)

    问题描述 有一些由英文字符组成的大小写敏感的字符串 请写一个程序 找到一个最长的字符串 x 使得 对于已经给出的字符串中的任意一个 y x 或者是 y 的子串 或者 x 中的字符反序之后得到的新字符串是 y 的子串 输入数据 输入 输入的第
  • 判断一个点是否在圆内(三点确定一个圆)

    三角形的外接圆圆心是任意两边的垂直平分线的交点 三角形外接圆圆心叫外心
  • 介值定理究竟在讲什么?

    介值定理 书本上的定义 翻译成人话就是 函数最原始的定义 我们初中就知道 一个函数最根本的性质就是 函数值 自变量值 一一对应 所以介值定理就是在反复说一件事 一个数如果属于值域 在定义域内 一定能够找到一个 自变量 与其对应 当然这个结论
  • 《剑指Offer》62:圆圈中最后剩下的数字(约瑟夫环)

    题目 0 1 2 n 1这n个数字排成一个圆圈 从数字0开始 每次从这圆圈你删除第m个数字 求出这个圆圈里剩下的最后一个数字 例如 0 1 2 3 4这5个数字组成一个圆圈 从数字0开始每次删除第3个数字 则删除的前4个数字依次2 0 4
  • hdu 3966 Aragorn's Story

    Problem acm hdu edu cn showproblem php pid 3966 Reference 树链剖分 树链剖分原理 树链剖分详解及模板 HDU3966 树链剖分 Meaning 一棵 n 个点的树 每给结点有个值 三
  • 18. 线性代数 - 线性变换

    文章目录 线性空间 线性变换 线性变换的几何意义 特征值与特征向量 NumPy的矩阵操作 Hi 你好 我是茶桁 经历了几节线性代数课程之后 终于咱们到了最后一节课了 本节课的内容说多不多 说少也不少 我们先是要理解一下线性空间和线性变换 并
  • Ugly Numbers

    题目描述 Ugly numbers are numbers whose only prime factors are 2 3 or 5 The sequence 1 2 3 4 5 6 8 9 10 12 shows the first 1
  • Phase Sensitive Filter

    复数转换 如下图复数 由于 所以 这个就是复数的三角形式 这里 是模 是辅角 在讨论音频频域 即stft变换后的复数时 分别称为幅值和相位 根据欧拉公式 其中i是虚数符号 可得 这个公式可以方便地把幅值和相位还原回复数 进而做istft 将
  • Matrix calculus(矩阵微积分)(前四节)

    原文地址 https en wikipedia org wiki Matrix calculus 注 不要把它和几何运算或者是向量运算混淆 前言 在数学中 矩阵微积分是进行多变量微积分的一种特殊符号 特别是在矩阵的空间上 它将关于许多变量的
  • Codeforces 1475C. Ball in Berland(二元容斥)

    题目传送门 题意 一个班级有a个男生和b个女生 现在这个班级有k对男女愿意一起出席毕业典礼 这里注意k对男女中可能会有某个男生或女生出现在多个pair中 你从这k对中找出两对 使得这两对中的男生不相同 女生不相同 即一个男生或女生不可能在一
  • 我的百度经验目录

    百度经验目录 进一步了解基于Mathematica的图像特征检测方法 http jingyan baidu com article a501d80c44a372ec630f5eb4 html 怎么把python代码打包成exe文件 http
  • 蓝桥杯 填字母游戏(博弈论)

    小明经常玩 LOL 游戏上瘾 一次他想挑战K大师 不料K大师说 我们先来玩个空格填字母的游戏 要是你不能赢我 就再别玩LOL了 K大师在纸上画了一行n个格子 要小明和他交替往其中填入字母 并且 1 轮到某人填的时候 只能在某个空格中填入L或
  • 高中数学:不等式(初接高)

    1 二次不等式 2 分式不等式 最后的例题 是为了说明第三种情况 就是 不等号右边不为0时 要先进行移项操作 将右边化为0 这样 就转化成1 2两种情况了 3 其它复杂不等式 3 1 高次不等式 3 2 绝对值不等式 3 3 根式不等式 补

随机推荐

  • DocArray 和 Redis 联手,让推荐系统飞起来

    在DocArray中使用Redis后端 基于向量相似性搜索可以快速搭建一个实时商品推荐系统 现在 跟上我们的脚步 一起了解搭建系统的关键步骤 并且深入了解推荐的原理吧 推荐系统会根据用户画像 历史行为 如购买 喜欢 浏览等 给用户的兴趣建模
  • 36.求解简单的四则运算表达式,输入一个形式如“操作数  运算符  操作数”的四则运算表达式,输出运算结果

    36 求解简单的四则运算表达式 输入一个形式如 操作数 运算符 操作数 的四则运算表达式 输出运算结果 include
  • SpringCloud(注册中心)

    分布式架构与微服 restfu分格 入参的分格 rest分格 请求的分格 微服务 单体架构的应用场景 微服务的应用场景 上百个服务 服务于服务之间是有依赖关系的 什么是springcloud 当下流行的微服务 注册中心Eureka 注册中心
  • LeetCode-336.回文对、字典树、字符串翻转

    给定一组唯一的单词 找出所有不同 的索引对 i j 使得列表中的两个单词 words i words j 可拼接成回文串 示例 1 输入 abcd dcba lls s sssll 输出 0 1 1 0 3 2 2 4 解释 可拼接成的回文
  • N进制转十进制-C语言

    N进制到十进制 include
  • linux下eclipse集成tomcat(tomcatforEclipse)开发

    TomcatforEclipse http www eclipsetotale com 用linux 中的uzip 解压 zip 解压缩后 把解压后的文件夹放到 eclipse中的plugins中 插件特点 1 启动和停止Tomcat 4
  • IEnumerable和IEnumerator 详解

    初学C 的时候 老是被IEnumerable IEnumerator ICollection等这样的接口弄的糊里糊涂 我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质 下面我们先看IEnumerable和IEnu
  • Open3D Ransac点云球面拟合(python详细过程版)

    目录 一 算法原理 二 代码实现 三 结果展示 一 算法原理 见 1 Open3D 最小二乘拟合空间球 2 Open3D RANSAC三维点云球面拟合 二 代码实现 import open3d as o3d import numpy as
  • 快速排序(四)—— 非递归排序

    前面实现了快排的递归实现 并对其进行优化 但是递归需要在栈上为函数开辟空间 32位下 栈可使用的内存大小不超过2G 如果递归较深 依然可能会发生栈溢出 这个时候递归排序就不大适用 所以需要非递归出场 1 基础思路 1 新建一个队列 队列中存
  • 汇编程序设计与计算机体系结构,《汇编程序设计与计算机体系结构:软件工程师教程》 —3.2 基本元素...

    3 2 基本元素 与高级语言不同 汇编语言是一种底层语言 它的每一行代码只执行一项操作 要想写出汇编代码 必须了解与计算机体系结构有关的一些细节 例如 CPU 寄存器 标志位 以及浮点运算功能等 对于编程新手来说 通过这些底层细节编写汇编代
  • 【Windows】DNS优选(挑选最合适的DNS服务器)

    引言 笔者在之前的文章详解DNS服务 DNS解析 DNS劫持和污染中已经详细介绍过 DNS 了 今天给大家带来一款免费的 DNS 优选工具 仅适用 Windows 帮助大家提高上网速度 拒绝 DNS 劫持 获得更佳的上网体验 下载 官网地址
  • centos7下安装Hadoop伪分布式

    虚拟机或服务器准备 安装centos7的操作系统 安装过程请自行百度 查看是否可以通网络 使用ping 163 com 如果ping不通 可以修改网卡 一般在 etc sysconfig network scripts 的文件夹下 修改if
  • 网络安全之信息收集

    第一部分 被动信息收集 如果你对网络安全入门感兴趣 那么你需要的话可以点击这里 网络安全重磅福利 入门 进阶全套282G学习资源包免费分享 1 简介 在信息收集这块区域 我将其分为两部分 第一部分即被动信息收集 第二部分即主动信息收集 对于
  • zerotier源码编译注意事项

    1 事先安装好rust 后续编译中会用到cargo 2 切换镜像源后在make Rust使用国内Crates 源 rustup源 字节跳动新的 Rust 镜像源以及安装rust rust 国内源 西京刀客的博客 CSDN博客 3 如果是比较
  • 2022杭电多校(十)

    2022杭电多校 十 文章目录 2022杭电多校 十 一 比赛小结 二 题目分析及解法 基础题 1001 Winner Prediction 1003 Wavy Tree 1004 Average Replacement 1007 Even
  • idea设置包分成显示

    分层显示之前 分层设置 取消分层显示后
  • 各种系统架构图与详细说明

    原文 各种系统架构图与详细说明 共享平台逻辑架构设计 如上图所示为本次共享资源平台逻辑架构图 上图整体展现说明包括以下几个方面 1 应用系统建设 本次项目的一项重点就是实现原有应用系统的全面升级以及新的应用系统的开发 从而建立行业的全面的应
  • 两个栈实现一个队列的功能

    1 栈 是限制的线性表插入删除必须在同一端完成 栈的特点 先进后出 入栈将数据沉入栈底 最上面的一个数据是栈顶 获取栈顶元素Top 之后要进行Pop 删除栈顶 才可以取到第二个数据 2 队列 也是对线性表的一种限定 规定插入删除数据必须在异
  • R手册(Syntax)--magrittr

    magrittr pipe lhs gt rhs forward pipe lhs为rhs第一个参数时 x gt f y 等价于 f x y lhs在任意位置时 用点 代替 z gt f x y arg 等价于 f x y arg z rh
  • codeforces 851 #432 div2 C Five Dimensional Points

    Problem codeforces com contest 851 problem C Preference Codeforces Round 432 editorial Codeforces Round 432 Div 2 C Five