贪心的思想

news2024/11/18 7:39:38

803.区间合并

给定 n 个区间 [li,ri],要求合并所有有交集的区间。

注意如果在端点处相交,也算有交集。

输出合并完成后的区间个数。

例如:[1,3] 和 [2,6] 可以合并为一个区间 [1,6]。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含两个整数 l 和 r。

输出格式

共一行,包含一个整数,表示合并区间完成后的区间个数。

数据范围

1≤n≤100000
−10^9≤li≤ri≤10^9

输入样例:

5
1 2
2 4
5 6
7 8
7 9

输出样例:

3

代码 

#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;

typedef pair<int,int> PII;

const int N = 1e5 + 10;
vector<PII> pos;

int n;
int res = 1;

bool cmp(PII A,PII B){
    return A.first < B.first;
}

int main()
{
    cin >> n;
    for(int i = 0,l,r;i < n;i ++){
        cin >> l >> r;
        pos.push_back({l,r});
    }
    
    sort(pos.begin(),pos.end(),cmp);
    int ist = pos[0].first, ed = pos[0].second;
    for(int i = 1;i < n;i ++){
        auto [l,r] = pos[i];
        // cout << l << " " << r << endl;
        if(l <= ed){
            ed = max(ed,r);
        }else{
            ist = l, ed = r;
            res ++;
        }
    }
    
    cout << res << endl;
    
    return 0;
}

905.区间选点 

给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。

输出选择的点的最小数量。

位于区间端点上的点也算作区间内。

输入格式

第一行包含整数 N,表示区间数。

接下来 N 行,每行包含两个整数 ai,bi,表示一个区间的两个端点。

输出格式

输出一个整数,表示所需的点的最小数量。

数据范围

1≤N≤10^5,
−10^9≤ai≤bi≤10^9

输入样例:

3
-1 1
2 4
3 5

输出样例:

2

代码 

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 1e5 + 10;

struct T{
    int l;
    int r;
} a[N];

bool cmp(T A,T B){
    return A.l < B.l;
}

int main()
{
    int n;
    cin >> n;
    for(int i = 0;i < n;i ++) cin >> a[i].l >> a[i].r;
    
    sort(a, a + n, cmp);
    
    int res = 0;
    int ist = -2e9 + 10,ed = -2e9 + 10;
    for(int i = 0;i < n;i ++){
        if(a[i].l <= ed){
            ist = max(ist,a[i].l), ed = min(ed,a[i].r);
        }else{
            ist = a[i].l, ed = a[i].r;
            res ++;
        }
    }
    
    cout << res << endl;
    return 0;
}

J. Stacking of Goods 

Problem - J - Codeforces

You are a grocery store owner, and there are nn goods in your store. Each good i has an associated weight wi, initial volume vi, and compression coefficient ci.

You stack all the goods into one pile to keep the store tidy. Because goods can be compressed, assuming that the sum of the weights of the items above the goods i is W (Not including itself), then after stacking, the actual volume of the goods ii will become vi−ci×W.

The space in your store is really limited, so you want to know the minimum possible value of the sum of the actual volumes of the items.

Input

The first line contains a single integer n (1≤n≤105)n (1≤n≤105), representing the number of goods.

For the following n lines, each line contains three integers wi,vi,ci (1≤wi≤10^5,1≤vi≤10^12,0≤ci<vi∑wi), representing the weight, volume, and compression coefficient of the ii-th good.

It's guaranteed that the actual volume of each good will never be compressed into a negative number or zero.

你是一家杂货店的店主,店里有 n 件商品。每种商品 i 都有相应的重量 wi 、初始体积 vi 和压缩系数 ci 。

为了保持商店整洁,你将所有货物堆放在一起。由于货物可以被压缩,假设货物 ii 上面的物品重量总和为 W (不包括其本身),那么堆放后,货物的实际体积 i 将变为 vi−ci×W。

您商店的空间非常有限,因此您想知道商品实际体积之和的最小值。

思路

这道题的思路是需要一定的思考的,首先我们先把v的总和算出来,其次只需要求出min(vi - ci * w),这里v肯定是固定的,那么只需要每次求出ci *w最大值即可

可以先自己思考再看思路,如下

代码

#include <iostream>
#include <tuple>
#include <vector>
#include <algorithm>

#define ll long long

using namespace std;

typedef tuple<int,ll,int> T;

vector<T> a;

