(简单贪心)CodeForces 994B-Knights of a Polygonal Table

2024-03-08 12:58

本文主要是介绍(简单贪心)CodeForces 994B-Knights of a Polygonal Table,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • (简单贪心)CodeForces 994B-Knights of a Polygonal Table

 


  • 题目链接:B. Knights of a Polygonal Table

  • 思路:

题目大意是有n个杀手,每个杀手最多能杀k个Power值比他小的人,给出n个杀手各自的Power值和Money数,问每个杀手最多能获得多少Money

定义一个结构体,内含杀手的原始索引(排序会打乱输入顺序,先记录),Power及Money,自定义对杀手Power值进行升序排序,排序后每个杀手能可能杀的人只可能位于他前面,用优先队列对前面的杀手进行入队,在k和索引范围内弹队出金钱最多的人,杀手最大金钱数等于杀的人钱数加上自身钱数

一开始我全部用sort,会超时,所以改用了优先队列,但优先队列在弹出金钱数最多杀手时需要同时出队,但是这些杀手在后面仍有可能被杀,所以用一个Temp优先队列先存出队的杀手,过后再入队。

  • 代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
using namespace std;
#define MAX_SIZE 100005
struct Knight{int index;long long Power;long long Money;bool operator<(Knight b)const    //不加const系统报错{return this->Money<b.Money;}
};Knight Member[MAX_SIZE];
long long Res[MAX_SIZE];   //储存杀手最大金钱
bool Mycmp_1(Knight a,Knight b)   //对能力值升序
{return a.Power<b.Power;
}int main()
{int n,k;while(cin>>n>>k){priority_queue<Knight> Kill_List;priority_queue<Knight>Temp_que;   //暂存出队杀手for(int i=0;i<n;i++){scanf("%lld",&Member[i].Power);Member[i].index=i;    //记录下原始索引}for(int i=0;i<n;i++)scanf("%lld",&Member[i].Money);sort(Member,Member+n,Mycmp_1);   //先对能力值升序Kill_List.push(Member[0]);   for(int i=0;i<n;i++){Res[Member[i].index]=Member[i].Money;   //杀手自己有的钱数if(i==0)continue;for(int j=0;j<k&&j<=i-1;j++){Temp_que.push(Kill_List.top());   //保存tempRes[Member[i].index]+=Kill_List.top().Money;  //杀比自己弱的人中钱多的Kill_List.pop();  //出队}while(!Temp_que.empty()){Kill_List.push(Temp_que.top());   将temp重新回到Kill_ListTemp_que.pop();}Kill_List.push(Member[i]);   //已经完成的杀手入队}for(int i=0;i<n;i++)cout<<Res[i]<<" ";cout<<endl;}
}

 

这篇关于(简单贪心)CodeForces 994B-Knights of a Polygonal Table的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

Pandas透视表(Pivot Table)的具体使用

《Pandas透视表(PivotTable)的具体使用》透视表用于在数据分析和处理过程中进行数据重塑和汇总,本文就来介绍一下Pandas透视表(PivotTable)的具体使用,感兴趣的可以了解一下... 目录前言什么是透视表?使用步骤1. 引入必要的库2. 读取数据3. 创建透视表4. 查看透视表总结前言

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab