[Algorithm][综合训练][孩子们的游戏][大数加法][拼三角]详细讲解

news2025/1/11 14:50:59

目录

  • 1.孩子们的游戏
    • 1.题目链接
    • 2.算法原理详解 && 代码实现
  • 2.大数加法
    • 1.题目链接
    • 2.算法原理详解 && 代码实现
  • 3.拼三角
    • 1.题目链接
    • 2.算法原理详解 && 代码实现


1.孩子们的游戏

1.题目链接

  • 孩子们的游戏

2.算法原理详解 && 代码实现

  • 问题抽象:实际就是约瑟夫环问题

  • 自己的版本:模拟 --> 环形链表/数组

    int LastRemaining_Solution(int n, int m) 
    {
    	int cnt = n, time = 0;
    	vector<bool> children(n, false);
    
    	for(int i = 0; cnt != 1; i++)
    	{
    		if(!children[i % n] && time == m - 1)
    		{
    			children[i % n] = true;
    			cnt--;
    			time = 0;
    		}
    
    		if(!children[i % n])
    		{
    			time++;
    		}
    	}
    
    	for(int i = 0; i < n; i++)
    	{
    		if(!children[i])
    		{
    			return i;
    		}
    	}
    
    	return -1;
    }
    
  • 优化版本动态规划 + 空间优化 --> 个人感觉比较抽象:(

    • 分析:每划去一个人,下一个人其实和本次划去的人有映射关系
    • 状态表示dp[i]:当有i个孩子围成一圈时,最终获胜的孩子的编号是多少
    • 状态转移方程dp[i] = (dp[i - 1] + m) % i
      请添加图片描述
    int LastRemaining_Solution(int n, int m) 
    {
        int dp = 0;
        for(int i = 2; i <= n; i++)
        {
            dp = (dp + m) % i;
        }
    
        return dp;
    }
    

2.大数加法

1.题目链接

  • 大数加法

2.算法原理详解 && 代码实现

  • 自己的版本:无进位相加
    string solve(string s, string t) 
    {
    	if(s.empty() && t.empty())
    	{
    		return "0";
    	}
    
    	int n = s.size(), m = t.size();
    
    	// 逆序字符串,便于运算
    	reverse(s.begin(), s.end());
    	reverse(t.begin(), t.end());
    
    	// 处理0,使两字符串位数一样
    	if(n > m)
    	{
    		for(int i = 0; i < n - m; i++)
    		{
    			t.push_back('0');
    		}
    	}
    	else if(n < m)
    	{
    		for(int i = 0; i < m - n; i++)
    		{
    			s.push_back('0');
    		}
    	}
    
    	// 无进位加法
    	int len = s.size();
    	vector<int> tmp(len, 0);
    	for(int i = 0; i < len; i++)
    	{
    		tmp[i] = (s[i] - '0' + t[i] - '0');
    	}
    
    	// 进位
    	string ret;
    	int cur = 0, carry = 0;
    	while(cur < len || carry)
    	{
    		if(cur < len)
    		{
    			carry += tmp[cur++];
    		}
    
    		ret += carry % 10 + '0';
    		carry /= 10;
    	}
    
    	reverse(ret.begin(), ret.end());
    
    	return ret;
    }
    
  • 优化版本:模拟竖式运算,相较于自己的版本简化了计算
    string solve(string s, string t)
    {
    	string ret;
    	
    	int i = s.size() - 1, j = t.size() - 1;
    	int carry = 0;
    	while(i >= 0 || j >= 0 || carry)
    	{
    		if(i >= 0)
    		{
    			carry += s[i--] - '0';
    		}
    
    		if(j >= 0)
    		{
    			carry += t[j--] - '0';
    		}
    
    		ret += carry % 10 + '0';
    		carry /= 10;
    	}
    
    	reverse(ret.begin(), ret.end());
    
    	return ret;
    }
    

3.拼三角

1.题目链接

  • 拼三角

2.算法原理详解 && 代码实现

  • 自己的思路:暴搜 --> DFS + 枚举

  • 优化思路:排序 + 单调性枚举
    请添加图片描述

    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    
    int main()
    {
    	int n = 0;
    	cin >> n;
    
    	vector<int> nums(6, 0);
    	while(n--)
    	{
    		for(int i = 0; i < 6; i++)
    		{
    			cin >> nums[i];
    		}
    
    		sort(nums.begin(), nums.end());
    
    		if(nums[0] + nums[1] > nums[2] && nums[3] + nums[4] > nums[5] || 
    		   nums[0] + nums[2] > nums[3] && nums[1] + nums[4] > nums[5] ||
    		   nums[0] + nums[3] > nums[4] && nums[1] + nums[2] > nums[5] ||
    		   nums[0] + nums[4] > nums[5] && nums[1] + nums[2] > nums[3])
    	   {
    		   cout << "Yes" << endl;
    	   }
    	   else
    	   {
    		   cout << "No" << endl;
    	   }
    	}
    
    	return 0;
    }
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2065036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LongWriter——从长文本语言模型中释放出10,000+字的生成能力

概述 当前的长上下文大型语言模型 (LLM) 可以处理多达 100,000 个词的输入&#xff0c;但它们很难生成超过 2,000 个词的输出。受控实验表明&#xff0c;该模型的有效生成长度本质上受到监督微调(SFT) 期间看到的示例的限制。换句话说&#xff0c;这种输出限制源于现有 SFT 数…

三维模型单体化软件:地理信息与遥感领域的精细化革命

在地理信息与遥感科学日新月异的发展浪潮中&#xff0c;单体化软件作为一股强大的驱动力&#xff0c;正引领着我们迈向空间信息处理与应用的新纪元。本文旨在深度解析单体化软件的核心价值、技术前沿、实践应用及面临的挑战&#xff0c;共同探讨这一技术如何塑造行业的未来。 …

【手撕OJ题】——BM8 链表中倒数最后k个结点

目录 &#x1f552; 题目⌛ 方法① - 直接遍历⌛ 方法② - 快慢指针 &#x1f552; 题目 &#x1f50e; BM8 链表中倒数最后k个结点【难度&#xff1a;简单&#x1f7e2;】 输入一个长度为 n 的链表&#xff0c;设链表中的元素的值为 a i a_i ai​ &#xff0c;返回该链表中倒…

一款MySQL数据库实时增量同步工具,能够监听MySQL二进制日志(Binlog)的变动(附源码)

背景 作为一名CURD的程序员&#xff0c;少不了跟MySQL打交道&#xff0c;在同步数据的时候&#xff0c;MySQL的Binlog显得重中之重&#xff0c;所以处理Binlog的工具尤为重要。 其中阿里巴巴开源的canal 更是耳闻目睹&#xff0c;但是今天小编给大家介绍另外一款MySQL数据库实…

【C++11】常用新语法②(类的新功能 || 可变参数模板 || lambda表达式 || 包装器)

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; C 目录 &#x1f308;前言&#x1f525;类的新功能新增默认成员函数强制生成默认函数的关键字default禁止生成默认函数的关键字delete &#x1f525;可变参数模板递归函数方式展开参数包…

论文翻译:Benchmarking Large Language Models in Retrieval-Augmented Generation

https://ojs.aaai.org/index.php/AAAI/article/view/29728 检索增强型生成中的大型语言模型基准测试 文章目录 检索增强型生成中的大型语言模型基准测试摘要1 引言2 相关工作3 检索增强型生成基准RAG所需能力数据构建评估指标 4实验设置噪声鲁棒性结果负面拒绝测试平台结果信息…

算法5:位运算

文章目录 小试牛刀进入正题 没写代码的题&#xff0c;其链接点开都是有代码的。开始前请思考下图&#xff1a; 小试牛刀 位1的个数 class Solution { public:int hammingWeight(int n) {int res 0;while (n) {n & n - 1;res;}return res;} };比特位计数 class Solution…

计算机毕业设计选题推荐-猫眼电影数据可视化分析-Python爬虫-k-means算法

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

进程和文件痕迹排查——LINUX

目录 介绍步骤 介绍 进程&#xff08;Process&#xff09;是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础。 在早期面向进程设计的计算机结构中&#xff0c;进程是程序的基本执行实体&…

fastadmin 安装

环境要求&#xff0c;大家可以参考官方文档的&#xff0c;我这里使用的是phpstudy&#xff0c;很多已经集成了。 注意一点&#xff0c;PHP 版本&#xff1a;PHP 7.4 。 第二步&#xff1a;下载 下载地址&#xff1a;https://www.fastadmin.net/download.html 进入下载地址后…

IDEA:Terminal找不到npm

Terminal的命令失效通过修改cmd.exe的方式还是不生效的话&#xff0c;考虑是windwos11 默认idea不是通过管理员启动的&#xff0c;如下图修改就可以了。

前端vue 3中使用 顶象 vue3 版本

顶象 验证 的插件 不知道大家使用过没有 顶象-业务安全引领者&#xff0c;让数字世界无风险 可以防止 机器人刷接口 等 可以在任何 加密操作中使用 下面我直接 贴代码 解释 <script src"https://cdn.dingxiang-inc.com/ctu-group/captcha-ui/v5/index.js" cro…

第12章 网络 (2)

目录 12.5 网络命名空间 12.6 套接字缓冲区 12.6.1 使用 sk_buff 管理数据 12.6.2 管理套接字缓冲区数据 本专栏文章将有70篇左右&#xff0c;欢迎关注&#xff0c;查看后续文章。 12.5 网络命名空间 一个网卡可能只在某个特定命名空间可见。 struct net&#xff1a; 表…

C语言贪吃蛇之BUG满天飞

C语言贪吃蛇之BUG满天飞 今天无意间翻到了大一用C语言写的贪吃蛇&#xff0c;竟然还标注着BUG满天飞&#xff0c;留存一下做个纪念&#xff0c;可能以后就找不到了 /* 此程序 --> 贪吃蛇3.0 Sur_流沐 当前版本&#xff1a; Bug满天飞 */ #include<stdio.h> #includ…

Linux C、C++编程之线程同步

【图书推荐】《Linux C与C一线开发实践&#xff08;第2版&#xff09;》_linux c与c一线开发实践pdf-CSDN博客《Linux C与C一线开发实践&#xff08;第2版&#xff09;&#xff08;Linux技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com…

qt处理表格,Qtxlsx库文件的安装以及导入

qt想要处理excel表格的&#xff0c;这个过程中避免不了使用Qtxlsx这个库文件。这几天花了几天时间&#xff0c;终于本地调通了。记录一下。 关于Qtxlsx的使用&#xff0c;大致分为2中方法。 方法一&#xff1a;直接下载对应的xlsx文件&#xff0c;然后在.pro文件中 这种方法是…

使用Java往Geoserver发布tif图层和shp图层

1. Maven依赖 栅格文件对应Tif文件 (即: 栅格就是tif) 矢量文件对应shp文件(即: 矢量就是shp) 注: 有的依赖可能在中央仓库及一些镜像仓库找不到需要手动指定仓库, 在依赖最下方 <!-- 中文转拼音工具类 --><dependency><groupId>com.belerweb</groupId&g…

指针的学习和理解

初级 1、指针的概念 在64位操作系统中&#xff0c;不管什么类型的指针都占8个字节 int a1; int* p&a;//p就是一个整型的指针&#xff0c;保存了a的地址2、指针和变量 int* p&a;* p100; // 等价于a100p //p&a*有两种定义&#xff1a; 定义的时候&#xff08;前…

【工具类】Java优雅的将XML转为JSON格式、XML转JSON

Java优雅的将XML转为JSON格式、XML转JSON 1. 导入依赖1.1 Maven使用1.2 Gradle使用 2. 代码编写3.运行示例 1. 导入依赖 1.1 Maven使用 <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</vers…

TCP连接过程

文章目录 TCP连接过程 附录TCP报文中关键术语字段 后面再完整出理论、出实战、出总结 TCP连接过程 三次握手&#xff08;Three-Way Handshake&#xff09;过程。 TCP抓包结果分析&#xff1a; step1&#xff1a;Client1客户端--->Server1服务器发送SYN&#xff08;同步…