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

news2024/9/8 23:24:21

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++)
        {
            //左区间与右区间重叠就false
            if(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.coloradmin.cn/o/1957757.html

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

相关文章

JAW:一款针对客户端JavaScript的图形化安全分析框架

关于JAW JAW是一款针对客户端JavaScript的图形化安全分析框架&#xff0c;该工具基于esprima解析器和EsTree SpiderMonkey Spec实现其功能&#xff0c;广大研究人员可以使用该工具分析Web应用程序和基于JavaScript的客户端程序的安全性。 工具特性 1、动态可扩展的框架&#x…

设计模式7原则

链接&#xff1a;设计模式7原则 (qq.com) 设计模式7原则JAVA代码实现 (qq.com)

2024年7月29日(web nginx)

web 一、web基本概念和常识 Web:为用户提供的一种在互联网上浏览信息的服务,Web服务是动态的、可交互的、跨平台的和图形化的。 Web 服务为用户提供各种互联网服务,这些服务包括信息浏览服务,以及各种交互式服务,包括聊天、购物、学习等等内容。 Web 应用开发也经过了几代技术…

Linux基础复习(五)

前言 本文介绍了Linux常用命令&#xff0c;接Linux基础复习&#xff08;四&#xff09; 一、常用命令 命令通配符 在Linux中&#xff0c;命令通配符&#xff08;也称为通配符模式或通配符表达式&#xff09;是用来匹配文件名或其他字符串的一种特殊字符。这些通配符可以帮助…

leetcode日记(61)矩阵置零

看起来很简单的题目&#xff0c;最简单粗暴的方法是建立两个数组记录需要置零的行和列&#xff0c;但是题目中有一个进阶版要求&#xff1a; 进阶&#xff1a; 一个直观的解决方案是使用 O(mn) 的额外空间&#xff0c;但这并不是一个好的解决方案。一个简单的改进方案是使用 O…

VC14(VC2015)安装失败报错0x80240017

百度网盘链接&#xff1a;https://pan.baidu.com/s/1ybBriAXfxtvLvk7ve2zwIg?pwd1111 提取码&#xff1a;1111 必须按以下顺序安装&#xff1a; clearcompressionflag.exe、KB2919355、KB2932046、KB2959977、KB2937592、KB2938439、KB2934018。 KB2919442 是 Windows 8.1 更…

【根据字符出现频率排序】python刷题记录

R2-字符串算法 包哈希表的呀。 注意 class Solution:def frequencySort(self, s: str) -> str:dictdefaultdict(list)#字符串不能直接排序&#xff0c;需要转换为列表["a","b","c"]slist(s)for str in s:if not dict[str]:dict[str]1else:…

扫码登录方案

以哔哩哔哩扫码登录为例 二维码解码后内容为&#xff1a;https://passport.bilibili.com/h5-app/passport/login/scan?navhide1&qrcode_keye60869ce7f5235c7123175a7effc6f90&frommain-fe-header 扫码登陆&#xff0c;利用已登录设备授权未登录设备登录的方式 扫码…

android settings提示音开关状态与修改(一)

android系统&#xff0c;settings提示音类型&#xff1a; 提示音开关默认状态&#xff0c;定义文件&#xff1a; frameworks/base/packages/SettingsProvider/res/values/defaults.xml 提示音默认定义&#xff1a; // 锁屏提示音 <integer name"def_lockscreen_sounds_…

前端canvas——贝塞尔曲线

曲线之美&#xff0c;不在于曲线本身&#xff0c;而在于用的人。 所以就有了这期贝塞尔曲线。 新规矩&#xff0c;先上个GIT。 效果图 开局一张图&#xff0c;代码全靠编。 代码 画骨 先想着怎么画一个心形吧&#xff0c;等你想好了&#xff0c;就知道怎么画了。 首先就还…

知识图谱增强的RAG(KG-RAG)详细解析

转自&#xff1a;知识图谱科技 这是一个与任务无关的框架&#xff0c;它将知识图谱&#xff08;KG&#xff09;的显性知识与大型语言模型&#xff08;LLM&#xff09;的隐含知识结合起来。这是该工作的arXiv预印本 https://arxiv.org/abs/2311.17330 。 我们在这里利用一个名为…

DP的优化途径---单调队列

1.前缀和单调队列&#xff1a;https://www.acwing.com/problem/content/137/ 我们先预处理下前缀和&#xff0c;以下标为i的点为有边界&#xff1a; 也就是求()的min&#xff0c;考虑到j的范围是定值&#xff0c;用单调队列维护即可。 AC代码&#xff1a; #include<bits/…

家具缓冲器:提升家居体验的得力助手

在家具和工业设备的设计与制造中&#xff0c;钢珠滑轨缓冲器的安装与否一直是一个备受争议的话题。钢珠滑轨缓冲器作为一种能够减少冲击和噪音的装置&#xff0c;其存在具的价值&#xff0c;但也并非在所有情况下是必需的。首先&#xff0c;从功能和使用体验的角度来看&#xf…

【C++题解】1581. 马里奥的银币1

问题&#xff1a;1581. 马里奥的银币1 类型&#xff1a;数组找数 题目描述&#xff1a; 马里奥有很多银币&#xff0c;有一天他得到了一张魔法卡&#xff0c;只要使用这张魔法卡&#xff0c;就可以使得他的银币里面的最大的银币金额变得更大。如果他最大的银币是偶数的金额&a…

【Vue3】watchEffect

【Vue3】watchEffect 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本文…

001.精读《Big Data: A Survey》

文章目录 1. 引言2. 精读2.1 摘要2.2 背景2.4 相关技术2.5 相关流程2.6 应用场景 3. 总结 1. 引言 大数据精读周刊首次与大家正式见面。我们每周将精读并分析几篇精选文章&#xff0c;试图讨论并得出结论性观点。我们的目标是通过深入探讨&#xff0c;帮助大家更好地理解大数据…

力扣高频SQL 50题(基础版)第二十五题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第二十五题619.只出现一次的最大数字题目说明实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第二十五题 619.只出现一次的最大数字 题目说明 MyNumbers 表&#xff1a; ------…

Qt,获取其他.exe文件的标准输出流的信息(printf/print的输出信息)

比如&#xff0c;通过Python编写爬虫软件功能是运行程序获取豆瓣电影排行榜信息&#xff0c;并通过print打印出来。将其打包成.exe,通过Qt来调用&#xff0c;并获取到.exe程序运行的结果 简单示例代码&#xff1a; // 创建 QProcess 对象QProcess process;// 连接信号槽以获取…

java计算器,输入公式和对应变量的值

目标&#xff1a;最近想写个东西&#xff0c;本质就是一个计算器&#xff0c;我们可以输入公式&#xff08;例如&#xff1a;ab&#xff09;&#xff0c;然后把公式的值&#xff08;a:10,b:20&#xff09;也输入进去。最后得到结果。核心&#xff1a;这个想法核心部分就是给一个…

Git远程仓库推送

这里我只连接了两个站点的远程仓库&#xff0c;一个是国内的Gitee&#xff0c;另一个是Github&#xff0c;这两个站点的连接方式主要有两种&#xff0c;第一种就是通过https来连接远程仓库&#xff0c;另一种是通过ssh公钥来连接&#xff0c;这两个站点练接的大致过程都是一样的…