当前位置: 首页 > 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;}
};
http://www.lryc.cn/news/226527.html

相关文章:

  • OpenCV C++ 图像处理实战 ——《多二维码识别》
  • 经典算法(查找与排序)
  • 微软和Red Hat合体:帮助企业更方便部署容器
  • ZYNQ_project:IP_ram_pll_test
  • Leetcode刷题详解——优美的排列
  • [PHP]Kodexplorer可道云 v4.47
  • C/C++数字判断 2021年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • 云栖大会丨桑文锋:打造云原生数字化客户经营引擎
  • 如何用java写一个网站:从零搭建个性化网站
  • Easyui DataGrid combobox联动下拉框内容
  • 力扣学习笔记——11. 盛最多水的容器
  • Spring Boot: 约定优于配置的软件设计思想
  • TCP触发海康扫码相机S52CN-IC-JQR-NNN25
  • ArcGIS:如何迭代Shp文件所有要素并分别导出为Shp文件?
  • [工业自动化-11]:西门子S7-15xxx编程 - PLC从站 - 分布式IO从站/从机
  • Linux技能篇-yum源搭建(本地源和公网源)
  • 电脑清灰涂硅脂后电脑CPU温度不降反升
  • 吴恩达《机器学习》8-1->8-2:非线性假设、神经元和大脑
  • services.Jenkins Additional property tags is not allowed
  • vColorPicker——基于 Vue 的颜色选择器插件
  • Direct3D粒子系统
  • 第24章_mysql性能分析工具的使用
  • 【Git】Merge/Rebase/Cherriy-Pick的区别
  • Python复习:序列(列表元组字符串)
  • DevChat助力成为软件开发的“钢铁侠”
  • c: struct sort descending and ascending in windows and Ubuntu
  • Python - 利用 OCR 技术提取视频台词、字幕
  • VUE页面导出PDF方案
  • 机器学习笔记 - WGAN生成对抗网络概述和示例
  • HoudiniVex笔记_P0_Houdini中文文档与翻译