洛谷B4071 [GESP202412 五级] 武器强化

题目传送门!

思路

我愿称之为gesp5史上最难想。。。

做法:贪心+模拟(or二分)


对于贪心算法来说,最最最无法理解的地方:选择价格最低的配件来转换,还是选择拥有最多配件的其他武器来转换。

选低价的好处是成本低,这个不用说。但选择目前排名最高武器的配件,好处很多,一个是增强自己,还有就是打击对手。

看似这里应该做一个动态规划

但是复杂度实在是太高

所以就想到了应该用贪心的思路来做。

回顾贪心题的基本做法

  1. 把问题分解为很多步
  2. 每步选择一个局部最优的方案
  3. 把这些步骤合并期望得到全局最优解

分解是最关键的!

正解的做法是进行多轮的游戏:在每轮游戏中使用不一样的策略,最后在所有策略中找到一个最好的。

步骤,逻辑

重点来喽!多轮游戏怎么设计

这里用了一种反向思维,从结果倒推过程。

那么 1 号武器赢的时候到底有多少配件?它是怎么赢的?

首先, 1 号武器必须超过所有其他武器,注意,必须是所有!

已知配件总数是m,所以 1 号最多占 m/2+1 个配件就绝对可以胜利。

最少也必须占有 1 个配件才可能胜利(但是其他都必须是 0 )。。

然后再来看它是怎么赢的。

假设 1 号武器赢的时候拥有 x 个配件,那么所有武器最多保留 x−1 个配件,超过这个数量的最便宜的那部分配件肯定是被转换了!

这个费用是必须付的,不管贵不贵,因为真的对于取胜很重要。

如果 1 号武器转换了这些配件还不够 x 个的话,就可以自由地从剩下的配件中进行最低价格选择。

所以这样就可以解决上面的问题!

做法:枚举所有赢时的配件数量,然后用这个逻辑去倒推计算实际的费用。

最后选一个费用最低的方案。

这样就同时得到了费用最低的方案和 1 号武器配件数。

一些复盘启发。。

如果已经明确了取胜的数量,那就是一个纯粹的贪心。

但实际上来看,找出最优解靠的不是贪心,而是枚举!

那么数量特别大的时候,还可以用上二分!

贪心关注的是局部,局部最优解导致全局最优解。

重点:看似动态规划,实则贪心+枚举(or二分)

最后附上一个小警告:最小值要达到1e18,还有这个题优先队列做40pts

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n, m;
vector<int> a[1010];
ll all(int aim)
{
    int cnt = a[1].size();
    ll res = 0;
    vector<int> tmp;  
    for (int i = 2; i<=n; i++)
	{
        int buy = max((int)a[i].size() - aim + 1, 0);
        for (int j = 0; j < buy; j++)
		{
            res += a[i][j];
        }
        cnt += buy;
        for (int j = buy; j < a[i].size(); j++)
		{
            tmp.push_back(a[i][j]);
        }
    }
    sort(tmp.begin(), tmp.end()); 
    for (int i = 0; i < aim - cnt; i++)
	{
        res += tmp[i];
    }
    return res;
}
int main()
{
    cin >> n >> m;
    for (int i = 1; i <=m; i++)
	{
        int p, c;
        cin >> p >> c;
        a[p].push_back(c);
    }
    for (int i = 1; i <=n; i++)
	{
        sort(a[i].begin(), a[i].end());
    }
    ll ans = 1e18;
    for (int i = 1; i <= m/2+1; i++)
	{
    	ll x= all(i);
		ans = min(ans, x);
	}
	cout << ans;
	return 0;
}

完结撒

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948458.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql自定义安装

1、下载安装包 我是在windows上安装&#xff0c;所以选择“Mysql Installer for Windows” 2、安装mysql 双击“mysql-installer-community-8.0.40.0.msi”&#xff0c;开始启动安装 这里选择安装项&#xff0c;这里只选择了两项。workbench是图形化管理工具&#xff0c;比较吃…

