【刷题汇总 -- 笨小猴、 主持人调度(一)、分割等和子集】

C++日常刷题积累

  • 今日刷题汇总 - day025
    • 1、笨小猴
      • 1.1、题目
      • 1.2、思路
      • 1.3、程序实现
    • 2、主持人调度(一)
      • 2.1、题目
      • 2.2、思路
      • 2.3、程序实现
    • 3、分割等和子集
      • 3.1、题目
      • 3.2、思路
      • 3.3、程序实现 -- 0/1背包问题
    • 4、题目链接

今日刷题汇总 - day025

1、笨小猴

1.1、题目

在这里插入图片描述

1.2、思路

读完题知道,处理一组单词,分别统计这组单词中出现次数最多的字母和最少的字母个数maxval和minval,然后判断maxval - minval的差是否是质数,是则输出“Lucky Word”和maxval - minval的差,否则输出“No Answer”和0 即可。根据题目和示例分析,采用hash标记出现单词中字母的个数,然后求得最多和最少个数分别保存在maxval和minval中,然后判断是否是质数,按照要求输出即可。值得注意得是字母最少不是0,质数的判断处理小于2的自然数为flase等细节即可。

1.3、程序实现

#include <iostream>
#include <string>
using namespace std;int hashch[26];bool check(int val)
{if(val < 2)return false;for (int i = 2; i < val; i++){if (val % i == 0)return false;}return true;
}int main()
{string str;cin >> str;for (auto ch : str){hashch[ch - 'a']++;}int maxval = -1;int minval = 101;for (auto num : hashch){if (maxval < num)maxval = num;if (minval > num && num != 0)minval = num;}if (check(maxval - minval)){cout << "Lucky Word" << endl;cout << maxval - minval << endl;}else{cout << "No Answer" << endl;cout << 0 << endl;}return 0;
}

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

2、主持人调度(一)

2.1、题目

在这里插入图片描述

2.2、思路

读完题知道,对于n个活动,要求只有一个主持人能否完成所有活动且时间不冲突。根据示例和题目分析,如果划分的时间段。前时间段的右区间与后时间段的左区间不冲突即可。即判断考虑后续区间是否能与前⼀个区间重叠,即:schedule[i][0] < schedule[i - 1][1];

2.3、程序实现

