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

【今日三题】小红的口罩(小堆) / 春游(模拟) / 数位染色(01背包)

头像
⭐️个人主页:@小羊
⭐️所属专栏:每日两三题
很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

动图描述

目录

    • 小红的口罩(小堆)
    • 春游(模拟)
    • 数位染色(01背包)


小红的口罩(小堆)

  • 小红的口罩

在这里插入图片描述

#include <iostream>
#include <queue>
using namespace std;int n, k, sum, res;
priority_queue<int, vector<int>, greater<int>> pq;int main()
{cin >> n >> k;for (int i = 0; i < n; i++){int a;cin >> a;pq.push(a);}while (sum <= k){res++;int t = pq.top();sum += t;pq.pop();pq.push(t * 2);}cout << res - 1 << endl;return 0;
}

春游(模拟)

  • 春游

在这里插入图片描述

首先让尽可能多的人乘坐单人价更低的船,然后把剩余的人分情况讨论。
如果双人船的单人价更低,则最后可能剩一人或刚好坐满,这一个人可以选择做双人船,或三人船、或和前面两个人一起坐三人船
同理如果三人船的单人价更低,则最后可能剩一人,两人,或刚好坐满,如果是一人则可以选择做双人船,三人船,或和前面三个人一起坐两条双人船;同理如果是两人则也可以和前面三个人一起坐三条双人船。

#include <iostream>
using namespace std;using ll = long long;
ll t, n, a, b;int main()
{cin >> t;while (t--){cin >> n >> a >> b;ll sum = 0;if (n <= 2) sum = min(a, b);else if (a * 3 < b * 2){sum += n / 2 * a;if (n % 2) sum += min(min(a, b), b - a);}else{sum += n / 3 * b;if (n % 3 == 1) sum += min(min(a, b), 2 * a - b);if (n % 3 == 2) sum += min(min(a, b), 3 * a - b);}cout << sum << endl;}return 0;
}

数位染色(01背包)

  • 数位染色

在这里插入图片描述

#include <iostream>
#include <string>
using namespace std;string s;
int sum;int main() 
{cin >> s;for (auto ch : s) sum += (ch - '0');if (sum % 2 == 0){sum /= 2;int dp[20][200] = {};int n = s.size();for (int i = 0; i <= n; i++) dp[i][0] = true;for (int i = 1; i <= n; i++){for (int j = 0; j <= sum; j++){dp[i][j] = dp[i - 1][j];if (j >= (s[i - 1] - '0'))  dp[i][j] = dp[i][j] || dp[i - 1][j - (s[i - 1] - '0')];}}if (dp[n][sum]) {cout << "Yes" << endl;return 0;}}cout << "No" << endl;return 0;
}
#include <iostream>
#include <string>
using namespace std;string s;
int sum;int main() 
{cin >> s;for (auto ch : s) sum += (ch - '0');if (sum % 2 == 0){sum /= 2;int dp[200] = {};int n = s.size();dp[0] = true;for (int i = 1; i <= n; i++)for (int j = sum; j >= (s[i - 1] - '0'); j--) dp[j] = dp[j] || dp[j - (s[i - 1] - '0')];if (dp[sum]) {cout << "Yes" << endl;return 0;}}cout << "No" << endl;return 0;
}

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

头像
http://www.xdnf.cn/news/3977.html

相关文章:

  • 【Bootstrap V4系列】学习入门教程之 组件-卡片(Card)
  • Linux怎么更新已安装的软件
  • sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama解释这行代码的含义
  • 1.openharmony环境搭建
  • osquery在网络安全入侵场景中的应用实战(二)
  • 关于毕业论文,查重,AIGC
  • QT6 源(78):阅读与注释滑动条 QSlider 的源码,其是基类QAbstractSlider 的子类,及其刻度线的属性举例
  • 算法热题——等价多米诺骨牌对的数量
  • 【实战教程】React Native项目集成Google ML Kit实现离线水表OCR识别
  • 【云备份】服务端业务处理模块设计与实现
  • 2025-04-18-文本相似度-菜鸟
  • LLM(17):计算所有输入 token 的注意力权重
  • 【C语言练习】023. 编写条件编译代码
  • 高速互联技术:NVLink和PCIe有什么区别
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(七)
  • 深度学习系统学习系列【4】之反向传播(BP)四个基本公式推导
  • Jogging(ABC249-A-竞赛题解)
  • 【QT】QT安装
  • ​亚马逊云服务器技术全景解析:从基础架构到行业赋能​
  • 42. 接雨水(相向双指针/前后缀分解),一篇文章讲透彻
  • 从代码学习深度学习 - 目标检测前置知识(二) PyTorch版
  • uniapp 云开发全集 云开发的概念
  • 什么是原码、反码与补码?
  • 数据管理能力成熟度评估模型(DCMM)全面解析:标准深度剖析与实践创新
  • 【Java项目脚手架系列】第二篇:JavaWeb项目脚手架
  • js获取明天日期、Vue3大菠萝 Pinia的使用
  • 【Linux系统篇】:Linux线程互斥---如何用互斥锁守护多线程程序
  • MCUboot 中的 BOOT_SWAP_TYPE_PERM 功能介绍
  • (undone) MIT6.S081 2023 学习笔记 (Day11: LAB10 mmap)
  • Redis数据结构ZipList,QuickList,SkipList