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

第 117 场 LeetCode 双周赛题解

A 给小朋友们分糖果 I

在这里插入图片描述

动态规划:设 p [ k ] [ i ] p[k][i] p[k][i] 为将 i i i 个糖果分给 k k k 个小朋友的方案数,先求 p [ 2 ] [ i ] p[2][i] p[2][i] ,再求 p [ 3 ] [ n ] p[3][n] p[3][n]

class Solution {
public:using ll = long long;int distributeCandies(int n, int limit) {ll p[4][n + 1];memset(p, 0, sizeof(p));for (int i = 0; i <= n; i++) {p[2][i] = min(limit, i) - max(0, i - limit) + 1;}ll res = 0;for (int i = 0; i <= limit && i <= n; i++)if (n - i <= 2 * limit)res += p[2][n - i];return res;}
};

B 给小朋友们分糖果 II

在这里插入图片描述

A A A

class Solution {
public:using ll = long long;long long distributeCandies(int n, int limit) {ll p[4][n + 1];memset(p, 0, sizeof(p));for (int i = 0; i <= n; i++) {p[2][i] = min(limit, i) - max(0, i - limit) + 1;}ll res = 0;for (int i = 0; i <= limit && i <= n; i++)if (n - i <= 2 * limit)res += p[2][n - i];return res;}
};

C 重新排列后包含指定子字符串的字符串数目

在这里插入图片描述

动态规划:设 p [ i ] [ c l ] [ c t ] [ c e ] p[i][cl][ct][ce] p[i][cl][ct][ce] 为用 i i i 个字符组成的 l , t , e l,t,e l,t,e 3 3 3 种字符数分别为 c l , c t , c e cl,ct,ce cl,ct,ce 个的字符串数目, l l l 字符数 > 1 >1 >1 的字符串状态算在 c l = 1 cl=1 cl=1 的状态内,类似 t t t 字符数 > 1 >1 >1 的字符串状态算在 c t = 1 ct=1 ct=1 的状态内, e e e 字符数 > 2 >2 >2 的字符串状态算在 c e = 2 ce=2 ce=2 的状态内,答案即为 p [ n ] [ 1 ] [ 1 ] [ 2 ] p[n][1][1][2] p[n][1][1][2]

class Solution {
public:using ll = long long;ll mod = 1e9 + 7;int stringCount(int n) {ll p[n + 1][2][2][3];memset(p, 0, sizeof(p));p[0][0][0][0] = 1;//空串for (int i = 1; i <= n; i++) {for (int l = 0; l < 2; l++) {for (int t = 0; t < 2; t++) {for (int e = 0; e < 3; e++) {p[i][l][t][e] = p[i - 1][l][t][e] * 23 % mod;//第i个字符为非l,e,t的字符if (l) {//第i个字符为lp[i][l][t][e] += (p[i - 1][l - 1][t][e] + p[i - 1][l][t][e]) % mod;p[i][l][t][e] %= mod;}if (t) {//第i个字符为tp[i][l][t][e] += (p[i - 1][l][t - 1][e] + p[i - 1][l][t][e]) % mod;p[i][l][t][e] %= mod;}if (e) {//第i个字符为ep[i][l][t][e] += p[i - 1][l][t][e - 1];p[i][l][t][e] %= mod;if (e == 2) {p[i][l][t][e] += p[i - 1][l][t][e];p[i][l][t][e] %= mod;}}}}}}return (p[n][1][1][2] + mod) % mod;}
};

D 购买物品的最大开销

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

贪心 + 优先级队列:每次购买当前各商店最右商品价格最小的最右商品即可获得最大总开销,用优先级队列维护各商店最右商品价格最小值

class Solution {
public:using ll = long long;long long maxSpending(vector<vector<int>> &values) {int m = values.size(), n = values[0].size();priority_queue<tuple<int, int, int>, vector<tuple<int, int, int>>, greater<>> heap;//最小堆for (int i = 0; i < m; i++)heap.emplace(values[i][n - 1], i, n - 1);ll res = 0;for (int i = 1; i <= m * n; i++) {auto [v, r, c] = heap.top();heap.pop();res += 1LL * i * v;if (c)//该商店还有剩余商品heap.emplace(values[r][c - 1], r, c - 1);}return res;}
};

相关文章:

  • webpack打包时使用import引入element,element地址信息不会被打包到budle中而axios就会呢?
  • Python爬取股票交易数据代码示例及可视化展示。
  • CSS 属性学习笔记(入门)
  • Mybatis-Plus条件构造器QueryWrapper
  • 2023年云计算发展趋势浅析
  • 招投标系统软件源码,招投标全流程在线化管理
  • 除了Excel中可以添加公式之外,在Word中也可以添加公式,不过都是基于表格
  • 做一个Springboot文件上传-阿里云
  • ubuntu18.04配置Java环境与安装RCS库
  • 2. 深度学习——初始化方法
  • arcgis--NoData数据处理
  • 深入理解 TCP;场景复现,掌握鲜为人知的细节
  • 7 款最好的 Android 手机数据恢复软件榜单(持续更新列表)
  • 漏电继电器 LLJ-250HT AC220V 50-500ma 面板安装
  • 半平面求交 - 洛谷 - P3194 [HNOI2008] 水平可见直线
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • ➹使用webpack配置多页面应用(MPA)
  • AHK 中 = 和 == 等比较运算符的用法
  • Angular 4.x 动态创建组件
  • C++类中的特殊成员函数
  • crontab执行失败的多种原因
  • Debian下无root权限使用Python访问Oracle
  • ECS应用管理最佳实践
  • ES6 学习笔记(一)let,const和解构赋值
  • ES6--对象的扩展
  • JAVA之继承和多态
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • leetcode46 Permutation 排列组合
  • Lsb图片隐写
  • NSTimer学习笔记
  • React-flux杂记
  • Redis的resp协议
  • Redux系列x:源码分析
  • storm drpc实例
  • 当SetTimeout遇到了字符串
  • 分享一份非常强势的Android面试题
  • 官方解决所有 npm 全局安装权限问题
  • 将 Measurements 和 Units 应用到物理学
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 蓝海存储开关机注意事项总结
  • 理清楚Vue的结构
  • 区块链将重新定义世界
  • 如何实现 font-size 的响应式
  • 算法-图和图算法
  • 我的zsh配置, 2019最新方案
  • 想写好前端,先练好内功
  • 赢得Docker挑战最佳实践
  • 用Canvas画一棵二叉树
  • # 计算机视觉入门
  • $.ajax,axios,fetch三种ajax请求的区别
  • $forceUpdate()函数
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)bark-ml
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (26)4.7 字符函数和字符串函数