【偶然一题】CF1979C. Earning on Bets | 思维 | 绕证明绕出来了

2024-06-12 17:44

本文主要是介绍【偶然一题】CF1979C. Earning on Bets | 思维 | 绕证明绕出来了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目内容

原题链接

给你一个长度为 n n n 的数组 a a a ,让你构造一个数组 b b b
满足对于 1 ≤ i ≤ n 1\leq i\leq n 1in, 都有 a i × b i > ∑ j = 1 n b j a_i\times b_i> \sum\limits_{j=1}^n b_j ai×bi>j=1nbj

数据范围

  • 1 ≤ n ≤ 50 1\leq n\leq 50 1n50
  • 2 ≤ a i ≤ 20 2\leq a_i\leq 20 2ai20

题解

s u m = b 1 + b 2 + ⋯ + b n sum=b_1+b_2+\cdots+b_n sum=b1+b2++bn

根据 a i × b i > s u m a_i\times b_i> sum ai×bi>sum,有 b i > ⌊ s u m a i ⌋ + 1 > s u m a i ( 存在小数 ) b_i>\lfloor \frac{sum}{a_i}\rfloor +1>\frac{sum}{a_i} (存在小数) bi>aisum+1>aisum(存在小数)

b i > s u m a i b_i>\frac{sum}{a_i} bi>aisum

b 1 + b 2 + ⋯ + b n > s u m a 1 + s u m a 2 + ⋯ s u m a n b_1+b_2+\cdots +b_n>\frac{sum}{a_1}+\frac{sum}{a_2}+\cdots \frac{sum}{a_n} b1+b2++bn>a1sum+a2sum+ansum

s u m > s u m × ( 1 a 1 + 1 a 2 + ⋯ 1 a n ) sum>sum\times (\frac{1}{a_1}+\frac{1}{a_2}+\cdots \frac{1}{a_n}) sum>sum×(a11+a21+an1)

约分得到 1 > 1 × ( 1 a 1 + 1 a 2 + ⋯ 1 a n ) 1>1\times (\frac{1}{a_1}+\frac{1}{a_2}+\cdots \frac{1}{a_n}) 1>1×(a11+a21+an1)

即给定的数组 a a a 满足上述条件则是有答案的。

但是小数存在计算误差,我们只需要选择一个合适的 s u m sum sum 即可,这个数最小是所有 a i a_i ai 的最小公倍数。

计算后进行判断即可。

时间复杂度: O ( n log ⁡ max ⁡ ( a i ) ) O(n\log \max(a_i)) O(nlogmax(ai))

代码

#include <bits/stdc++.h>
using namespace std;int lcm(int a, int b) {return int(1ll * a * b / gcd(a, b));
}void solve() {int n;cin >> n;vector<int> a(n);int g = 1;for (int i = 0; i < n; ++i) {cin >> a[i];g = lcm(g, a[i]);}long long sum = 0;for (int i = 0; i < n; ++i) {sum += g / a[i];}if (sum >= g) {cout << "-1\n";return;}for (int i = 0; i < n; ++i) {cout << g / a[i] << " \n"[i + 1 == n];}
}int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int T = 1;cin >> T;while (T--) {solve();}return 0;
}

这篇关于【偶然一题】CF1979C. Earning on Bets | 思维 | 绕证明绕出来了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

电脑没有仿宋GB2312字体怎么办? 仿宋GB2312字体下载安装及调出来的教程

《电脑没有仿宋GB2312字体怎么办?仿宋GB2312字体下载安装及调出来的教程》仿宋字体gb2312作为一种经典且常用的字体,广泛应用于各种场合,如何在计算机中调出仿宋字体gb2312?本文将为您... 仿宋_GB2312是公文标准字体之一,仿China编程宋是字体名称,GB2312是字php符编码标准名称(简

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控

颠覆你的开发模式:敏捷思维带来的无限可能

敏捷软件开发作为现代软件工程的重要方法论,强调快速响应变化和持续交付价值。通过灵活的开发模式和高效的团队协作,敏捷方法在应对动态变化和不确定性方面表现出色。本文将结合学习和分析,探讨系统变化对敏捷开发的影响、业务与技术的对齐以及敏捷方法如何在产品开发过程中处理持续变化和迭代。 系统变化对敏捷软件开发的影响 在敏捷软件开发中,系统变化的管理至关重要。系统变化可以是需求的改变、技术的升级、

【无线通信发展史⑧】测量地球质量?重力加速度g的测量?如何推导单摆周期公式?地球半径R是怎么测量出来的?

前言:用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注,你们的鼓舞是我继续更新的动力。 我为什么会写这个系列呢? 首先肯定是因为我本身就是一名从业通信者,想着更加了解自己专业的知识,所以更想着从头开始了解通信的来源以及在每一个时代的发展进程。 为什么会从头开始写通信? 我最早是学习了中华上下五千年,应该说朝代史,这个算个人兴趣,从夏

0906作业+思维导图梳理

一、作业: 1、创捷一个类似于qq登录的界面 1)源代码 #include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);//QPushbutton:登录、退出this->join = new QP

[机缘参悟-222] - 系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进(软件系统、思维方式、亲密关系、企业系统、商业价值链、中国社会、全球)

目录 前言:系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进 一、软件系统的重构 1、重构的定义与目的 2、重构的时机与方法 3、重构的注意事项 4、重构的案例分析 二、大脑思维的重构 1、大脑思维重构的定义 2、大脑思维重构的方法 3、大脑思维重构的挑战与前景 三、认知的重构 1、定义 2、目的 3、方法 四、实例 五、总结 四、婚姻家庭的重构 1、婚

每日一题~cf 970 div3 (A思维,B小模拟,C二分,D排列数建图成环,E 26个字母暴力+前缀和,F 逆元,G 数论gcd )

A 题意: 有 a 个1 ,b 个2.问是否能将这些数划分为两个数值相等的集合。 输出 YES 或者 NO —————— 问题等价于 将数组 分成两个数值相同的数组。所以sum 应该是偶数。也就是说 1 的个数是偶数。在i1的个数是偶数的情况下,将 2 分成两份,如果2 的个数是偶数,OK。如果是奇数那么需要1来补齐,如果1 的个数大于等于2那么可以补齐。(1 的个数是偶数,需要2个1来补齐,剩下

散户炒股票为什么进步慢,学习程序化交易思维

炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取股票实时数据和历史数据 Python炒股自动化(3):分析取回的实时数据和历史数据 Python炒股自动化(4):通过接口向交易所发送订单 Python炒股自动化(5):通过接口查询订单,查询账户资产 散户炒股的常见难题

数业智能心大陆告诉你如何培养孩子的批判性思维?

现今的教育体系自小学起便强调培养孩子的批判性思维,这种能力被视为在复杂世界中生存和发展的关键。在当今信息爆炸的时代,它能让我们在海量信息中辨别真伪、深入思考并做出明智决策。如今,如数业智能心大陆产出的AI 心理咨询平台的出现为培养孩子批判性思维提供了新可能,其通过互动引导孩子思考,助力孩子提升批判性思维能力。 什么是批判性思维呢? 批判性思维是一种思考方式,它能够使我们在接收信

Mybatis like 模糊查询,有数据,但是就是查询不出来

今天修改项目遇到的问题,mybatis模糊查询,有数据,就是查不出来。也不报错。 问题虽然最后搞定了,来总结下。 Mybatis配置如下:<select id="getAll" resultMap="OaEmplyeeInfoResultMap"parameterType="com.deppon.oa.module.oaEmplyeeInfo.domain.OaEmplyeeInfo"