【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

相关文章

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

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

使用C#如何创建人名或其他物体随机分组

《使用C#如何创建人名或其他物体随机分组》文章描述了一个随机分配人员到多个团队的代码示例,包括将人员列表随机化并根据组数分配到不同组,最后按组号排序显示结果... 目录C#创建人名或其他物体随机分组此示例使用以下代码将人员分配到组代码首先将lstPeople ListBox总结C#创建人名或其他物体随机分组

如何选择适合孤独症兄妹的学校?

在探索适合孤独症儿童教育的道路上,每一位家长都面临着前所未有的挑战与抉择。当这份责任落在拥有孤独症兄妹的家庭肩上时,选择一所能够同时满足两个孩子特殊需求的学校,更显得尤为关键。本文将探讨如何为这样的家庭做出明智的选择,并介绍星贝育园自闭症儿童寄宿制学校作为一个值得考虑的选项。 理解孤独症儿童的独特性 孤独症,这一复杂的神经发育障碍,影响着儿童的社交互动、沟通能力以及行为模式。对于拥有孤独症兄

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi