小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与任务 解题报告的更多相关文章

  1. 牛客练习赛 小D的Lemon 解题报告

    小D的Lemon 题意 已知 \[ g(x)=\left\{\begin{matrix} 1&,x=1\\ \sum_{i=1}^qk_i&,otherwise \end{matrix ...

  2. 牛客练习赛 小D的剑阵 解题报告

    小D的剑阵 题意链接: https://ac.nowcoder.com/acm/contest/369/F 来源:牛客网 现在你有 \(n\) 把灵剑,其中选择第i把灵剑会得到的 \(w_i\) 攻击 ...

  3. 牛客OI周赛7-普及组 解题报告

    出题人好评. 评测机差评. A 救救喵咪 二位偏序.如果数据范围大的话直接树状数组,不过才1000就\(O(n^2)\)暴力就ok了. #include <bits/stdc++.h> s ...

  4. nowcoder(牛客网)OI测试赛2 解题报告

    qwq听说是一场普及组难度的比赛,所以我就兴高采烈地过来了qwq 然后发现题目确实不难qwq.....但是因为蒟蒻我太蒻了,考的还是很差啦qwq orz那些AK的dalao们qwq 赛后闲来无事,弄一 ...

  5. 牛客练习赛 小A与最大子段和 解题报告

    小A与最大子段和 题意 在一个序列 \(\{a\}\) 里找到一个非空子段 \(\{b\}\), 满足 \(\sum\limits_{i=1}^{|b|}b_i\times i\) 最大 \(n\le ...

  6. 牛客OI赛制测试赛3 解题报告

    前话: 话说考试描述:普及难度. 于是想在这场比赛上涨点信心. 考出来的结果:Point:480     Rank:40 然而同机房的最好成绩是 510. 没考好啊!有点炸心态,D题一些细节没有注意, ...

  7. 牛客 NOIp模拟1 T1 中位数 解题报告

    中位数 题目描述 小\(N\)得到了一个非常神奇的序列\(A\).这个序列长度为\(N\),下标从\(1\)开始.\(A\)的一个子区间对应一个序列,可以由数对\([l,r]\)表示,代表\(A[l] ...

  8. 牛客 NOIp模拟1 T3 保护 解题报告

    保护 题目描述 \(C\)国有\(n\)个城市,城市间通过一个树形结构形成一个连通图.城市编号为\(1\)到\(n\),其中\(1\)号城市为首都.国家有\(m\)支军队,分别守卫一条路径的城市.具体 ...

  9. nowcoder(牛客网)OI测试赛3 解题报告

    昨天因为胡搞了一会儿社团的事情,所以错过(逃过)了nowcoder的测试赛..... 以上,听说还是普及组难度qwq,而且还有很多大佬AK(然而我这么蒻肯定还是觉得有点难度的吧qwq) 不过我还是日常 ...

随机推荐

  1. [Python]Python 使用 for 循环的小例子

    [Python]Python 使用 for 循环的小例子: In [7]: for i in range(5): ...: print "xxxx" ...: print &quo ...

  2. 非关系型数据库(nosql)介绍

    非关系型数据库也叫Nosql数据库,全称是not noly sql. 2009年初,Johan Oskarsson举办了一场关于开源分布式数据库的讨论,Eric Evans在这次讨论中提出了NoSQL ...

  3. C#大型电商项目优化(二)——嫌弃EF与抛弃EF

    上一篇博文中讲述了使用EF开发电商项目的代码基础篇,提到EF后,一语激起千层浪.不少园友纷纷表示:EF不适合增长速度飞快的互联网项目,EF只适合企业级应用等等. 也有部分高手提到了分布式,确实,性能优 ...

  4. windows 脚本

    sudo.vbs http://blog.csdn.net/qidi_huang/article/details/52242053 c:\windows\sudo.vbs 'ShellExecute ...

  5. Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)-C-Bracket Subsequence

    #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...

  6. Jquery画折线图、柱状图、饼图

    1.今天做了一个折线图,首先需要导js文件.这里有一个demo:http://files.cnblogs.com/files/feifeishi/jquery_zhexiantubingtuzhuzh ...

  7. QT 子窗口退出全屏

    m_pWidget代表子窗口, 子窗口显示全屏: m_pWidget->setWindowFlags(Qt::Dialog); m_pWidget->showFullScreen(); 子 ...

  8. python 中的三元表达式及lambda

    一.三元表达式 举一个简单的列子,很多地方都有这样的规定,比如用水或者用电,假设用水价格为3R/立方米,当你每个月用超过7立方米后,超出的水按照3.3R/立方米计价.然后写一个程序计算一个家庭每月的水 ...

  9. octave基本指令5

    octave基本指令5 控制语句 for >> v=zreos(5,1) v = 0 0 0 0 0 >> for i=1:10, > v(i) = 2^i; > ...

  10. Maven的课堂笔记1

    1 什么是maven? Maven是一个跨平台的项目管理工具,主要用于基于java平台的项目构建,依赖管理. Clean  compile  test  package  install   run ...