上海计算机学会 2023年6月月赛 乙组T3 工作安排(结构体排序、贪心算法)

news/2024/7/15 18:59:31 标签: 贪心算法, 算法, 数据结构, c++, 图论, 学习

第三题:T3工作安排

标签:结构体排序、算法>贪心算法

题意:有 n n n份任务。完成第 i i i份任务需要 t i t_i ti的时间,在这份任务没有完成之前,每一个单位时间会收到 f i f_i fi单位的罚款。求以什么顺序安排这些任务,才能使罚款总额最少?

数据范围: 1 < = n ,   t i ,   f i < = 200 , 000 1<=n,\ t_i,\ f_i<=200,000 1<=n, ti, fi<=200,000

题解:这道题有点像 洛谷P1012 [NOIP1998 提高组] 拼数 这道题。
本质来说就是进行结构体排序的时候,比较的内容不再是简单的两个对象(比如代码里面 x x x y y y)各自的数据内容,而是说需要两者结合进行比较。

像这道题,有两份任务 x x x y y y,我到底是把 x x x先完成还是先把 y y y先完成,我们需要考虑到先完成 x x x任务,那对于 y y y来说就得等 x . t x.t x.t的时间,那罚款就是 x . t ∗ y . f x.t*y.f x.ty.f;同理先完成 y y y任务对于 x x x来说的罚款是 y . t ∗ x . f y.t*x.f y.tx.f,我们需要贪心的考虑哪种所带来的罚款会少点。

还有个细节就是等待时间应该是累积的,对于第 i i i项任务没完成之前,需要收到罚款的时间是前 i i i项任务时间之和。

代码

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
struct node {
	ll t, f;
}p[200005];

bool cmp(node x, node y) {
	return x.t * y.f < y.t * x.f;
}

int main() {
	ll n, sum = 0, ans = 0;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> p[i].t >> p[i].f;
	}
	sort(p + 1, p + 1 + n, cmp);
	for (int i = 1; i <= n; i++) {
		sum += p[i].t;
		ans += p[i].f * sum;
	}
	  cout << ans << endl;
    return 0;
}

http://www.niftyadmin.cn/n/5481101.html

相关文章

SpringCloudAlibaba-整合openfeign和loadbalence(三)

目录地址&#xff1a; SpringCloudAlibaba整合-CSDN博客 因为是order服务&#xff0c;调用user和product服务&#xff1b;所以这里在order模块操作&#xff1b; 1.引入依赖 <!--openfeign--> <dependency><groupId>org.springframework.cloud</groupId…

LeetCode - 1702. 修改后的最大二进制字符串

文章目录 解析AC CODE 题目链接&#xff1a;LeetCode - 1702. 修改后的最大二进制字符串 解析 详细题解&#xff1a;贪心&#xff0c;简洁写法&#xff08;Python/Java/C/Go/JS/Rust&#xff09; 思路很牛b。 简单来说我们需要想办法将0配对&#xff0c;将其变为10&#xff0…

30.WEB渗透测试-数据传输与加解密(4)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;29.WEB渗透测试-数据传输与加解密&#xff08;3&#xff09;-CSDN博客 加解密需要用到的源…

G 2024-04-11Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-11统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Syncthing: 开源持续文件同步工具 创建周期:3789 天开发语言:Go协议类型:Mozilla Public License 2.0Star数量:59188 个Fork数量:…

百度驾驶证C++离线SDK V1.1 C#接入

百度驾驶证C离线SDK V1.1 C#接入 目录 说明 效果 项目 代码 下载 说明 自己根据SDK封装了动态库&#xff0c;然后C#调用。 SDK包结构 效果 项目 代码 using Newtonsoft.Json; using OpenCvSharp; using System; using System.Collections.Generic; using System.…

SpringCloud系列(2)--SpringCloud和SpringBoot技术选型

前言&#xff1a;SpringCloud是微服务架构的一揽子解决方案&#xff0c;SpringBoot是一种技术&#xff0c;要使用SpringCloud&#xff0c;也需要使用到SpringBoot&#xff0c;所以要使用SpringCloud时&#xff0c;必须也要考虑到SpringBoot的适配问题 1、查看SpringCloud和与之…

如何在 YouTube、Medium、Twitter 和 Linkedin 上使用 ChatGPT 赚钱

人工智能SEO&#xff1a;未来内容优化的革命 介绍 在当今的数字时代&#xff0c;利用 ChatGPT 等人工智能工具已经成为在线内容创建和货币化领域的游戏规则改变者。 本指南探讨了如何在 YouTube、Medium、Twitter 和 Linkedin 等各种平台上有效使用 ChatGPT&#xff0c;不仅可以…

RTSP/Onvif视频安防监控平台EasyNVR调用接口返回匿名用户名和密码的原因排查

视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。平台拓展性强、支持二次开发与集成&#xff0c;可应用在景区、校园、水利、社区、工地等场…