class Solution {
public:bool hostschedule(vector<vector<int> >& schedule){sort(schedule.begin(), schedule.end());for(int i = 1; i < schedule.size(); i++){//左区间与右区间重叠就falseif(schedule[i][0] < schedule[i - 1][1]) return false;}return true;}
};

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

3、分割等和子集

3.1、题目

在这里插入图片描述

3.2、思路

读完题知道,给定一个只包含正整数的数组 nums ,判断能否把这个数组取出若干个数使得取出的数之和和剩下的数之和相同。在一个限定的数据中,选与不选凑成某种条件,可抽象理解为0/1背包类问题。对于背包问题,在限定的空间内,尽可能选择或不选择对应物品达成存储尽可能地多。而这里是满足选择地数据之和与不选择数据之和相等即可。那么dp动态规划就需要确定状态表示与状态方程,以dp[i][j]表示前 i 个物品中挑选总和恰好为 j 时,能否相等,推导动态转移方程dp[i][j] 对于第 i 个数据选或不选两种情况,且两种情况都可能满足所以将两种情况或起来,第一种不选第 i 位置时,表示在第 i -1 个数中能否凑成 j,即:dp[i][j] = dp[i-1][j],第二种,选择第 i 个数据时,根据前 i-1 个数据的和加上第 i 个位置数据的和恰好凑足 j,即:dp[i][j] = dp[i-1][j-arr[i]].且j 大于 arr[i]。
综上所示:
状态表示dp[i][j] :表示前 i 个物品中挑选总和恰好为 j 时,能否凑成相等;
状态转移方程dp[i][j]:
a、选择第 i 个位置:dp[i][j] = dp[i][j] || dp[i-1][j-arr[i]];两者满足一个即可,且j > arr[i]
b、不选择第 i 个位置:dp[i][j] = dp[i-1][j]
初始化:多开辟一行一列。dp[0][0] = true;
除此之外,当给的数据之和为奇数时,本身就不满足选择之和等于剩余之和,所以先计算总和sum,判断sum % 2 == 1则返回false即可。

3.3、程序实现 – 0/1背包问题

#include <iostream>
using namespace std;const int N = 510, M = 510 * 110 / 2;int n;
int arr[N];
int dp[N][M];int main() {cin >> n;int sum = 0;for (int i = 1; i <= n; i++){cin >> arr[i];sum += arr[i];}if (sum % 2 == 1) cout << "false" << endl;else{sum /= 2;dp[0][0] = true;for (int i = 1; i <= n; i++){for (int j = 0; j <= sum; j++){dp[i][j] = dp[i - 1][j];if (j >= arr[i]){dp[i][j] = dp[i][j] || dp[i - 1][j - arr[i]];}}}if (dp[n][sum]) cout << "true" << endl;else cout << "false" << endl;}return 0;
}

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

4、题目链接

🌟笨小猴
🌟主持人调度(一)
🌟分割等和子集

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

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

相关文章

【MIT 6.5840(6.824)学习笔记】Raft

1 脑裂 许多容错系统使用一个单主节点来决定主副本。 MapReduce&#xff1a;由单主节点控制计算复制。GFS&#xff1a;主备复制数据&#xff0c;并由单主节点确定主拷贝的位置。VMware FT&#xff1a;主虚机和备份虚机之间复制指令&#xff0c;需要单点的Test-and-Set服务确认…

【JavaEE】通过Linux部署Web项目到云服务器上

一.配置部署所需的环境. 1.1 什么是部署? 要想知道什么是部署, 就要先了解我们在日常开发的过程中所设计到的几种环境: 开发环境: 软件开发环境指的是开发人员在创建、测试和部署软件应用程序时所需的一系列硬件、软件、工具和流程的集合。它是为了支持软件开发过程而构建的…

[算法]归并排序(C语言实现)

一、归并排序的定义 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效的排序算法。该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。 二、归并排序的算法原理 归并排序的算法可以用递归法和非递归法来实现…

Git基本原理讲解、常见命令、Git版本回退、Git抛弃本地分支拉取仓库最新分支、如何将本地文件推送至github、.gitignore文件的使用

借此机会写篇博客汇总一下自己去公司实习之后遇到的一些常见关于Git的操作。 Git基本认识 Git把数据看作是对小型文件系统的一组快照&#xff0c;每次提交更新&#xff0c;或在Git中保存项目状态时&#xff0c;Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时…

【ROS 最简单教程 002/300】ROS 环境安装 (虚拟机版): Noetic

&#x1f497; 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑&#xff0c;能帮忙解决的我会尽力 &#xff01; 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 &#x1f449; 保姆级图文安装教程指路&#xff0c;有经验的话 可以用如下资源自行安装 ITEMREFERENCE…

vue3实战(通用后台管理系统)问题总结

npm install less vue-router element-plus -s elementplus 路由引入组件第二种写法&#xff1a; 使用动态的import( )语法(推荐使用)&#xff08;路由懒加载&#xff09; component:()>import(路径)component:()>import(/views/Main.vue)打包之后的文件将会异常的大&a…

《昇思25天学习打卡营第25天|第28天》

今天是打卡的第二十八天&#xff0c;实践应用篇中的计算机视觉中Vision Transformer图像分类。 从Vision Transformer&#xff08;ViT&#xff09;简介开始了解&#xff0c;模型结构&#xff0c;模型特点&#xff0c;实验的环境准备和数据读取&#xff0c;模型解析&#xff08…

深入探索PHP框架:Symfony框架全面解析

1. 引言 在现代Web开发领域&#xff0c;PHP作为一种广泛使用的服务器端脚本语言&#xff0c;其框架的选择对于项目的成功至关重要。PHP框架不仅能够提高开发效率&#xff0c;还能确保代码的质量和可维护性。本文将深入探讨Symfony框架&#xff0c;这是一个功能强大且灵活的PHP…

Teamcenter RAC开发,创建Item的两种方式

1、如果描述不必填&#xff0c;采用胖客户端的创建方式 newItem itemType.create(newItemId, "", targetTypeComp.getTypeName(), item_name, // "test1", null, null2、如果描述必填&#xff0c;则需要采用SOA的创…

C++11中的右值引用以及移动构造等

目录 一、右值引用 1.左值引用和右值引用 2.左值引用与右值引用比较 3.右值引用使用场景和意义 1️⃣ 传返回值 2️⃣ STL中的应用 4.完美转发 模板中的&& 万能引用&#xff08;引用折叠&#xff09; 二、 新的类功能 1.默认成员函数 2.类成员变量初始化 3.…

线程池学习(一)

1.线程池有什么作用 降低资源消耗&#xff1a;通过池化技术重复利⽤已创建的线程&#xff0c;降低线程创建和销毁造成的损耗。 提⾼响应速度&#xff1a;任务到达时&#xff0c;⽆需等待线程创建即可⽴即执⾏。 提⾼线程的可管理性&#xff1a;线程是稀缺资源&#xff0c;如果…

ProxmoxPVE虚拟化平台--安装PVE虚拟机

Proxmox 虚拟机 Proxmox是一个基于Debian Linux和KVM的虚拟化平台&#xff0c;‌它提供了虚拟化的环境&#xff0c;‌允许用户在同一台物理机上运行多个虚拟机。‌Proxmox虚拟环境&#xff08;‌PVE&#xff09;‌是一个开源项目&#xff0c;‌由Proxmox Server Solutions Gmb…

Power Tower

Problem - D - Codeforces 牛客和codeforce都有 递归处理l,r&#xff0c;终点是lr && mod1 用扩展欧拉定理 // Problem: D. Power Tower // Contest: Codeforces - Codeforces Round 454 (Div. 1, based on Technocup 2018 Elimination Round 4) // URL: https://c…

【Socket 编程】应用层自定义协议与序列化

文章目录 再谈协议序列化和反序列化理解 read、write、recv、send 和 tcp 为什么支持全双工自定义协议网络计算器序列化和反序列化 再谈协议 协议就是约定&#xff0c;协议的内容就是约定好的某种结构化数据。比如&#xff0c;我们要实现一个网络版的计算器&#xff0c;客户端…

关于P2P(点对点)

P2P 是一种客户端与客户端之间&#xff0c;点对点连接的技术&#xff0c;在早前的客户端都是公网IP&#xff0c;没有NAT的情况下&#xff0c;P2P是较为容易实现的。 但现在的P2P&#xff0c;实现上面会略微有一些复杂&#xff1a;需要采取UDP打洞的技术&#xff0c;但UDP打出来…

asp.net mvc 三层架构开发商城系统需要前台页面代完善

一般会后端开发&#xff0c;都不太想写前台界面&#xff0c;这套系统做完本来想开源&#xff0c;需要前台界面&#xff0c;后台已开发&#xff0c;有需求的朋友&#xff0c;可以开发个前端界面完善一下&#xff0c;有的话可以私聊发给我啊

Redis(三)

1. java连接redis java提高连接redis的方式jedis. 我们需要遵循jedis协议。 引入依赖 <!--引入java连接redis的驱动--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.1</version&g…

Android Framework 之AMS

它管理了系统的四大组件:Activity、Service、ContentProvider、Broadcast。 它除了管理四大组件外&#xff0c;同时也负责管理和调度所有的进程 AMS相关目录结构 AMS代码主要在下面几个目录(AndroidQ上AMS相关部分功能移到了wm下)&#xff1a; frameworks/base/core/java/andro…

记录|LabVIEW从0开始

目录 前言一、表达式节点和公式节点二、脚本与公式2.1 公式 三、Excel表格3.1 位置3.2 案例&#xff1a;波形值存入Excel表中3.3 案例&#xff1a;行写入&#xff0c;列写入 四、时间格式化4.1 获取当前时间4.2 对当前时间进行格式化 更新时间 前言 参考视频&#xff1a; LabVI…

【STL】之 vector 使用方法及模拟实现

前言&#xff1a; 本文主要讲在C STL库中vector容器的使用方法和底层的模拟实现~ 成员变量的定义&#xff1a; 对于vector容器&#xff0c;我们首先采用三个成员变量去进行定义&#xff0c;分别是&#xff1a; private:iterator _start; // 指向数据块的开始iterator _finish…