1080 国王游戏

NOIP/P1080 国王游戏 -- 贪心+高精度 题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。 国王不希望某一个大臣获得特别多... 阅读详情

1080 国王游戏

首先,需要把题目进行提炼
国王有n个大臣,他们每一个人,左右手各有一个数,ai,bi国王要他们站成一排(国王自己站在前面),随后给每个大臣奖赏
对于每一个大臣如果他前面的人左手上的数乘积是A,他自己右手上的是bi,那么他会获得A/bi的奖赏,国王想要让获得奖赏最多的大臣获得的尽量少,请你安排一种顺序满足他的要求,并输出最多大臣最少获得奖赏
记住一个思路,先考虑入局很小的情况,往往是有帮助的
从而推出公式
如果只有两个大臣,两个大臣的必要条件是,大臣2放在大臣1前面得到的最大值更小,那么我们分别讨论两种情况的最大值
1.如果大臣1在前面,他俩的金币数分别为
a0/b1,a0a1/b2
2.如果大臣2在前面,他俩的金币数分别为
a0/b2,a0
a2/b1
首先我们先约去式子中的a0,然年后分别讨论两种情况的最大值,就变成了比较:
max(1/b1,a1/b2)和max(1/b2,a2/b1)的大小
根据a是正整数的条件,我们可以得出
a1/b2>=1/b2,1/b1<=a2/b1
那么如果1/b1是最大的,那么就有1/b1>=a2/b1只可能左右两边相等,那么就有1/b2<=b2/b1所以两种情况的最大值是一样的,不用交换,变形之后得a1b1>a2b2
所以 ,我们只需要对a*b进行排序就好了
--------重新----------------
这个题很恶心
该大臣的金币数量,排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果
明白题意了
这个国王想搞获得最多的大臣
所以,这个题是什么贪心算法

#include<string.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
struct node{
   
   
	int a,b;
	char cnta[10000],all[10000];//cnta 为前面所有a的乘积的逆序 all为乘积正序 
	char ca[100];//转化后的字符数组 
	char ans[10000];//金币的数量 
	int lans;
}da[1001];
bool cmp(node a,node b)
{
   
   
	return a.a*a.b<b.a*b.b;
}
bool cmp2(node a,node b)
{
   
   //高精度比较 
	if(a.lans!=b.lans)
		return a.lans>b.lans;
	else
	{
   
   
		int i;
		for(i=0;i<a.lans;i++)
			if(a.ans[i]==b.ans[i])
			 {
   
   
				continue;
			}
			else return a.ans[i]>b.ans[i];
	}
	return 1==1;
}
void doit
洛谷 p1080国王游戏 题解 国王游戏 #include<iostream> #include<vector> #include<string> #include <algorithm> #include <cstring> /*P1080 国王游戏 输入 1 大臣数n 2 国王左手数 国王右手数 3-n+2 大臣左手数 大臣右手数 输出 获得金币最多的大臣... 阅读详情

相关推荐

实现飞书机器人推送消息到指定群组或者用户

飞书是一个集成了聊天、协作和办公功能的企业级平台,广泛应用于企业内部沟通和协作。飞书机器人(Feishu Bot)是一种强大的工具,允许开发者通过编程接口与飞书进行互动,从而实现自动化消息推送和任务管理。本文将详细介绍如何通过飞书机器人推送消息给指定的人或者群组,帮助您快速上手。

qq_41898196的博客 5872

数值计算之 插值法(4)切比雪夫零点插值

数值计算之 插值法(4)切比雪夫零点插值前言插值点选取第一类切比雪夫多项式拉格朗日插值多项式的余项切比雪夫零点插值后记 前言 上篇插值法讨论了多项式插值的解,以及龙格现象。本篇将介绍一种在抽取节点时有效降低龙格现象的方法——切比雪夫零点插值。 插值点选取 插值多项式阶数较高时,在取值空间均匀取点,容易出现龙格现象。 即区间边缘的插值结果与原函数差异很大,而区间中央的插值结果相对较好。这表明,高阶多项式插值对区间中央的节点拟合好,而对两端节点拟合效果差。 自然而然会想到,在两端多采样一些节点,在中间少采样一

qq_41035283的博客 1万+

小爱音箱Play增强版刷机接入大模型:自定义唤醒词与远程控制全攻略

智能音箱作为家庭语音入口,受限于厂商预设技能,难以满足个性化需求。通过串口刷机与Linux系统分区改造,可以完全掌控设备底层,将豆包、通义千问等大模型API接入原有音频链路,实现真正智能的语音问答。自定义唤醒词打破了“小爱同学”的唯一唤醒方式,结合ESP32-S3外挂模块,还能优化远场拾音。更深入的应用在于将音箱打造为家庭中控,通过大模型工具调用解析自然语言指令,实现远程控制电脑、智能灯等设备。本文从设备选型、拆机串口、系统备份到语音链路搭建,完整梳理了小爱音箱Play增强版的改造路径,适合具备动手能力的开

weixin_30036289的博客 729

Palabos User Guide中文解读 | 第一章 | 介绍

译者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,能不能完成全本翻译再说,而且文中我也会标记我不确定的地方,以传达意思为主,翻译不当的地方还请各位读者帮忙指正。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of...

Yulan Fang's notes. 6978

戴尔笔记本装Ubuntu 20.04,别急着分区!先搞定这个BIOS设置(Intel RST避坑指南)

本文详细介绍了在戴尔笔记本上安装Ubuntu 20.04时遇到的Intel RST技术兼容性问题及解决方案。通过安全切换至AHCI模式,避免安装过程中找不到硬盘的常见问题,并提供双系统分区策略和安装后的优化建议,确保Ubuntu与Windows 10双系统稳定运行。

weixin_31315567的博客 273

KEPServerEX6教程:IoT Gateway与MQTT Client实现工业数据双向通信

工业物联网的核心挑战在于异构设备协议与云端平台之间的数据互通。Modbus、S7、OPC UA等现场协议纷繁复杂,而上层应用普遍偏好MQTT、REST等轻量接口,此时需要一个可靠的协议转换层。MQTT作为低带宽、高可靠的发布/订阅消息协议,天然适合工业数据采集与远程控制场景。KEPServerEX6作为工业网关软件,内置IoT Gateway与MQTT Client组件,分别承担数据上行发布与指令下行订阅的职责,形成完整的双向闭环。通过配置Modbus TCP设备驱动、创建Tag、设置MQTT Broker

weixin_33787529的博客 389

ESD防护设计宝典(十一):CE(传导发射)超标问题排查与解决

(Conducted Emission, CE),亦称为传导骚扰,是电子电气设备或系统内部的电压、电流通过信号线、电源线或地线向外传输,对其他电子电气设备或系统造成电磁干扰的物理现象。其。

m0_56451176的博客 857

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 前缀区间和
下一篇: 2672 推销员
CCCCDEV_CCCC
博客等级 码龄6年 18粉丝 381原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值