贪心的思想

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;
}

加油 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity中的功能解释(数学位置相关和事件)

向量计算 Vector3.Slerp&#xff08;起点坐标&#xff0c;终点坐标&#xff0c;t&#xff09;&#xff0c;可是从起点坐标以一个圆形轨迹到终点坐标&#xff0c;有那么多条轨迹&#xff0c;那怎么办 Vector3.Slerp 进行的是沿球面插值&#xff0c;因此并不是沿着严格的“圆形…

【CSS】盒子模型

width 宽度 、height 高度 、padding 内边距 、margin 外边距 ( 外边距合并、子元素外边距塌陷问题 )border 边框border-radius 圆角box-shadow 阴影overflow 溢出float 浮动 ( 父元素塌陷问题 ) 盒子模型&#xff08;Box Model &#xff09;是指在网页设计中&#xff0c;用于描…

Linux云计算 |【第四阶段】RDBMS1-DAY2

主要内容&#xff1a; 常用函数&#xff08;函数分类1&#xff1a;单行、分组&#xff1b;函数分类2&#xff1a;字符、数学、日期、流程控制&#xff09;、分组查询group by、连接查询 一、常用函数 1. 按使用方式分类 ① 单行函数 单行函数&#xff08;Scalar Functions&…

老古董Lisp实用主义入门教程(12):白日梦先生的白日梦

白日梦先生的白日梦 白日梦先生已经跟着大家一起学Lisp长达两个月零五天&#xff01; 001 粗鲁先生Lisp再出发002 懒惰先生的Lisp开发流程003 颠倒先生的数学表达式004 完美先生的完美Lisp005 好奇先生用Lisp来探索Lisp006 好奇先生在Lisp的花园里挖呀挖呀挖007 挑剔先生给出…

构建高可用和高防御力的云服务架构第二部分:SLB负载均衡(2/5)

在现代云服务中&#xff0c;负载均衡&#xff08;Load Balancing&#xff09;是一种关键技术&#xff0c;用于优化资源利用、最小化响应时间、提高系统的可伸缩性和可靠性。负载均衡器位于客户端和服务器之间&#xff0c;根据预设的策略将请求分发到多个服务器上&#xff0c;以…

如何使用ssm实现基于web的山东红色旅游信息管理系统的设计与实现

TOC ssm716基于web的山东红色旅游信息管理系统的设计与实现jsp 绪论 1.1研究背景 从古到今&#xff0c;信息的录入&#xff0c;存储&#xff0c;检索都受制于社会生产力的发展&#xff0c;不仅仅浪费大量的人力资源还需要浪费大量的社会物资&#xff0c;并且不能长时间的保…

计算机前沿技术-人工智能算法-生成对抗网络-算法原理及应用实践

计算机前沿技术-人工智能算法-生成对抗网络-算法原理及应用实践 1. 什么是生成对抗网络&#xff1f; 生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;简称GANs&#xff09;是由Ian Goodfellow等人在2014年提出的一种深度学习模型&#xff0c;主要用于数…

JavaEE: 深入探索TCP网络编程的奇妙世界(三)

文章目录 TCP核心机制TCP核心机制三: 连接管理建立连接(三次握手)断开连接(四次挥手)三次握手/四次挥手 流程简图 TCP核心机制 前一篇文章 JavaEE: 深入探索TCP网络编程的奇妙世界(二) 书接上文~ TCP核心机制三: 连接管理 建立连接(三次握手),断开连接(四次挥手). 这里的次数…

二叉树的前序遍历,中序遍历,后序遍历(非递归方法+C语言代码)

#include<stdlib.h> #include<stdio.h> #include<assert.h> #include<stdbool.h> //定义一个二叉树结点结构体 typedef int ElemTpye; typedef struct TreeNode {ElemTpye data;struct TreeNode* left;struct TreeNode* right; }TreeNode; //创建结点 …

【中间件——基于消息中间件的分布式系统的架构】

