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

【每日刷题】第2天

文章目录

    • 1.Kotori和气球
    • 2.主持人调度(二)

1.Kotori和气球

题目链接

img

解法:数学 - 排列组合

本题是n种气球(不限个数),m个位置

例子: 假设有6种气球,5个位置。

  1. 那么第一个位置有6种选法。

  2. 因为相同种类的气球不能相邻,我们又是从前往后安排每个位置选哪个气球,所以,我们只需要保证后一个位置气球种类和前一个位置气球的种类不相同即可。也就是第2个位置有5种选法(只需要和第一个位置的气球种类不相同),第3个位置、第4个位置和第5个位置都只有5种选法。

  3. 因为分步相乘,所以最终有6 * 5 * 5 * 5 * 5 种方案

经过上面这个例子,我们很容易可以总结出 如果是n种气球,m个位置,方案数=n 乘 (n - 1)的m-1次

img

注意: 不要忘记取模

代码编写:

#include <iostream>using namespace std;const int MOD = 109;int main()
{int n, m; cin >> n >> m;int ret = n;for(int i = 1; i <= m - 1; i++){ret = ret * (n - 1) % MOD;}cout << ret << endl;return 0;
}

2.主持人调度(二)

题目链接

img

题目分析

我们之前做过 “主持人调度”这道题,这道题是让我们判断一个主持人是否能主持全部活动。我们当时的思路是先将所有活动区间按照区间的左端点按从小到大排序,排序后,判断区间是否相交,只需要判断前一个区间的左端点是否大于等于后一个区间的右端点。

本题是让我们求举办n个活动,最少需要多少主持人。

所以我们的目标就是将所有的活动区间分给若干个主持人,每一个主持人主持的活动的区间都是两两不相交的,最后返回主持人的个数

思路分析:

  1. 把区间按照左端点按从小到大排序

  2. 按照顺序依次处理没有分配的区间,然后看看该区间能否放在已经处理好的区间的后面即可(其实就是判断这两个区间是否相交),如果可以放在多个已经处理好的区间的后面,随便选一个即可。

  3. 当一个主持人主持的活动大于1个的时候,我们仅需保存最新的活动,因为我们区间是已经排好序了的

但是,按照我们现在这个思路解答,时间复杂度是O(N^2)的,会超时。

优化:

因为我们每次只需要让新来的区间的左端点和已处理的区间的右端点比较,所以,对于已处理的区间,我们只用存它的右端点,然后看新来的区间的左端点是否大于这个数。

其实,我们只需要让新来的区间的左端点和所有已处理区间中右端点的最小值比较即可。

所以,我们存已处理的区间的右端点的时候,可以存到小根堆里面,这样的话,堆顶就是最小的,如果新来的区间的左端点大于堆顶元素的值,那么就更新堆顶元素的值,如果小于等于堆顶的值,那么就让这个新区间的右端点进堆

注意:

img

如果一个区间的右端点等于另一个区间的左端点的这种情况,是算作两个区间没有重叠的

代码:

class Solution {
public:int minmumNumberOfHost(int n, vector<vector<int> >& startEnd) {sort(startEnd.begin(), startEnd.end());priority_queue<int, vector<int>, greater<int>> heap;//创建一个小根堆heap.push(startEnd[0][1]); // 第一个主持人for(int i = 1; i < n; i++){int left = startEnd[i][0]; int right = startEnd[i][1];if(left >= heap.top()) //区间没有重叠,同一个主持人主持{//更新堆顶元素heap.pop();heap.push(right);}else //区间重叠了,需要再来一个主持人  {heap.push(right);}}return heap.size();}
};
http://www.xdnf.cn/news/4531.html

相关文章:

  • 互联网大厂Java求职面试:AI集成与云原生架构设计
  • Go 面向对象,封装、继承、多态
  • 拆解 Prompt 工程:五大场景驱动 DeepSeek 超越 ChatGPT
  • AUTOSAR图解==>AUTOSAR_SWS_WirelessEthernetTransceiverDriver
  • 【AI入门】CherryStudio入门3:结合FastMCP创建自己的MCP服务,实现哔哩视频查询
  • 梅特卡夫法则——AI与思维模型【97】
  • 单片机-STM32部分:7、GPIO输入 按键
  • ()初始化 和 { }初始化
  • PostgreSQL中“参数默认值实现伪重载“详解
  • Unable to ping server at localhost:1099解决
  • 【Linux庖丁解牛】—程序地址空间【进程地址空间 | 虚拟地址空间】
  • 每日一题洛谷P1025 [NOIP 2001 提高组] 数的划分c++
  • Python打卡 DAY 18
  • MySQL核心机制:日志系统、锁机制与事务管理的深度剖析
  • 六个仓库合并为一个仓库,保留master和develop分支的bat脚本
  • llama-Factory不宜直接挂接Ollama的大模型
  • 互联网大厂Java求职面试:分布式系统中向量数据库与AI应用的融合探索
  • FastDFS,分布式文件存储系统,介绍+配置+工具类
  • upload-labs靶场通关详解:第一关
  • 远程访问代理+内网穿透:火山引擎边缘网关助力自部署模型公网调用与全链路管控
  • 阿维塔汽车CAN总线数据适配技术解析与免破线数据采集实践
  • 模型中台建设全流程指南
  • [逆向工程]什么是 Process Explorer
  • 智慧系统搭建平台有哪些?2025智慧系统搭建平台推荐?智慧系统搭建平台TOP10全面解析
  • ERP源码?ERP系统是什么?能够解决什么问题?
  • 使用 Python 与 Java 实现接入 AI 大模型的 MCP 协议:原理与实战
  • 「动态规划」线性DP:股票问题合集 / LeetCode 121|122|123|188 (C++)
  • 密码学基石:哈希、对称/非对称加密与HTTPS实践详解
  • Charles 如何高效监控特定域名
  • BGP路由反射器