【CF】Day9——Codeforces Round 953 (Div. 2) BCD

B. New Bakery

题目:

思路:

被标签害了,用什么二分(

很简单的思维题,首先如果a >= b,那么全选a就行了,还搞啥活动

否则就选 b - a 天来搞活动,为什么?

首先如果我们要搞活动,而且要最大利益,那么肯定要满足 b - k >= a,即每一天的利润都不能小于a,不然的话我搞啥活动

所以变换一下就是 b - a >= k,可知最大k是 b - a ,然后再写出理论公式即可(自己写X)

代码:

#include <iostream>
#include <algorithm>
#include<cstring>
#include<cctype>
#include<string>
#include <set>
#include <vector>
#include <cmath>
#include <queue>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <stack>
#include <memory>
using namespace std;
#define int long long
#define yes cout << "YES\n"
#define no cout << "NO\n"int n, a, b;void solve()
{cin >> n >> a >> b;int k = min(n, b - a), ans = 0;if (a >= b)ans = n * a;else {k = min(n, b - a);ans += (2 * b + 1 - k) * k / 2 + (n - k) * a;}cout << ans << endl;
}signed main()
{cin.tie(0)->sync_with_stdio(false);int t = 1;cin >> t;while (t--){solve();}return 0;
}

C. Manhattan Permutations

题目:

思路:

这是一道比较直觉的思维题目

首先题目说要构造出一个排列使得其曼哈顿值为所需的k,那首先我们肯定要判断能不能构造出

显然,使得排列为 n n-1 n-2 ... 3 2 1这种形式存在最大曼哈顿值,同时还能观察到,如果要构造只能构造出偶数曼哈顿值,为什么呢?其实自己举例证明就能发现(我就是这样发现的)

那么现在就考虑如何构造出这个排列呢?

我们对于任意一个x和y,如果交换其位置,那么奉献肯定是 2 * |x - y|,也就是说可以构造出任何偶数,那我们考虑直接模拟,双指针来选择合适的x y,如果小于k,那么就加,否则就往内缩小,由于每次的奉献其实是对称的,所以维护一边的指针即可,特别的,这一题肯定是要从大到小枚举

(注意数据,因为数据不是特别大,所以O(n)的做法可以接受,我一开始就是想太难,在考虑如何优化,纯属是杞人忧天了)

代码:

#include <iostream>
#include <algorithm>
#include<cstring>
#include<cctype>
#include<string>
#include <set>
#include <vector>
#include <cmath>
#include <queue>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <stack>
#include <memory>
using namespace std;
#define int long long
#define yes cout << "YES\n"
#define no cout << "NO\n"void solve()
{int n, k;cin >> n >> k;int maxn = 0;vector<int> a(n+1,0);for (int i = 1; i <= n; i++){maxn += abs((n - i + 1) - i);a[i] = i;}if (k % 2 || k > maxn){no;return;}yes;int L = 1, R = n;while (k && L <= R){while (2ll * (a[R] - a[L]) > k)R--;k -= 2ll * (a[R] - a[L]);swap(a[L], a[R]);L++, R--;}for (int i = 1; i <= n; i++){cout << a[i] << " ";}cout << endl;
}signed main()
{cin.tie(0)->sync_with_stdio(false);int t = 1;cin >> t;while (t--){solve();}return 0;
}

D. Elections

题目:

思路:

考验直觉和眼力的思维题

首先我们要看清楚!这个人数是分给下标最小的,也就是下标最前的,那么显然

只要第一个人不去除,别的票都会给第一个!

也就是说对于第 i 个人,如果不将前 i - 1 个人删去的话,那么第 i 个人的票数是不会增加的

到此,关键点就没了,接下来就是模拟了

首先我们要确定一开始谁都不删除的情况下谁是最大的,这样就知道谁是不需要删除的了,也就是比较 a[0] + c 和 max(a1 ~ an),那么特判就到此结束了,接下来乖乖模拟即可

我们可以用sum来储存有多少人可以投给第i人,如果a[i] + sum >= maxn(其中maxn是整个数列的最大值),那么就输出 i 个人即可,因为我们最少都要删掉 i 个人,如果还是小于最大值的话,我们只需要多删去那个最大值就行了,也就是要删 i + 1 个,同时我们根本不需要考虑最大值相等的情况,因为对于第 i 个,前面的都删完了,就算有相等的,他也是第一个

代码:

#include <iostream>
#include <algorithm>
#include<cstring>
#include<cctype>
#include<string>
#include <set>
#include <vector>
#include <cmath>
#include <queue>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <stack>
#include <memory>
using namespace std;
#define int long long
#define yes cout << "YES\n"
#define no cout << "NO\n"void solve()
{int n, c;cin >> n >> c;vector<int> a(n);for (int i = 0; i < n; i++){cin >> a[i];}if (n == 1){cout << "0\n";return;}int maxn = *max_element(a.begin(), a.end());int maxN = max(maxn, a[0] + c);int first = (maxN == a[0] + c) ? 0 : (find(a.begin(),a.end(),maxn) - a.begin());int sumc = c;for (int i = 0; i < n;i++){int ans = 0;if (i == first){ans = 0;}else if(sumc + a[i] >= maxn){ans = i;}else{ans = i + 1;}cout << ans << " ";sumc += a[i];}cout << endl;
}signed main()
{cin.tie(0)->sync_with_stdio(false);int t = 1;cin >> t;while (t--){solve();}return 0;
}

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

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

相关文章

【大模型】Transformer、GPT1、GPT2、GPT3、BERT 的论文解析

前言 在自然语言处理&#xff08;NLP&#xff09;和深度学习的快速发展中&#xff0c;Transformer模型和 GPT系列模型扮演了至关重要的角色。本篇博客旨在对这些开创性的论文进行介绍&#xff0c;涵盖它们的提出时间、网络结构等关键信息&#xff0c;能够快速的理解这些模型的设…

Spring Security 教程:从入门到精通(含 OAuth2 接入)

Spring Security 教程&#xff1a;从入门到精通&#xff08;含 OAuth2 接入&#xff09; Spring Security 是 Spring 框架中备受推崇的安全模块&#xff0c;广泛应用于构建安全可靠的企业级应用程序。它提供了一套全面的解决方案&#xff0c;涵盖身份认证&#xff08;Authenti…

OpenGL ES 入门指南:从基础到实战

引言&#xff1a;为什么需要 OpenGL ES&#xff1f; 在当今的嵌入式设备&#xff08;如智能手机、汽车仪表盘、智能家居中控屏&#xff09;中&#xff0c;流畅的图形渲染能力是用户体验的核心。OpenGL ES&#xff08;OpenGL for Embedded Systems&#xff09; 作为行业标准&am…

java的WeakHashMap可以用来做缓存使用?强软弱虚四种引用对比

在 Java 中&#xff0c;引用&#xff08;Reference&#xff09;机制用于管理对象的生命周期和垃圾回收。Java 提供了四种类型的引用&#xff1a;强引用&#xff08;Strong Reference&#xff09;、软引用&#xff08;Soft Reference&#xff09;、弱引用&#xff08;Weak Refer…

51单片机指令系统入门

目录 基本概念讲解 一、机器指令​ 二、汇编指令​ &#xff08;一&#xff09;汇编指令的一般格式 &#xff08;二&#xff09;按字节数分类的指令 三、高级指令 总结​ 基本概念讲解 指令是计算机&#xff08;或单片机&#xff09;中 CPU 能够识别并执行的基本操作命令…

使用 Docker 部署 MySQL 8

使用 Docker 部署 MySQL 8 详细指南 MySQL 是一个广泛使用的开源关系型数据库管理系统。通过 Docker 部署 MySQL 8 可以快速搭建一个可移植、可扩展的数据库环境。本文将详细介绍如何使用 Docker 部署 MySQL 8&#xff0c;并讲解如何根据需求配置 MySQL。 从拉取镜像开始的详细…

AtCoder Beginner Contest 397(ABCDE)

目录 A - Thermometer 翻译&#xff1a; 思路&#xff1a; 实现&#xff1a; B - Ticket Gate Log 翻译&#xff1a; 思路&#xff1a; 实现&#xff1a; C - Variety Split Easy 翻译&#xff1a; 思路&#xff1a; 实现&#xff1a; D - Cubes 翻译&#xff1a…

数模AI使用教程(新) 2025.3.17

DeepseekR1doubao1.5大模型组合&#xff0c;数模智能体题目解答一等水平&#xff0c;另外也有统计建模、期刊复现智能体。 功能&#xff1a;问题重述、解释数据文件、深度思考与逻辑梳理、问题关键点分析、知识整理、查找数据源、问题分析、使用方法推荐[会询问要求]、模型建立…

Spring Cloud Gateway 生产级实践:高可用 API 网关架构与流量治理解析

API 网关的核心价值 在分布式微服务架构中&#xff0c;API 网关作为系统流量的唯一入口&#xff0c;承担着路由分发、安全防护、流量治理三大核心职责。Spring Cloud Gateway 基于响应式编程模型与 Netty 高性能网络框架&#xff0c;提供灵活的路由规则、动态过滤器链和深度集…

在Pycharm配置conda虚拟环境的Python解释器

〇、前言 今天在配置python解释器时遇到了这样的问题 经过一下午自行摸索、上网搜寻后&#xff0c;终于找到的解决的方案&#xff0c;遂将该方法简要的记录下来&#xff0c;以备后用&#xff0c;并希望能帮助到有同样问题或需求的朋友:) 我所使用的软件的版本如下&#xff0c;假…

宽带(Broadband)

宽带&#xff08;Broadband&#xff09; 是一种高速互联网接入技术&#xff0c;能够同时传输多种类型的数据&#xff08;如语音、视频、文本等&#xff09;。与传统的窄带&#xff08;如拨号上网&#xff09;相比&#xff0c;宽带提供了更高的数据传输速率和更稳定的连接&#…

集成学习(上):Bagging集成方法

一、什么是集成学习&#xff1f; 在机器学习的世界里&#xff0c;没有哪个模型是完美无缺的。就像古希腊神话中的"盲人摸象"&#xff0c;单个模型往往只能捕捉到数据特征的某个侧面。但当我们把多个模型的智慧集合起来&#xff0c;就能像拼图一样还原出完整的真相&a…

VLLM:虚拟大型语言模型(Virtual Large Language Model)

VLLM&#xff1a;虚拟大型语言模型&#xff08;Virtual Large Language Model&#xff09; VLLM指的是一种基于云计算的大型语言模型的虚拟实现。它通常是指那些由多个服务器组成的分布式计算环境中的复杂机器学习模型&#xff0c;这些模型能够处理和理解大量的文本数据。VLLM的…

Springboot+Vue登录、注册功能(含验证码)(后端!)

我们首先写一个接口&#xff0c;叫login&#xff01;然后对传入一个user&#xff0c;因为我们前端肯定是要传过来一个user&#xff0c;然后我们后端返回一个user&#xff0c;因为我们要根据这个去校验&#xff01;我们还引入了一个hutool的一个东西&#xff0c;在pom文件里面引…

冯 • 诺依曼体系结构

冯 • 诺依曼体系结构 一、冯 • 诺依曼体系结构推导阶段 1&#xff1a;初始计算机体系结构&#xff08;仅输入、运算、输出&#xff09;阶段 2&#xff1a;加入控制功能&#xff0c;初步形成 CPU 概念阶段 3&#xff1a;性能瓶颈与引入内存阶段 4&#xff1a;最终冯诺依曼体系…

Python print() 打印多个变量时,可变对象和不可变对象的区别

先来看这段代码&#xff1a; tmp [] print(tmp, tmp.append(1), tmp)输出&#xff1a; [1] None [1]并不是一些人认为的 [] None [1] 这是因为列表是可变对象&#xff0c;print()打印前会先计算出所有结果&#xff0c;最后再打印出来&#xff0c;中间在列表中添加了1&#…

【数学 线性代数】差分约束

前言 C算法与数据结构 本博文代码打包下载 什么是差分约束 x系列是变量&#xff0c;y系列是常量&#xff0c;差分系统由若干如下不等式组成。 x1-x2 < y1 x2-x3 < y2 ⋯ \cdots ⋯ 可能有负环的最短路 个人习惯&#xff1a;如果存在a指向b的边&#xff0c;则a是b的…

AutoGen :使用 Swarm 构建自治型多智能体团队

👉👉👉本人承接各类AI相关应用开发项目(包括但不限于大模型微调、RAG、AI智能体、NLP、机器学习算法、运筹优化算法、数据分析EDA等) !!!👉👉👉 有意愿请私信!!!AutoGen 的 AgentChat 模块提供了一种强大的方法来构建多智能体协作系统。 在之前的文章中,我们探讨了…

2025人工智能“落地生花”:这六大领域正掀起颠覆性革命

——从医疗到养老&#xff0c;一场“AI”的全民狂欢正在上演 2025年的春天&#xff0c;全球科技界的热搜被一个中国AI大模型“霸榜”——DeepSeek。从春晚的机器人热舞到政务系统的“数字员工上岗”&#xff0c;从医疗诊断到工业炼钢&#xff0c;这场始于春节的技术海啸&#…

第27周JavaSpringboot git初识

Git 课程笔记 一、Git 的介绍 1. Git 的诞生背景 Git 是 Linux 内核的作者 Linus Torvalds 为了更好地管理 Linux 内核开发而创建的版本控制系统。在 Linux 内核开发初期&#xff0c;由于开发者众多&#xff0c;协作成本很高&#xff0c;后来使用了 BitKeeper 工具来辅助协作…