int n;
ll res = 0,sum = 0;

bool cmp(T A,T B){
    ll w1 = get<0>(A), w2 = get<0>(B);
    ll c1 = get<2>(A), c2 = get<2>(B);
    return w1 * c2 < w2 * c1;
}

int main()
{
    cin >> n;
    for(ll i = 0,w,v,c;i < n;i ++){
        cin >> w >> v >> c;
        a.push_back({w,v,c});
        res += v, sum += w;
    }

    sort(a.begin(),a.end(),cmp);

    for(int i = 0;i < n;i ++){
        auto [w,v,c] = a[i];
        sum -= w;
        res -= c * sum;
    }

    cout << res << endl;

    return 0;
}

加油 

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

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

相关文章

如何通过GSR排名系统迅速提升谷歌排名?

如果你希望在谷歌上迅速提升某个关键词排名&#xff0c;或者某个关键词无论怎么优化都无法上首页&#xff0c;那么GSR关键词排名系统你就可以关注一下&#xff0c;GSR系统可以在短时间内帮助你进一步提升至首页。与传统的SEO方法不同&#xff0c;GSR侧重于外部优化&#xff0c;…

C语言进阶版第13课—字符函数和字符串函数2

文章目录 1. strstr函数的使用和模拟实现1.1 strstr函数的使用1.2 模拟实现strstr函数1.3 strstr函数和strncpy函数、puts函数的混合使用 2. strtok函数的使用**3. strerror函数的使用** 1. strstr函数的使用和模拟实现 1.1 strstr函数的使用 strstr函数是用来通过一个字符串来…

《迁移学习》—— 将 ResNet18 模型迁移到食物分类项目中

文章目录 一、迁移学习的简单介绍1.迁移学习是什么&#xff1f;2.迁移学习的步骤 二、数据集介绍三、代码实现1. 步骤2.所用到方法介绍的文章链接3. 完整代码 一、迁移学习的简单介绍 1.迁移学习是什么&#xff1f; 迁移学习是指利用已经训练好的模型&#xff0c;在新的任务上…

牛顿迭代法求解x 的平方根

牛顿迭代法是一种可以用来快速求解函数零点的方法。 为了叙述方便&#xff0c;我们用 C C C表示待求出平方根的那个整数。显然&#xff0c; C C C的平方根就是函数 f ( x ) x c − C f(x)x^c-C f(x)xc−C 的零点。 牛顿迭代法的本质是借助泰勒级数&#xff0c;从初始值开始快…

【软件测试】最新Linux大全(超详细!超级全!)

目录 前言1. 操作系统是干什么的2. Linux 是什么3. 为什么要学习 Linux4. Linux 发行版本5. Linux 系统特点6. Linux 安装7. Linux 系统启动8. Linux 操作方式9. Shell 与命令10. 命令格式 一、 Linux终端命令格式1. 终端命令格式2. 查阅命令帮助信息 二、 常用Linux命令的基本…

项目计划软件如何助力企业策略规划和执行监控

项目管理软件助力任务、时间和协作管理&#xff0c;如ZohoProjects集成了任务管理、时间跟踪、协作工具等功能&#xff0c;提高性价比&#xff0c;适合不同规模团队。其简化流程、专业度高&#xff0c;成为企业提升效率的重要工具。 一、项目计划软件的由来 项目计划软件的历史…

暴雨受邀出席2024 AI大模型生态算力峰会

9月25日&#xff0c;2024 AI大模型生态暨算力峰会在北京国家会议中心正式开幕&#xff0c;AI行业头部厂家、业界专家及人工智能行业精英齐聚一堂&#xff0c;暴雨华北大区产品总监丁海受邀出席并发表演《用AI奔赴新质生产力》的主题演讲&#xff0c;深度诠释了人工智能如何驱动…

解开BL锁之后如何安装模块及安装注意事项

本文是在解开BL锁的前提下进行的。 解开BL锁请参考:出厂非澎湃OS手机解BL锁 本文 参考&#xff1a; Magisk中文网 Magisk资源分享 ROM基地 我安装了这几个模块&#xff0c;切记先按照救砖模块。 解开BL锁之后&#xff0c;需要将下载系统ROM包提取boot.img。 目前我知道的又…

基于云开发进行快速搭建企业智能名片小程序