1. 基于消息中间件的分布式系统的架构 从上图中可以看出来&#xff0c;消息中间件的是 1&#xff1a;利用可靠的消息传递机制进行系统和系统直接的通讯 2&#xff1a;通过提供消息传递和消息的排队机制&#xff0c;它可以在分布式系统环境下扩展进程间的通讯。 1.1 消息中间件…

影视站群程序大对比,苹果cmsv10 vs海洋cms

在影视站群程序领域&#xff0c;苹果CMSv10和海洋CMS是两款备受站长们青睐的程序。它们分别具备各自的优势&#xff0c;适合不同需求的站群管理和优化。以下是两者的详细对比&#xff0c;并重点介绍苹果CMS的主要优势和插件功能。 苹果CMSv10简介 maccmscn 苹果CMSv10&#x…

CV之OCR:GOT-OCR2.0的简介、安装和使用方法、案例应用之详细攻略

CV之OCR&#xff1a;GOT-OCR2.0的简介、安装和使用方法、案例应用之详细攻略 目录 GOT-OCR2.0的简介 1、更新 GOT-OCR2.0的安装和使用方法 1、安装 安装环境cuda11.8torch2.0.1 安装包 安装Flash-Attention GOT权重&#xff1a;1.43G 2、演示 3、训练 4、评估 GOT-…

记录Mac编译Android源码踩过的坑

学习Android源码&#xff0c;如果电脑配置还不错&#xff0c;最好还是下载一套源码&#xff0c;经过编译后导入到Android Studio中来学习&#xff0c;这样会更加的直观&#xff0c;代码之间的跳转查看会更加方便。因此&#xff0c;笔者决定下载并编译一套源码&#xff0c;以利于…

[Redis][哨兵][下]详细讲解

目录 1.安装部署(基于Docker)1.编排Redis主从节点2.编排Redis-Sentinel节点 2.重新选举1.redis-master宕机之后2.redis-master重启之后3.总结 3.选举原理4.总结 1.安装部署(基于Docker) 1.编排Redis主从节点 编写docker-compose.yml 创建/root/redis/docker-compose.yml&…

【web安全】——信息收集

一、收集域名信息 1.1域名注册信息 工具&#xff1a;站长之家 whois查询 SEO综合查询 1.2子域名收集 原理&#xff1a;字典爆破&#xff0c;通过字典中的各种字符串与主域名拼接&#xff0c;尝试访问。 站长之家 直接查询子域名 ip138.com https://phpinfo.me/domain/ …

StoryMaker 在文本到图像的生成过程中实现一致的字符

StoryMaker 是一种个性化解决方案&#xff0c;它不仅能保持多个角色场景中面部的一致性&#xff0c;还能保持服装、发型和身体的一致性&#xff0c;从而有可能制作出由一系列图像组成的故事。 StoryMaker 生成图像的可视化。 前三行讲述的是 "上班族 "一天的生活&…

创建javaWeb项目(详细版本)2021年2月

1、新建一个java项目 2、点击工程名称&#xff0c;找到add framework support&#xff0c;并点击 建好如图 3、分别在工程目录下创建resourse文件夹和web目录下创建classes和lib文件夹 建好如图 4、file找到 project structure 5、选中resourse 将其mark as sources 6、路径改…

关于frp Web界面-----frp Server Dashboard 和 frp Client Admin UI

Web 界面 官方文档&#xff1a;https://gofrp.org/zh-cn/docs/features/common/ui/ 目前 frpc 和 frps 分别内置了相应的 Web 界面方便用户使用。 客户端 Admin UI 服务端 Dashboard 服务端 Dashboard 服务端 Dashboard 使用户可以通过浏览器查看 frp 的状态以及代理统计信…

godot4.2入门项目 dodge_the_creep学习记录

前言 在学习博客Godot4 你的第一个2d游戏中的项目时&#xff0c;遇到了点小问题&#xff0c;记录一下。 官方项目 传送门 问题 怪兽直接从屏幕中间部分冒出来&#xff0c;以及角色出现时位于屏幕外角色被设置的背景图遮挡 解决方法 1.节点的位置没有对齐&#xff0c;正确示例…