【CodeForces 996E Leaving the Bar】【 贪心 】 【多次随机 random_shuffle】【选择向量的方向,使得最后向量的模小于范围】

本文主要是介绍【CodeForces 996E Leaving the Bar】【 贪心 】 【多次随机 random_shuffle】【选择向量的方向,使得最后向量的模小于范围】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【题意】

给你n个向量,你可以改变他们的符号,使得这些向量之和的长度小于1.5e6。

【思路】

容易想到贪心的大致思路:让尽量在选择的过程中让中间值的模长的绝对值尽可能小。但是也很容易想到反例。

博客中广泛采用 贪心+多次随机,一次贪心固定的选择可能选择不了好的结果,但是随机打乱数组的顺序,多次贪心使得得到结果

 

代码会好写,思想第一次遇到

【代码】

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll maxn = 1e5 + 5;
const ll mod = 1e9 + 7;struct node {ll x, y, id;
}k[maxn];ll flag[maxn];int main() {ll n;while (~scanf("%lld", &n)) {for (ll i = 1; i <= n; i++) {scanf("%lld%lld", &k[i].x, &k[i].y);k[i].id = i;}while (1) {ll X = 0, Y = 0;for (ll i = 1; i <= n; i++) {if ((X+k[i].x)*(X+k[i].x) + (Y+k[i].y)*(Y+k[i].y) < (X-k[i].x)*(X-k[i].x) + (Y-k[i].y)*(Y-k[i].y)) {flag[k[i].id] = 1;X += k[i].x;Y += k[i].y;}else {flag[k[i].id] = -1;X -= k[i].x;Y -= k[i].y;}}if (X*X + Y * Y <= 1.5e6*1.5e6) {break;}random_shuffle(k + 1, k + 1 + n);}for (ll i = 1; i <= n; i++) {if (i != 1)printf(" ");printf("%d", flag[i]);}}
}

 

这篇关于【CodeForces 996E Leaving the Bar】【 贪心 】 【多次随机 random_shuffle】【选择向量的方向,使得最后向量的模小于范围】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/244705

相关文章

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

exfat和ntfs哪个好? U盘格式化选择NTFS与exFAT的详细区别对比

《exfat和ntfs哪个好?U盘格式化选择NTFS与exFAT的详细区别对比》exFAT和NTFS是两种常见的文件系统,它们各自具有独特的优势和适用场景,以下是关于exFAT和NTFS的详细对比... 无论你是刚入手了内置 SSD 还是便携式移动硬盘或 U 盘,都需要先将它格式化成电脑或设备能够识别的「文

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

基于Python实现多语言朗读与单词选择测验

《基于Python实现多语言朗读与单词选择测验》在数字化教育日益普及的今天,开发一款能够支持多语言朗读和单词选择测验的程序,对于语言学习者来说无疑是一个巨大的福音,下面我们就来用Python实现一个这... 目录一、项目概述二、环境准备三、实现朗读功能四、实现单词选择测验五、创建图形用户界面六、运行程序七、

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