50.哀家要长脑子了!

news2024/11/27 14:39:11
1.1705. 吃苹果的最大数目 - 力扣(LeetCode)

 贪心贪在哪里,用一个优先队列(小根堆)存储腐烂日期和该日期苹果腐烂的数量。优先吃掉距离腐烂日期最近的苹果。吃苹果分为两个阶段,第一个是在1-n天内,第二个阶段时n天之后,n天之后可以吃掉的苹果数量由剩余可以吃的日期和苹果数量中的较小值决定。

class Solution {
typedef pair<int, int> PII;
public:
    int eatenApples(vector<int>& apples, vector<int>& days) {
        // 存储苹果日期和该日期腐烂的苹果个数 
        priority_queue<PII, vector<PII>, greater<PII>> pq;

        // 最终可以吃掉的苹果个数和当日日期
        int res = 0, i = 0;
        // 总天数
        int n = apples.size();

        while(i < n){
            // 移除腐烂苹果
            while(!pq.empty() && pq.top().first <= i)
                pq.pop();
            
            // 计算此时这个苹果的腐烂日期
            int exp = i + days[i];
            // 添加新的苹果信息
            if(apples[i] > 0)
                pq.push({exp, apples[i]});
            
            // 当队列非空时,有苹果可以吃
            if(!pq.empty()){
                // 拿出这个日期的所有苹果
                auto arr = pq.top();
                pq.pop();
                // 吃掉一个苹果
                arr.second--;
                // 一天只能吃一个苹果,如果这个日期的苹果没有吃完,剩余苹果放回去
                if(arr.second != 0){
                    pq.emplace(arr.first, arr.second);
                }
                res++;
            }
            // 日子像旋转木马 在脑海里转不停~ 
            i++;
        }

        // n天之后还有苹果可以吃 
        while(!pq.empty()){
            // 移除腐烂苹果
            while(!pq.empty() && pq.top().first <= i){
                pq.pop();
            }
            
            // 空空如也~
            if(pq.empty())
                break;
            
            // 拿出
            auto arr = pq.top();
            pq.pop();
            
            // 苹果的腐烂日期 和 苹果数量 被小的控制 懂自懂
            int rem = min(arr.first-i, arr.second);
            res += rem;
            i += rem;
        }
        return res;
    }
};
2.1630. 等差子数组 - 力扣(LeetCode)

 狐假虎威的中等题、、

class Solution {
public:
    bool isCha(vector<int> &nums){
        sort(nums.begin(), nums.end());
        int dif = nums[1] - nums[0];
        for(int i = 1; i < nums.size(); i++)
            if(dif != nums[i] - nums[i-1]) return false;
        return true;
    }
    vector<bool> checkArithmeticSubarrays(vector<int>& nums, vector<int>& l, vector<int>& r) {
        vector<bool> res;
        int n = l.size();
        for(int i = 0; i < n; i++) {
            vector<int> temp;
            for(int j = l[i]; j <= r[i]; j++){
                temp.push_back(nums[j]);
            }
            bool flag = isCha(temp);
            res.push_back(flag);
        }
        return res;
    }
};
3.870. 优势洗牌 - 力扣(LeetCode)

我感觉准备蓝桥杯的时候,做过类似的,我以为的贪心是把优先匹配差值最小的对应nums1元素,然而并不是。。。

后面看了挺久的感觉。。能想到是田忌赛马但是不知道怎么实现的,哈哈。(额..并不是很好笑好吗,谢谢)

贪心贪在哪里,贪在如果这个nums1元素不能满足大于最小的nums2元素的话,的话那就直接把它放在nums2最大元素的位置,但是这个nums2元素的位置不能改变,用一个数组来记录nums2从小到大的元素及其对应下标。

class Solution {
public:
    vector<int> advantageCount(vector<int>& nums1, vector<int>& nums2) {
        int n = nums1.size();
        vector<int> res(n);
        sort(nums1.begin(), nums1.end());
        
        vector<int> ids(n);
        iota(ids.begin(), ids.end(), 0);
        sort(ids.begin(), ids.end(), [&](int i, int j){
            return nums2[i] < nums2[j];
        });

        int left = 0, right = n-1;
        for(int x : nums1){
            // 如果这个nums1能满足要求,就把他放在对应最小的nums2的位置,如果不能就放在最大的nums2的位置
            res[x > nums2[ids[left]] ? ids[left++] : ids[right--] ] = x;
        }
        return res;
    }
};
4.507. 完美数 - 力扣(LeetCode) 