如何基于云开发进行快速搭建企业智能名片小程序&#xff1f; 首先&#xff0c;需要注册一个小程序账号&#xff0c;获取AppID。如果还不知道怎么注册的朋友&#xff0c;可以去看我前面写的那篇教程&#xff0c;有比较详细的注册步骤图文教程。 复制AppID&#xff0c;打开开发者…

基于SpringBoot+Vue+MySQL的旅游管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着旅游业的蓬勃发展&#xff0c;传统的旅游信息查询与订票方式已难以满足现代游客的多元化需求。为了提升用户体验&#xff0c;提高旅游管理的效率&#xff0c;我们开发了基于SpringBootVueMySQL的旅游管理系统。该系统旨在通…

大模型微调4:Alpaca模型微调、Adalora、Qlora

Alpaca模型微调&#xff1a; 整个pipeline 1. 主流底座&#xff1a;Candidate 中文&#xff1a;YI-34B 英文&#xff1a;LLama&#xff0c;mistral 2. 验证&#xff1a; 我们自己的Instructoin data 通用的Instruction data&#xff08;适合我们场景的&#xff09; 3. 收集…

kubernetes存储入门(kubernetes)

实验环境依旧是三个节点拉取镜像&#xff0c;然后在master节点拉取资源清单&#xff1a; 然后同步会话&#xff0c;导入镜像&#xff1b; 存储入门 ConfigMap volume卷--》volumemount&#xff08;挂载卷&#xff09; Glusterfs NFS ISCSI HostPath ConfigMap Secret E…

acw(树的重心)

给定一颗树&#xff0c;树中包含 n&#x1d45b; 个结点&#xff08;编号 1∼n1∼&#x1d45b;&#xff09;和 n−1&#x1d45b;−1 条无向边。 请你找到树的重心&#xff0c;并输出将重心删除后&#xff0c;剩余各个连通块中点数的最大值。 重心定义&#xff1a;重心是指树…

基于SSM的“在线汽车交易系统”的设计与实现(源码+数据库+文档+开题报告)

基于SSM的“在线汽车交易系统”的设计与实现&#xff08;源码数据库文档开题报告) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体设计图 首页 新闻信息 用户注册 后台登录界面…

从0学习React(2)

经过上一篇的文章&#xff0c;对index.tsx文件的每行代码进行了一个简单的分析之后&#xff0c;我大概对React有了一个简单的了解。虽然也是一知半解&#xff0c;但是起码在心里已经对React有了一个基本的概念。这篇文章&#xff0c;我就讲一下关于React中index.tsx的大致框架。…

Metahuman sdk官方 AI驱动口型蓝图优化

combo stream ATL stream ( audio to lip sync) 以上时实时驱动口型 非实时驱动口型可以在metahuman blueprint里直接加上talk component&#xff0c;实现聊天/回复功能。 Talk sound可以放自己的声音/ talk chat是回复你输入的message和你聊天/ talk text是念出你输入的me…

828华为云征文|部署个人知识管理系统 SiyuanNote

828华为云征文&#xff5c;部署个人知识管理系统 SiyuanNote 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 SiyuanNote3.1 SiyuanNote 介绍3.2 SiyuanNote 部署3.3 Siyua…

Awcing 799. 最长连续不重复子序列

Awcing 799. 最长连续不重复子序列 解题思路: 让我们找到一个数组中&#xff0c;最长的 不包含重复的数 的连续区间的长度。 最优解是双指针算法&#xff1a; 我们用 c n t [ i ] cnt[i] cnt[i]记录 i i i 这个整数在区间内出现的次数。(因为每个数的大小为 1 0 5 10^5 105, …

报数游戏 - 华为OD统一考试(E卷)

2024华为OD机试&#xff08;E卷D卷C卷&#xff09;最新题库【超值优惠】Java/Python/C合集 题目描述 100个人围成一圈&#xff0c;每个人有一个编号&#xff0c;编号从1开始到100。他们从1开始依次报数&#xff0c;报到为M的人自动退出圈圈&#xff0c;然后下一个人接着从1开始…

数据链路层 ——MAC

目录 MAC帧协议 mac地址 以太网帧格式 ARP协议 ARP报文格式​编辑 RARP 其他的网络服务或者协议 DNS ICMP协议 ping traceroute NAT技术 代理服务器 网络层负责规划转发路线&#xff0c;而链路层负责在网络节点之间的转发&#xff0c;也就是"一跳"的具体传输…