2024.12.22 周日

news/2024/12/23 11:51:38/文章来源:https://www.cnblogs.com/jkkk/p/18623670

2024.12.22 周日


Q1. 1100

You are playing a computer game. The current level of this game can be modeled as a straight line. Your character is in point $0$ of this line. There are $n$ monsters trying to kill your character; the $i$-th monster has health equal to $a_i$ and is initially in the point $x_i$.

Every second, the following happens:

  • first, you fire up to $k$ bullets at monsters. Each bullet targets exactly one monster and decreases its health by $1$. For each bullet, you choose its target arbitrary (for example, you can fire all bullets at one monster, fire all bullets at different monsters, or choose any other combination). Any monster can be targeted by a bullet, regardless of its position and any other factors;
  • then, all alive monsters with health $0$ or less die;
  • then, all alive monsters move $1$ point closer to you (monsters to the left of you increase their coordinates by $1$, monsters to the right of you decrease their coordinates by $1$). If any monster reaches your character (moves to the point $0$), you lose.

Can you survive and kill all $n$ monsters without letting any of them reach your character?


Q2. 1100

Petya has an array $a_i$ of $n$ integers. His brother Vasya became envious and decided to make his own array of $n$ integers.

To do this, he found $m$ integers $b_i$ ($m\ge n$), and now he wants to choose some $n$ integers of them and arrange them in a certain order to obtain an array $c_i$ of length $n$.

Vasya wants to make his array as different as possible from Petya's array. Specifically, he wants the total difference $D = \sum_{i=1}^{n} |a_i - c_i|$ to be as large as possible.

Help Vasya find the maximum difference $D$ he can obtain.


------------------------独自思考分割线------------------------

  • 2道贪心

A1.

  1. 设定距离数组:距离为 $i$ 时怪物血量总和。检查每一个 $i*k<=pre[i]$。

A2.

  1. 一道有意思的贪心,想了很久,证明略难..

------------------------代码分割线------------------------

A1.

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // 交互/调试 关
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
void _();
signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << fixed << setprecision(6);int T = 1;cin >> T;while (T--)_();return 0;
}void _()
{int n, k;cin >> n >> k;vector<int> a(n), x(n), pre(n + 1);for (int &x : a)cin >> x;for (int &x : x)cin >> x;for (int i = 0; i < n; i++)pre[abs(x[i])] += a[i];bool res = 1;for (int i = 1; i <= n; i++){pre[i] += pre[i - 1];if (pre[i] > k * i)res = 0;}cout << (res ? "YES" : "NO") << endl;
}

A2.

