跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
C++算法

算法实战:模幂、构造、背包、贪心及堆维护六题精析

涵盖转圈游戏、系统管理员等六道算法题,涉及快速幂取模、图论构造、01 背包转化、贪心策略、DFS 剪枝及小根堆维护。重点解析数学优化思路与代码实现细节,适合备战蓝桥杯及各类算法竞赛。

心动瞬间发布于 2026/3/160 浏览
算法实战:模幂、构造、背包、贪心及堆维护六题精析

前言

这组题目选自洛谷,涵盖了多种经典算法模型,非常适合用于蓝桥杯备赛或日常算法训练。通过实际案例,我们可以更好地掌握从模板到具体解题的转化过程。

本期重点涉及以下技术点:数学(快速幂取模)、图论构造、01 背包问题转化、贪心算法、DFS 搜索加剪枝以及模拟配合小根堆维护最小值。

在这里插入图片描述

题目清单

1. 转圈游戏

在这里插入图片描述

题目: P1965 [NOIP 2013 提高组] 转圈游戏

在这里插入图片描述

解法:数学 + 快速幂

n 个数一圈(循环),计算 (x + m * 10^k) % n 的值即为移动后的位置。

由于 0 < k < 10^9,也就是 10 的 9 次方,非常大,需要用到可以取模的快速幂,一边乘一边取模。用 long long 来存。

代码:

#include <iostream>
using namespace std;
typedef long long LL;

LL n, m, k, x;

LL qpow(LL a, LL b, LL p) {
    LL ret = 1;
    while (b) {
        if (b & 1) ret = ret * a % p;
        b >>= 1;
        a = a * a % p;
    }
    return ret;
}

int main() {
    cin >> n >> m >> k >> x;
    cout << (x + m * qpow(10, k, n)) % n << endl;
    return 0;
}

2. System Administrator(系统管理员)

题目: CF22C System Administrator

在这里插入图片描述

解法:构造

要满足题目要求:去掉一个点后,图不连通,那么就构造一个点 v 左边连一个点,右边连 n - 2 个点。因为这道题目的边有限,且要用完,这种方式连的边最多,且满足题目要求。

重要的性质:

n 个点如果至少要连 n - 1 条边,所以 m < n - 1 时,连通图就不存在。所以 m > n - 1;

当有一个顶点与 v 相连,并且与其他顶点都不相连时,最大的边数可由以下方法来求:对于一个无向图,n 个顶点,最多有 n(n - 1) / 2 条边。(结论),因为每一个点可以和剩下的 n-1 个点连一条边,那么就是 n(n - 1),且因为两个点只有一条无向边,会多算一次就/2。综上,可以算满足题目要求的情况:一个点连左边一个点,边数 1,这个点加上右边一共 n - 1 个点边数 (n - 1) * (n - 2) / 2 + 1。所以 m < (n - 1) * (n - 2) / 2 + 1。

综上所述,n - 1 < m < (n - 1) * (n - 2) / 2 + 1,可以用于判断 m 是否合法。

如果 m 在范围内,那么图存在,一定能构造出来,可以先在 v 的左边放置一个顶点 w,在另一边放剩余的 n-2 个点,将所有的点 (除了 v 本身),连在 v 上,然后将它们(除了 w)相互连接起来。

代码:

#include <iostream>
using namespace std;
typedef long long LL;

LL n, m, v;

int main() {
    cin >> n >> m >> v;
    if (m < n - 1 || m > (n - 1) * (n - 2) / 2 + 1) {
        cout << -1 << endl;
    } else {
        // 此处省略具体建图逻辑,核心在于判断范围
        // 若需输出方案,按上述构造思路输出即可
    }
    return 0;
}

目录

  1. 前言
  2. 题目清单
  3. 1. 转圈游戏
  4. 2. System Administrator(系统管理员)
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog

更多推荐文章

查看全部
  • AI 辅助游戏开发:基于 DeepSeek 实现贪吃蛇游戏
  • AI 辅助开发:使用 DeepSeek 构建贪吃蛇游戏
  • C/C++ 算法入门:一维动态规划基础实战
  • C++ 入门:历史、首个程序与命名空间详解
  • 选择排序算法详解:原理、优化与复杂度分析
  • C++ STL 容器适配器详解:Stack、Queue 与 Priority Queue
  • C++ 模拟实现二叉搜索树
  • C++ 哈希表原理与 STL 容器实现详解
  • C++ string 类常用成员函数与全局函数详解
  • 50 道前端核心面试题:HTML/CSS/JS/Vue/React/TS/工程化/网络/跨端
  • Seedance 2.0 多模态视频创作实战指南
  • AI 前沿动态:自进化代理、云端开发环境与多模态模型更新
  • C++ 手搓 AVL 平衡二叉搜索树
  • C++11 新特性详解:Lambda、可变参数模板与包装器
  • Python 3.12.0 Windows 安装与环境配置指南
  • C++ 继承机制详解:从基础到菱形继承优化
  • C++ STL list 容器详解:使用与模拟实现
  • WebAssembly 逆向实战:反编译 Wasm 与内存篡改技巧
  • C++ 继承机制详解:从基础概念到虚拟继承
  • C# ImageSharp 与 JavaScript Canvas 图像处理性能对比

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online