牛客练习赛 小A与任务 解题报告
小A与任务
链接:
https://ac.nowcoder.com/acm/contest/369/B
来源:牛客网
题目描述
小A手头有 \(n\) 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务
第 \(i\) 个任务需要花费 \(x_i\) 的时间,同时完成第 \(i\) 个任务的时间不能晚于\(y_i\) ,时间掌控者向小A提出了一个条件:如果完成第 \(i\) 个任务的时间本应是 \(t\) ,但小A支付 \(m\) 个金币的话,他可以帮助小A在$ t−m×z_i$ 时刻完成第 \(i\) 个任务, \(z_i\) 是时间参数,会在输入中给出
小A想按时完成所有任务,请你帮他制定一个花费金币最少的方案
注意:不能使得某个任务的花费时间小于 0 ,花费的金币可以不是整数
输入描述:
第一行一个整数 \(n\) ,表示小A的任务数量
接下来\(n\)行,每行三个整数,分别表示 \(z_i,x_i,y_i\)
输出描述:
一行一个实数,表示小A最少需要花费的金币数,四舍五入保留一位小数
备注:
\(1≤n≤2×10^5\)
\(1≤x_i,z_i≤3×10^3\)
\(1≤y_i≤10^5\)
日常做不出沙比题,哎,没救了
这种看起来可以贪心搞一搞的应该很容易看出来可以拿堆延迟操作的...
首先按\(y\)定操作顺序
然后把二元组\((res,cos)\)即任务\(i\)和它剩余可以买的时间丢到堆里,维护一个当前时间戳,当时间不够用时,在堆里买就行了,没用完的任务记得放回堆就可以了
Code:
#include <cstdio>
#include <queue>
#include <algorithm>
const int N=2e5+10;
#define yuucute 233
struct node
{
int z,x,y;
bool friend operator <(node a,node b){return a.y<b.y;}
}bee[N];
#define mp(a,b) std::make_pair(a,b)
std::priority_queue <std::pair<int,int> > q;
int n;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d%d",&bee[i].z,&bee[i].x,&bee[i].y);
std::sort(bee+1,bee+1+n);
int tim=0;double ans=0;
for(int i=1;i<=n;i++)
{
q.push(mp(bee[i].z,bee[i].x));
int res=bee[i].y-tim;
if(res<bee[i].x)
{
bee[i].x-=res;
while(yuucute)
{
int re=q.top().second,cos=q.top().first;
q.pop();
if(bee[i].x>re)
{
bee[i].x-=re;
ans+=1.0*re/(1.0*cos);
}
else
{
ans+=1.0*bee[i].x/(1.0*cos);
re-=bee[i].x;
q.push(mp(cos,re));
break;
}
}
tim=bee[i].y;
}
else tim+=bee[i].x;
}
printf("%.1lf\n",ans);
return 0;
}
2019.2.15
牛客练习赛 小A与任务 解题报告的更多相关文章
- 牛客练习赛 小D的Lemon 解题报告
小D的Lemon 题意 已知 \[ g(x)=\left\{\begin{matrix} 1&,x=1\\ \sum_{i=1}^qk_i&,otherwise \end{matrix ...
- 牛客练习赛 小D的剑阵 解题报告
小D的剑阵 题意链接: https://ac.nowcoder.com/acm/contest/369/F 来源:牛客网 现在你有 \(n\) 把灵剑,其中选择第i把灵剑会得到的 \(w_i\) 攻击 ...
- 牛客OI周赛7-普及组 解题报告
出题人好评. 评测机差评. A 救救喵咪 二位偏序.如果数据范围大的话直接树状数组,不过才1000就\(O(n^2)\)暴力就ok了. #include <bits/stdc++.h> s ...
- nowcoder(牛客网)OI测试赛2 解题报告
qwq听说是一场普及组难度的比赛,所以我就兴高采烈地过来了qwq 然后发现题目确实不难qwq.....但是因为蒟蒻我太蒻了,考的还是很差啦qwq orz那些AK的dalao们qwq 赛后闲来无事,弄一 ...
- 牛客练习赛 小A与最大子段和 解题报告
小A与最大子段和 题意 在一个序列 \(\{a\}\) 里找到一个非空子段 \(\{b\}\), 满足 \(\sum\limits_{i=1}^{|b|}b_i\times i\) 最大 \(n\le ...
- 牛客OI赛制测试赛3 解题报告
前话: 话说考试描述:普及难度. 于是想在这场比赛上涨点信心. 考出来的结果:Point:480 Rank:40 然而同机房的最好成绩是 510. 没考好啊!有点炸心态,D题一些细节没有注意, ...
- 牛客 NOIp模拟1 T1 中位数 解题报告
中位数 题目描述 小\(N\)得到了一个非常神奇的序列\(A\).这个序列长度为\(N\),下标从\(1\)开始.\(A\)的一个子区间对应一个序列,可以由数对\([l,r]\)表示,代表\(A[l] ...
- 牛客 NOIp模拟1 T3 保护 解题报告
保护 题目描述 \(C\)国有\(n\)个城市,城市间通过一个树形结构形成一个连通图.城市编号为\(1\)到\(n\),其中\(1\)号城市为首都.国家有\(m\)支军队,分别守卫一条路径的城市.具体 ...
- nowcoder(牛客网)OI测试赛3 解题报告
昨天因为胡搞了一会儿社团的事情,所以错过(逃过)了nowcoder的测试赛..... 以上,听说还是普及组难度qwq,而且还有很多大佬AK(然而我这么蒻肯定还是觉得有点难度的吧qwq) 不过我还是日常 ...
随机推荐
- Luogu P1966 火柴排队
这还是一道比较简单的题目,稍微想一下就可以解决.终于有NOIP难度的题目了 首先我们看那个∑(ai-bi)^2的式子,发现这个的最小值就是排序不等式 所以我们只需要改变第一组火柴的顺序,使它和第二组火 ...
- Object-Oriented(二)原型对象
自用备忘笔记 1. 理解原型对象 只要创建函数,函数上就会创建一个 prototype 属性指向函数的原型对象. function Person() {} Person.prototype //指向该 ...
- Node 系列之url模块
引入 url: const url = require("url"); 用于URL解析.处理等操作的解决方案 1.url.parse(urlStr[, parseQueryStri ...
- UML类图及类与类之间的关系
原文地址:http://www.uml.org.cn/oobject/201211231.asp 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的 ...
- Windows 7 64位安装cURL
安装cURL. 1, 下载64位的SSL版cURL,网址: http://curl.download.nextag.com/download/curl-7.21.7-win64-ssl-sspi.zi ...
- Alpha 答辩总结模板
Alpha 答辩总结模板 每个小组提供一篇总结博客(组内共享,每个人都发布),包含: 本组(组名)所有成员(短学号,名,标注组长)(1分) 组内各成员贡献比例,如不提供,取平均分后组长得分减50% G ...
- shell脚本--变量与数组
Linux中的变量有环境变量和用户自定义变量,关于环境变量,可以查看这篇博客:linux环境变量 本文主要针对的是用户在shell脚本中定义的变量,但是环境变量也可以在shell脚本中使用. 普通变量 ...
- Java Date Compare
Date a;Date b;假设现在你已经实例化了a和ba.after(b)返回一个boolean,如果a的时间在b之后(不包括等于)返回true b.before(a)返回一个boolean,如果b ...
- Hacked VisualSVN Server by PHP to allow user change password
index.php <?php$username = $_SERVER["PHP_AUTH_USER"]; //经过 AuthType Basic 认证的用户名$authed ...
- 使用Hexo搭建Github静态博客
1. 环境环境 1.1 安装Git 默认配置就好 1.2 安装node.js 下载:http://nodejs.org/download/ 安装时直接保持默认配置即可. 2. 配置Github 1.1 ...