不好意思啊,十分抱歉的水了一题(咬牙切齿),谢谢(哎呀,树莓说话太上头了

 

class Solution {
public:
    bool checkPerfectNumber(int num) {
        vector<int> mul;
        int res = 0;
        for(int i = 1; i < num; i++){
            if(num % i == 0)    
                mul.push_back(i);
        }

        int t = accumulate(mul.begin(), mul.end(), 0);
        if(t == num) 
            return true;
        return false;
    }
};
 5.202312-2 因子化简

 我的玛雅。。我真的不知道到时候我要怎么去过这个认证,我的天爷。。。。。

 其实没什么算法,但是这个操作。。。。。。太太太让我不知所措了,自己写的时候还是理不清

#include<iostream>
#include<vector>
#include<math.h>

using namespace std;

int main(){
    int q;
    cin >> q;
    
    vector<vector<long long>> a(q, vector<long long>(2));
    for(int i = 0; i < q; i++){
        cin >> a[i][0];
        cin >> a[i][1];
    }
    
    // 创建质数表
    vector<int> b;
    int n = pow(10, 5);
    int length = 0;
    int j; 
    for(int i = 2; i < n; i++){
        int m = sqrt(i);
        for(j = 2; j <= m; j++){
            if(i % j ==0) break;
        }
        if(j >= m){
            b.push_back(i);
            length++;
        }
    }

    
    for(int i = 0; i < q; i++){

        int count = -1;
        vector<vector<int>> c;

        for(int j = 0; j < length; j++){

            bool flag = true;
            while(a[i][0]%b[j] == 0 && a[i][0] != 0){
                // 添加新的质数
                if(flag){
                    count++;
                    c.push_back({b[j],0});
                    flag = false;
                }   
                // 增加对应质数的指数
                c[count][1]++;
                a[i][0] /= b[j];
            }   
            if(a[i][0] == 1)
                break;    
        } //Jfor

        // 计算
        long long sum = 1;
        for(int k = 0; k < c.size(); k++){
            if(c[k][1] >= a[i][1]){
                sum *= pow(c[k][0], c[k][1]);
            }
        }
        cout << sum << endl;
    }  //Ifor

   return 0;
}

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

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

相关文章

MySQL 中的 LAST_INSERT_ID()函数详解

在 MySQL 数据库中&#xff0c;LAST_INSERT_ID()是一个非常有用的函数。它可以帮助我们获取最近一次插入操作所生成的自增 ID 值。本文将详细解释 MySQL 中的LAST_INSERT_ID()函数及其用途。 一、函数介绍 LAST_INSERT_ID()是 MySQL 中的一个内置函数&#xff0c;它返回最近一…

跨平台音乐播放器Feishin

什么是 Feishin &#xff1f; Feishin 是一款现代的自托管音乐播放器&#xff0c;支持多种音乐来源和功能。它是由Sonixd 的重构版本发展而来&#xff0c;能够与 Navidrome 或 Jellyfin API 音乐服务器兼容&#xff0c;目前还不支持 Subsonic API 。Feishin 具有现代化的用户界…

【mmsegmentation】Loss模块详解(入门)以调用FocalLoss为例

1、mmdet中损失函数模块简介 1.1. Loss的注册器 先来看段代码&#xff1a;mmseg/models/builder.py # mmseg/registry/registry.py # mangage all kinds of modules inheriting nn.Module # MODELS Registry(model, parentMMENGINE_MODELS, locations[mmseg.models])from mm…

风格迁移项目一:如何使用

前言 由于我不太会pr&#xff0c;所以直接新建的项目&#xff0c; 原项目地址&#xff1a;https://github.com/Optimistism/Style-transfer 原项目代码的讲解地址&#xff1a;https://www.bilibili.com/video/BV1yY4y1c7Cz/ 本项目是对原项目的一点点完善。 项目地址&…

C语言复习概要(一)

本文 C语言入门详解&#xff1a;从基础概念到分支与循环1. C语言常见概念1.1 程序的基本结构1.2 变量作用域和存储类1.3 输入输出1.4 编译与运行 2. C语言中的数据类型和变量2.1 基本数据类型2.2 变量的声明与初始化2.3 常量与枚举 3. C语言的分支结构3.1 if语句3.2 if-else语句…

Python笔记 - 函数、方法和类装饰器

前言 装饰器最早出现是Python2.4版本&#xff0c;为什么这个版本开始存在&#xff1f;这是因为最早标记类方法的做法是&#xff1a; def foo(self):perform method operation foo classmethod(foo)当方法体过长的时候很容易让人忽略掉最后的语句classmethod(foo)&#xff0c…

Win10之解决:设置静态IP后,为什么自动获取动态IP问题(七十八)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

域内密码喷洒 Password Spray 实验

password spray 1. 实验网络拓扑 kali: 192.168.72.128win2008: 192.168.135.129 192.168.72.139win7: 192.168.72.149win2012:(DC) 192.168.72.131 2. 简单原理 Kerberos针对同一个用户&#xff0c;多次的密码尝试请求有锁定保护策略。 但是我们可以切换用户&#xff0c;…

【Streamlit案例】制作销售数据可视化看板

目录 一、案例效果 二、数据分析 三、加载数据 四、网站前端 &#xff08;一&#xff09;网页标题和图标 &#xff08;二&#xff09;侧边栏和多选框 &#xff08;三&#xff09;主页面信息 ​&#xff08;四&#xff09;主页面图表 &#xff08;五&#xff09;隐藏部…

基于四种网络结构的WISDM数据集仿真及对比:Resnet、LSTM、Shufflenet及CNN

在上节中&#xff0c;我们已经详细介绍了WISDM数据集及如何使用CNN网络训练&#xff0c;得到了六个维度的模型仿真指标及五个维度的可视化分析&#xff0c;那么现在我们将训练模型推广到其他网路结构中去&#xff0c;通过仿真实验来对比一下不同网络之间对于WISDM数据集的训练效…

【docker笔记8-镜像推送】

docker笔记8-镜像推送 一、基本命令二、案例1.Java demo2.打包镜像 一、基本命令 &#xff08;1&#xff09;推送镜像到远程仓库 docker tag local-image:tagname new-repo:tagname docker push new-repo:tagname这里首先要登录到docker&#xff0c;然后需要输入登录用户名和…

构建electron项目

1. 使用electron-vite构建工具 官网链接 安装构建工具 pnpm i electron-vite -g创建electron-vite项目 pnpm create quick-start/electron安装所有依赖 pnpm i其他 pnpm -D add sass scss1. 启动项目 2. 配置 package.json "dev": "electron-vite dev --…

【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错

1. 运行项目 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Appl…

Chromium 修改UA的几种办法方法c++

第一种方式 启动浏览器添加命令行 格式 --user-agent"自定义的UA" 1、C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe --user-agent"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome…

vgg19提取特征

一般来说&#xff0c;大家使用VGG16&#xff0c;用的是第四列的网络架构&#xff0c;而使用VGG19&#xff0c;使用的就是第六列的网络架构。 使用vgg进行提取特征&#xff0c;在这个项目中&#xff0c;使用的就是每一块卷积层的第一层。 import torch.nn as nn from torchvis…

T10:数据增强

T10周&#xff1a;数据增强 **一、前期工作**1.设置GPU,导入库2.加载数据 **二、数据增强****三、增强方式**方法一&#xff1a;将其嵌入model中方法二&#xff1a;在Dataset数据集中进行数据增强 **四、训练模型****五、自定义增强函数****六、总结** &#x1f368; 本文为&am…

idea使用ant源码运行tomcat8.5

1 安装ant 下载ant 下载地址 使用apache-ant-1.10.15版本 将压缩包放到/Library/Java/ant解压 设置ant环境变量 打开finder到用户根目录 按下shiftcmd.显示隐藏文件 打开隐藏文件.zprofile 按照以下格式设置环境变量 #ant export ANT_HOME/Library/Java/ant/apache-a…

数据丢失怎么办?2024四款恢复工具帮你忙!

数据是我们日常生活和工作中不可或缺的一部分&#xff0c;然而&#xff0c;由于误操作、硬件故障或其他原因导致的数据丢失却是常有的事情。这时候&#xff0c;一款可靠的数据恢复工具就显得尤为重要。 福昕数据恢复 直达链接&#xff1a;www.pdf365.cn/foxit-restore/ 假设…

Linux命令:用于显示 Linux 发行版信息的命令行工具lsb_release详解

目录 一、概述 二、用法 1、基本用法 2、选项 3、获取帮助 三、示例 1. 显示所有信息 2. 只显示发行版名称 3. 只显示发行版版本号 4. 只显示发行版代号 5. 只显示发行版描述 6. 只显示值&#xff0c;不显示标签 四、使用场景 1、自动化脚本 2、诊断问题 3、环…

【KVM】虚拟化技术及实战

一&#xff0c;KVM简介 KVM全称为QEMU-KVM。 KVM可以模拟内存&#xff0c;cpu的虚拟化&#xff0c;不能模拟其他设备虚拟化。 QEMU可以模拟I/O设备&#xff08;网卡&#xff0c;磁盘等&#xff09; 两者结合&#xff0c;实现真正意义上的虚拟化。 从rhel6版本开始&#xff0c…