当前位置: 首页 > news >正文

Codeforces Round 1039 (Div. 2) A-C

A. Recycling Center

在这里插入图片描述

题目大意

给你n个垃圾袋,每个垃圾袋有一个重量
在每秒钟,你可以选择一个垃圾袋,如果他的重量小于等于c,那么你可以不花费硬币丢掉它
当你丢掉一个垃圾袋后,其他垃圾袋在这一秒重量会翻倍
问最少花费几个硬币可以丢掉所有垃圾袋

思路

使用优先队列
从大到小存储所有垃圾袋
对于大于c的垃圾袋,无论如何都要丢掉,答案加1
对于小于c的垃圾袋,我们丢掉最大的小于等于c的垃圾袋
可以想到如果要尽可能多的丢掉小于等于c的垃圾袋,这一定是最优的

// Author: zengyz
// 2025-08-02 20:25#include <bits/stdc++.h>using namespace std;
typedef long long ll;void solve()
{ll n, c;cin >> n >> c;vector<ll> a(n);priority_queue<ll, vector<ll>, less<ll>> pq;for (ll i = 0; i < n; i++){cin >> a[i];pq.push(a[i]);}ll ans = 0;ll now = 1;while (pq.size()){while (pq.size() && pq.top() * now > c){pq.pop();ans++;}if (pq.size() == 0)break;pq.pop();now *= 2;}cout << ans << endl;return;
}int main()
{ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int _T = 1;cin >> _T;while (_T--){solve();}return 0;
}

B. Deque Process

在这里插入图片描述
在这里插入图片描述

思路

我们在奇数时间选择两端较小的一个,偶数时刻选择较大的一个,可以证明这一定是好的

证明:
考虑奇数时间
qi=min(pl,pr)q_{i}=min(p_l,p_r)qi=min(pl,pr),假设最小值是prp_rpr,那么pl>prp_l>p_rpl>pr
考虑偶数时间
qi+1=max(pl,pr−1)q_{i+1}=max(p_l,p_{r-1})qi+1=max(pl,pr1)
所以qi+1q_{i+1}qi+1一定大于qiq_{i}qi
同理qi+2q_{i+2}qi+2一定小于qi+1q_{i+1}qi+1

// Author: zengyz
// 2025-08-02 20:48#include <bits/stdc++.h>using namespace std;
typedef long long ll;void solve()
{int n;cin >> n;vector<int> a(n);for (int i = 0; i < n; i++)cin >> a[i];int l = 0, r = n - 1;vector<char> ans;int now = 0;while (l <= r){if (!now){if (a[l] < a[r]){ans.push_back('L');l++;}else{ans.push_back('R');r--;}}else{if (a[l] > a[r]){ans.push_back('L');l++;}else{ans.push_back('R');r--;}}now ^= 1;}for (int i = 0; i < ans.size(); i++)cout << ans[i];cout << endl;return;
}int main()
{ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int _T = 1;cin >> _T;while (_T--){solve();}return 0;
}

C. Leftmost Below

在这里插入图片描述
在这里插入图片描述

题目大意

给你一个全0的数组a
每次操作如下:
选择一个大于数组a最小值的值x
定义i为数组a中第一个小于x的值的下标,将其加x
问能否变成数组b

思路

设minn为从左到右数组b的最小值
当考虑到第i个元素时,如果bi≤minnb_i \leq minnbiminn,那么我们可以直接添加bib_ibi
如果bi>minnb_i \gt minnbi>minn 我们可以先添加 minn−1minn-1minn1 再添加minnminnminn
如果大于等于两倍minn则无解

// Author: zengyz
// 2025-08-02 20:57#include <bits/stdc++.h>using namespace std;
typedef long long ll;void solve()
{int n;cin >> n;vector<ll> a(n);for (int i = 0; i < n; i++){cin >> a[i];}ll maxx = a[0];bool flag = true;for (int i = 1; i < n; i++){if (2 * maxx <= a[i]){flag = false;break;}maxx = min(maxx, (ll)a[i]);}if (flag){cout << "YES" << endl;}elsecout << "NO" << endl;return;
}int main()
{ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int _T = 1;cin >> _T;while (_T--){solve();}return 0;
}
http://www.lryc.cn/news/608564.html

相关文章:

  • 搜索引擎评估革命:用户行为模型如何颠覆传统指标?
  • Pytorch-02数据集和数据加载器的基本原理和基本操作
  • Node.js 路由与中间件
  • DyWA:用于可推广的非抓握操作的动态自适应世界动作模型
  • 浅拷贝与深拷贝的区别
  • 技术面试知识点详解 - 从电路到编程的全栈面经
  • 机试备考笔记 2/31
  • linux编译基础知识-头文件标准路径
  • 系统思考:超越线性分析
  • SpringBoot相关注解
  • MybatisPlus-逻辑删除
  • c++之基础B(进制转换)(第三课)
  • ARP协议是什么?ARP欺骗是如何实现的?我们该如何预防ARP欺骗?
  • 存储过程的介绍、基本语法、delimiter的使用
  • HarmonyOS 开发:基于 ArkUI 实现复杂表单验证的最佳实践
  • Makefile 从入门到精通:自动化构建的艺术
  • 【设计模式】 3.设计模式基本原则
  • Kotlin单例模式懒汉模式:LazyThreadSafetyMode.SYNCHRONIZED(2)
  • 未来交通:元宇宙技术重塑出行体验
  • 第15届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2024年1月28日真题
  • 深入 Go 底层原理(二):Channel 的实现剖析
  • 网易云音乐硬刚腾讯系!起诉SM娱乐滥用市场支配地位
  • Seal Report:一款免费开源的报表工具
  • 联合索引全解析:一棵树,撑起查询的半边天
  • TCL --- 列表_part2
  • 逻辑回归 银行贷款资格判断案列优化 交叉验证,调整阈值,下采样与过采样方法
  • Conda和pip的使用记录
  • Python 字典为什么查询高效
  • Python 全局解释器锁
  • 如何在`<link type=“icon“ href=`的`href`中写SVG并使用path标签? 笔记250802