Python、R用深度学习神经网络组合预测优化能源消费总量时间序列预测及ARIMA、xgboost对比...

全文链接&#xff1a;https://tecdat.cn/?p38726 分析师&#xff1a;Qingxia Wang 在能源领域&#xff0c;精准预测能源消费总量对制定合理能源战略至关重要。当前&#xff0c;能源消费预测分析主要运用单一模型&#xff08;如灰色预测法、时间序列分析法等&#xff09;和组合…

AI周报(12.29-1.4)

AI应用-微软BiomedParse一键解析九大成像模式 BiomedParse是一款由微软和华盛顿大学等机构联合开发的生物医学图像解析模型&#xff0c;能够一键解析九大生物医学成像模式。该模型通过文本驱动的方式&#xff0c;整合了包括MRI、CT、病理学等多种成像模式&#xff0c;实现了高…

电商Google广告:2025年提升转化率的5种策略

展望 2025 年&#xff0c;Google 广告领域将迎来一系列显著变化&#xff0c;这些趋势对于提升广告转化率至关重要&#xff0c;值得我们提前关注与布局。 智能化程度持续加深&#xff0c;用户搜索习惯愈发精细&#xff0c;广告格式推陈出新&#xff0c;视频广告势头正猛...那么…

一文讲清楚HTTP常见的请求头和应用

文章目录 一文讲清楚HTTP常见的请求头和应用1. 啥是个HTTP请求头2. 常见的请求头&#xff0c;作用和示例3.协商缓存4.会话状态 一文讲清楚HTTP常见的请求头和应用 1. 啥是个HTTP请求头 一句话&#xff0c;说白了就是限定HTTP传输的一些规则参数&#xff0c;比如Accept&#xf…

Arduino 小白的 DIY 空气质量检测仪(5)- OLED显示模块、按钮模块

最终章 这一章把剩下的OLED显示模块、按钮模块分享一下&#xff0c;当前这个离线无存储的版本&#xff0c;基本告一段落。 如果后续能进化成&#x1f236;存储、联网版本&#xff0c;就再开一个小系列分享一下。 逐个分析 display.h #include <Arduino.h> #include &l…

WandB使用笔记

最近看代码&#xff0c;发现代码中有wandb有关的内容&#xff0c;搜索了一下发现是一个模型训练工具&#xff0c;然后学习了一下&#xff0c;这里记录一下使用过程&#xff0c;方便以后查阅。 WandB使用笔记 登录WandB 并 创建团队安装 WandB 并 登录模型训练过程跟踪模型版本管…

一文理解ssh,ssl协议以及应用

在使用基于密钥的认证方式的时候&#xff0c;私钥的位置一定要符合远程服务器规定的位置&#xff0c;否则找不到私钥的位置会导致建立ssh连接失败 SSH 全称是 “Secure Shell”&#xff0c;即安全外壳协议。 它是一种网络协议&#xff0c;用于在不安全的网络中安全地进行远程登…

Elasticsearch 创建索引 Mapping映射属性 索引库操作 增删改查

Mapping Type映射属性 mapping是对索引库中文档的约束&#xff0c;有以下类型。 text&#xff1a;用于分析和全文搜索&#xff0c;通常适用于长文本字段。keyword&#xff1a;用于精确匹配&#xff0c;不会进行分析&#xff0c;适用于标签、ID 等精确匹配场景。integer、long…

【Ubuntu】 Ubuntu22.04搭建NFS服务

安装NFS服务端 sudo apt install nfs-kernel-server 安装NFS客户端 sudo apt install nfs-common 配置/etc/exports sudo vim /etc/exports 第一个字段&#xff1a;/home/lm/code/nfswork共享的目录 第二个字段&#xff1a;指定哪些用户可以访问 ​ * 表示所有用户都可以访…

【谷歌开发者月刊】十二月精彩资讯回顾,探索科技新可能

