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

【今日三题】小红的口罩(小堆) / 春游(模拟) / 数位染色(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;
}

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

头像

相关文章:

  • 常用非对称加密算法的Python实现及详解
  • Android 控件CalendarView、TextClock用法
  • MongoDB 整合SpringBoot
  • [C语言]第一章-初识
  • ROS2 开发踩坑记录(持续更新...)
  • NSOperation深入解析:从使用到底层原理
  • GAF-CNN-SSA-LSSVM故障诊断/分类预测,附带模型研究报告(Matlab)
  • 架构思维:构建高并发读服务_异构数据的同步一致性方案
  • Webug4.0靶场通关笔记12- 第17关 文件上传之前端拦截(3种方法)
  • 矿泉水瓶的绘制
  • 511本周总结(37)demo优化
  • 【ROS2】launch启动文件如何集成到ROS2(Python版本)
  • 实验三 触发器及基本时序电路
  • Python_leve2.1
  • 开源项目:optimum-quanto库介绍
  • Linux线程同步机制深度解析:信号量、互斥锁、条件变量与读写锁
  • Linux环境下的进程创建-fork函数的使用与写时拷贝, 进程退出exit和_exit的区别,以及进程等待waitpid和status数据的提取方法
  • nproc命令查看可用核心数量详解
  • Anaconda安装Labelimg包
  • Raycaster光线投射
  • 德国联邦议院6日下午将举行总理选举第二轮投票
  • 陕西礼泉一村民被冒名贷款40余万,法院发现涉嫌经济犯罪驳回起诉
  • 交通运输部、水利部同日召开会议,深刻汲取贵州游船倾覆事故教训
  • 上海成五一国内最热门的入境游目的地,国际消费明显提升
  • 世锦赛决赛今夜打响,斯诺克运动需要赵心童创造历史
  • 新华每日电讯“关爱青年成长”三连评:青春应有多样的精彩