#include <bits/stdc++.h>
#define int long long //
// #define endl '\n'     // 交互/调试 关
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
void _();
signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << fixed << setprecision(6);int T = 1;cin >> T;while (T--)_();return 0;
}void _()
{int n, m;cin >> n >> m;struct Node{/* data */int x, i;};vector<Node> a(n + 1);vector<int> b(m + 1), res(n + 1);for (int i = 1; i <= n; i++)cin >> a[i].x, a[i].i = i;for (int i = 1; i <= m; i++)cin >> b[i];sort(a.begin() + 1, a.end(), [](Node &a, Node &b){ return a.x < b.x; });sort(b.begin() + 1, b.end());int la = 1, ra = n, lb = 1, rb = m;while (la <= ra){if (abs(a[la].x - b[rb]) > abs(a[ra].x - b[lb]))res[la] = b[rb], la++, rb--;elseres[ra] = b[lb], ra--, lb++;}int ans = 0;for (int i = 1; i <= n; i++)ans += abs(a[i].x - res[i]);// cout << res[i] << ' ';cout << ans << endl;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker环境利用centos7镜像 + miniconda + python3.9 + wkhtmltopdf 构建html转图片服务

1、目录结构 html2image ——Dockerfile ——main.py ——requirements.txt 2、Dockerfile FROM centos:7WORKDIR /app COPY . /app/RUN curl -O https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos7.x86_64.rpm \&& cur…

Java 项目实战:基于 Spring Boot 与 Vue.js 技术构建护士排班管理系统的架构设计方案

一、引言 1.1 项目背景 随着医疗行业的不断发展,医院护士排班管理的复杂性日益增加。传统的手工排班方式难以满足高效、公平、合理的需求,容易出现人力分配不均、员工满意度低等问题。为了提高护士排班的科学性和管理效率,特开发此护士排班管理系统。 1.2 项目目标 本系统旨…

某狐畅游24校招-C++开发岗笔试

某狐畅游24校招-C++开发岗笔试 目录某狐畅游24校招-C++开发岗笔试一、单选题二、单选题解析本文题目源来自:[PTA程序设计类实验辅助教学平台](PTA | 程序设计类实验辅助教学平台)一、单选题 1-1 若有说明 int a[2][3]; 则对 a 数组元素的正确引用是 A. a[0][1+1]B. a[1][3]C.…

中电金信参编的《金融分布式系统 术语》等5项团体标准正式发布

近日,由北京金融科技产业联盟归口的《金融分布式系统 术语》《金融分布式系统 参考架构》《金融分布式系统 应用设计原则》《金融分布式系统 技术平台能力要求》和《金融分布式系统 运维能力要求》5项团体标准正式发布和实施。该5项标准由中国金融电子化集团有限公司和国内相关…

Linux U盘挂载和卸载

将u盘挂载到linux 在RHEL6.3中挂载U盘的步骤如下:插入U盘:将U盘插入计算机的USB接口。查看U盘设备:使用命令 fdisk -l 或 lsblk 查看系统中已连接的设备列表,找到U盘对应的设备名,通常以 /dev/sdX 的形式表示,其中 X 是字母,如 /dev/sdb 或 /dev/sdc。此处U盘为sdb1创建…

我的世界服务器搭建教程(兼容Paper和Spigot核心,插件安装等)

注意:该服务器是基于Paper1.20.1核心进行初始化,默认兼容spigot插件。 一、配置JDK环境 二、 服务器核心配置 三、服务器启动 四、加入游戏 现在搭建出来的是原版生存服务器,接下来需要进行安装各种插件,包含登录认证;经济;商店;圈地;传送;多地图等可玩性插件。具体内容请看…

我的世界服务器搭建教程 兼容Paper核心 兼容Spigot核心

注意:该服务器是基于Paper1.20.1核心进行初始化,默认兼容spigot插件。 一、配置JDK环境 二、 服务器核心配置 三、服务器启动 四、加入游戏 现在搭建出来的是原版生存服务器,接下来需要进行安装各种插件,包含登录认证;经济;商店;圈地;传送;多地图等可玩性插件。具体内容请看…

.net framework 4.7.2 winform框架项目升级到.net 8.0项目 界面比列失调问题解决

一、问题发生前:在.net framework 4.7.2 winform框架开发的项目 之前在.net framework 4.7.2 开发的winform项目,在visual studio一打开的时候,虽然界面内有些控件也会失调,但是他会提示“使用100%缩放比例重新启动Visual Studio ”点击“使用100%缩放比例重新启动Visual S…

用DBeaver 新建触发器的步骤

1、选中表,新建触发器 2、 在触发器中,插入声明的SQL 完成

鸿蒙(HarmonyOS)原生AI能力之文本识别

鸿蒙(HarmonyOS)原生AI能力之文本识别 原生智能介绍在之前开发中,很多场景我们是通过调用云端的智能能力进行开发。例如文本识别、人脸识别等。原生即指将一些能力直接集成在本地鸿蒙系统中,通过不同层次的AI能力开放,满足开发者的不同场景下的诉求,降低应用开发门槛,帮助…

管理软件助力四六级:是学习规划师还是提分神器?

一、四六级单词学习的挑战 1.1 单词量庞大,记忆困难 四六级考试涉及的词汇量庞大,其中不仅包含常见的基础单词,还包括一些专业术语、固定搭配等。这些单词对于大部分学生来说,是需要长期积累和不断复习的。由于单词记忆的分散性和碎片化特点,考生很难一口气记住所有单词,…

Linux驱动开发笔记(七):操作系统MMU介绍,操作系统操作寄存器的原理和Demo

前言做过单片机的都知道,写驱动是直接代码设置和读取寄存器来控制外设实现基本的驱动功能,而linux操作系统上是由MMU(内存管理单元)来控制,MMU实现了虚拟地址与芯片物理地址的对应,设置和获取MMU地址就是设置和获取映射的物理地址,从而跟单片机一样实现与物理硬件的驱动…