我们在今年的尾声中回顾本月精彩&#xff0c;开发者们借助创新技术为用户打造温暖的应用体验&#xff0c;展现技术与实用的结合。欢迎您查阅本期月刊&#xff0c;掌握最新动态。 本月看点 精彩看点多多&#xff0c;请上下滑动阅览 01DevFest 北京站和上海站圆满举办&#xff0c…

浙江中医药大学携手云轴科技ZStack荣获“鼎信杯”金鼎实践奖

近日&#xff0c;2024“鼎信杯”信息技术发展论坛&#xff08;以下简称“论坛”&#xff09;在北京隆重召开。本次论坛汇聚多位领导和专家&#xff0c;以及业内骨干企业、研究机构、用户单位、行业组织代表等500余人&#xff0c;共同探讨信息技术应用创新产业趋势&#xff0c;分…

嵌入式linux系统中CMake的基本用法

第一:CMake的基本使用 在上篇文章中,我们聊了聊 Makefile。虽然它是 C/C++ 项目编译的“老司机”,但写起来真的是让人头大。尤其是当项目文件一多,手写依赖就像在搬砖,费时又费力。 那么问题来了,难道我们就没有更优雅的工具了吗?答案是:有! 这时候,CMake 就像一个…

vulnhub Earth靶机

搭建靶机直接拖进来就行 1.扫描靶机IP arp-scan -l 2.信息收集 nmap -sS -A -T4 192.168.47.132 得到两个DNS; 在443端口处会让我们加https dirb https://earth.local/ dirb https://terratest.earth.local/ #页面下有三行数值 37090b59030f11060b0a1b4e0000000000004312170a…

【AI日记】25.01.04 kaggle 比赛 3-3 | 王慧玲与基层女性

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Forecasting Sticker Sales时间&#xff1a;6 小时 读书 书名&#xff1a;基层女性时间&#xff1a;3 小时原因&#xff1a;虽然我之前就知道这个作者&#xff0c;因为我…

《learn_the_architecture_-_aarch64_exception_model》学习笔记

1.当发生异常时&#xff0c;异常级别可以增加或保持不变&#xff0c;永远无法通过异常来转移到较低的权限级别。从异常返回时&#xff0c;异常级别可能会降低或保持不变&#xff0c;永远无法通过从异常返回来移动到更高的权限级别。EL0级不进行异常处理&#xff0c;异常必须在比…

linux上安装MySQL教程

1.准备好MySQL压缩包&#xff0c;并进行解压 tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C /usr/local 2.检查是否有mariadb数据库 rpm -aq|grep mariadb 关于mariadb:是MySQL的一个分支&#xff0c;主要由开源社区在维护&#xff0c;采用GPL授权许可 MariaDB的目…

量子力学复习

黑体辐射 热辐射 绝对黑体&#xff1a; &#xff08;辐射能力很强&#xff0c;完全的吸收体&#xff0c;理想的发射体&#xff09; 辐射实验规律&#xff1a; 温度越高&#xff0c;能量越大&#xff0c;亮度越亮 温度越高&#xff0c;波长越短 光电效应 实验装置&#xf…

OSI模型的网络层中产生拥塞的主要原因?

&#xff08; 1 &#xff09;缓冲区容量有限&#xff1b;&#xff08; 1.5 分&#xff09; &#xff08; 2 &#xff09;传输线路的带宽有限&#xff1b;&#xff08; 1.5 分&#xff09; &#xff08; 3 &#xff09;网络结点的处理能力有限&#xff1b;&#xff08; 1 分…

Spring Boot 的自动配置,以rabbitmq为例,请详细说明

Spring Boot 的自动配置特性能够大大简化集成外部服务和组件的配置过程。以 RabbitMQ 为例&#xff0c;Spring Boot 通过 spring-boot-starter-amqp 提供了自动配置支持&#xff0c;开发者只需在应用中添加相关依赖并配置必要的属性&#xff0c;Spring Boot 会自动配置所需的连…