第三题:1920 B. Summation Game

news/2025/2/12 10:51:44/

感觉自己的智慧不够,写不出来这题

我的思路是,先排序,然后Bob肯定是选择x个最大的数字乘以-1Alice要是不移除元素,就会让Bob可以用更大的数字,移除元素会让总和变小,到底要不要移除元素,移除多少个元素,如果要移除元素肯定也是移除大的元素,把排序后的最后k+x个元素拿过来考虑,其他元素是不会影响最终答案的

移除0~k个元素,有k+1种选择,只要Alice做出决定,就可以决定Bob的决定,所以是不是可以直接枚举出答案,k,x2e5范围内

数组下标不知道咋考虑,假设从n-k-x枚举到数组末尾,算了一下确实可以表示能被操作的所有元素

然后用一个类似于滑动窗口的思路来做这题嘛(明天再来试试)

不移除相当于在前面元素的基础上加上一些元素,Bob的操作是前面元素的基础上减去一些元素,所以其实这里的差距是两倍原来的元素

移除的话,差距是两倍Bob操作的元素再加上移除的元素,移除的话,Bob操作的元素会变小,所以就是一个贪心策略

是不是要用前缀和来表示

让最后面的几个元素的和最小就可以保证所有元素的总和最大,这就是Alice的最优策略

但是不知道怎么用代码实现

#include<bits/stdc++.h>using namespace std;const int N=2e5+10;
int a[N];
int s[N];void solve()
{int n,k,x;cin>>n>>k>>x;for(int i=1;i<=n;i++)	cin>>a[i];sort(a+1,a+1+n,greater<int>());for(int i=1;i<=n;i++)	s[i]=s[i-1]+a[i];int ans=-0x3f3f3f3f;for(int i=0;i<=k;i++)ans=max(ans,s[n]-s[min(i+x,n)]-(s[min(i+x,n)]-s[i]));cout<<ans<<endl;
}int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);//cout<<0x3f3f3f3f<<endl;int t;cin>>t;while(t--)solve();return 0;
}

前缀和都想到了,但是没想到是直接维护所有的区间和,其实是可以的,反正只需要遍历一遍,从后往前不好操作,把数组从大往小排序更方便

greater<int>()是按从大到小排序,默认是从小到大排序,less<int>是从小到大排序

要把答案定义为负无穷,只是定义为-2e5还会WA

前缀和查询的式子非常巧妙

1nn个元素,计算公式是n-1+1

每一次计算的时候都需要注意一下

min(i+x,n)就是解决我的下标越界的困惑的,最后维护答案的式子,前面部分就是不会被修改的部分的和,后面部分是Bob操作的部分的和


http://www.ppmy.cn/news/1339051.html

相关文章

nginx配置及性能优化

1. 请简述nginx的工作原理&#xff1f; Nginx的工作原理基于事件驱动模型和异步非阻塞I/O处理机制。 具体来说&#xff0c;Nginx接收到客户端的请求后&#xff0c;会将该请求映射到配置文件中指定的location block。这个过程中&#xff0c;Nginx本身并不执行实际的工作&#…

前端发布静态资源自动增加版本号

前端服务发布&#xff0c;一些css,js文件的响应头会进行强缓存的设置&#xff0c;比如响应头&#xff1a;Cache-Control, Etag, Last-Modified等。结果就是浏览器会缓存这些静态资源文件&#xff0c;如果前端服务迭代发布了&#xff0c;即使静态资源进行了更新&#xff0c;但是…

实体识别与分类方法综述

目录 前言1 实体识别简介2 基于模板和规则的方法3 基于序列标注的方法3.1 常见序列标注模型3.2 模型参数估计和学习问题3.3 常见序列预测模型 4. 基于深度学习的实体识别方法5 基于预训练语言模型的实体识别5.1 BERT、GPT等预训练语言模型5.2 解码策略 6 特殊问题与挑战6.1 标签…

mac 12.7.3 Unity 2021.3.14 XCode 14.2 成功将unity游戏编译到IPhone中,并上架appstore

上一篇文章 mac 10.15.7 & Unity 2021.3.14 & XCode 12.4 -&#xff1e; Unity IOS 自动安装 Cocoapods 失败解决方法 从上一篇文章完成后&#xff0c;unity 已经可以导出 xcode 工程&#xff0c;但是&#xff0c;app是没法上架到appstore上的&#xff0c;原因如下&am…

简单实践 java spring cloud 负载均衡

1 概要 1.1 实现一个最简单的微服务。远程调用负载均衡&#xff0c;基本上完成了最核心的微服务框架。 远程调用&#xff1a;RestTemplate 注册中心&#xff1a;eureka 负载均衡&#xff1a;Ribbon 1.2 要点 1.2.1 依赖 1.2.1.1 主框架依赖 spring boot 依赖 <depe…

计算机图形学 实验

题目要求 1.1 实验一&#xff1a;图元的生成&#xff1a;直线、圆椭区域填充 你需要完成基本的图元生成算法&#xff0c;包括直线和椭圆。 在区域填充中&#xff0c;要求你对一个封闭图形进行填充。你需要绘制一个封 闭图形&#xff08;例如多边形&#xff09;&#xff0c;并选…

sql注入之字符型注入

字符型注入 字符型注入就是用户在前端的输入未经过过滤或处理用户输入的字符串插入到后端数据库查询语句&#xff0c;后端的SQL查询语句将参数值用引号或者括号等特殊符号包裹起来&#xff0c;改变了原有的查询语句&#xff0c;从而形成字符型注入。 具体操作 1、判断是否存…

MyBatis概述与MyBatis入门程序

MyBatis概述与MyBatis入门程序 一、MyBatis概述二、入门程序1.准备开发环境&#xff08;1&#xff09;准备数据库&#xff08;2&#xff09;创建一个maven项目 2.编写代码&#xff08;1&#xff09;打包方式和引入依赖&#xff08;2&#xff09;新建mybatis-config.xml配置⽂件…