中文题目:工作安排

原文题目:Work Scheduling

传送门

本题可以采用贪心

算法一:按工作时间排序,如果工作能按时完成的工作就按时完成,如果工作不能按时完成就把之前价值最小的工作和当前作比较,取最优的情况。考虑使用堆维护工作价值。

算法二:按工作价值排序,因为所有工作花费的是一样的,价值大的尽量完成,考虑把工作拖到最后完成。每个工作从完成期限往前找,找到第一个空的时段,用这个时间完成工作。考虑用并查集快速查找空的时段。如果该工作完成时间>n,则一定可以完成,并查集只要维护<=n的部分。

 #include <cstdio>
#include <queue>
#include <algorithm>
#define LL long long
struct Work{int d,p;}W[];
std::priority_queue<LL,std::vector<LL>,std::greater<LL> >Q;
bool cmp(Work A,Work B){return A.d<B.d; }
int main(){
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,size=;LL ans=;
scanf("%d",&n);
for(int i=;i<=n;++i)
scanf("%d %d",&W[i].d,&W[i].p);
std::sort(W+,W+n+,cmp);
for(int i=;i<=n;++i)
if(size<W[i].d){
ans=ans+W[i].p;
++size;
Q.push(W[i].p);
}else if(Q.top()<W[i].p){
ans=ans-Q.top()+W[i].p;
Q.pop();
Q.push(W[i].p);
}
printf("%lld",ans);
//fclose(stdin);fclose(stdout);
return ;
}

#include <cstdio>
#include <algorithm>
#define LL long long
int Pre[];
struct Work{int d,p;}W[];
bool cmp(Work A,Work B){return A.p>B.p;}
int GetPre(int x){return Pre[x]==x?x:Pre[x]=GetPre(Pre[x]);}
int main(){
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n;LL ans=;
scanf("%d",&n);
for(int i=;i<=n;++i)
scanf("%d %d",&W[i].d,&W[i].p);
std::sort(W+,W+n+,cmp);
for(int i=;i<=n;++i)Pre[i]=i;
for(int i=,pre;i<=n;++i)
if(W[i].d>n){
ans=ans+W[i].p;
}else{
pre=GetPre(W[i].d);
if(!pre)continue;
ans=ans+W[i].p;
Pre[pre]=pre-;
}
printf("%lld",ans);
//fclose(stdin);fclose(stdout);
return ;
}

[BZOJ1572] WorkScheduling的更多相关文章

  1. [bzoj1572][Usaco2009 Open]工作安排Job_贪心_堆

    工作安排 Job bzoj-1572 Usaco-2009 Open 题目大意:题目链接. 注释:略. 想法: 我们将任务按照截止时间排序,枚举任务的同时顺便记录出已经做了多少任务(当前时间). 对于 ...

  2. BZOJ1572 工作安排 USACO2009

    描述 Description     Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间.他的工作日从0时刻开始,有100000 ...

  3. BZOJ1572: [Usaco2009 Open]工作安排Job

    1572: [Usaco2009 Open]工作安排Job Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 775  Solved: 337[Submit ...

  4. bzoj1572

    题解: 每一次不能满足的时候 找一个之前有过的 然后最小的 和他替换 代码: #include<bits/stdc++.h> using namespace std; ; long lon ...

  5. 【bzoj1572】[Usaco2009 Open]工作安排Job 贪心+堆

    题目描述 Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单位时间(!). ...

  6. 【贪心】bzoj1572: [Usaco2009 Open]工作安排Job

    先是没怎么理解这个贪心……然后贪心又被细节弄挂…… Description Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. ...

  7. [BZOJ1572] [Usaco2009 Open]工作安排Job(贪心 + 堆)

    传送门 把任务按照d排序 一次加入到堆中,如果当前放不进堆中,并且比堆中最小的大, 就从堆中弹出一个数,再把当前的数放进去 #include <queue> #include <cs ...

  8. bzoj1572 [Usaco2009 Open]工作安排Job【贪心 堆】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1572 尽管这一题没有看题解,但是耗时还是比本应耗费的时间要长,所以还是写一下,以提升经验 这 ...

  9. [bzoj1572]工作安排

    按照Di排序,从小到大枚举物品,考虑如果直接能选就选上,不能选就考虑替换之前价值最小的来选(显然一定是可行的,只需要在原来选价值最小的时候选这个就行了),这个东西用堆来维护即可 1 #include& ...

随机推荐

  1. Vagrant 手册之 Provisioning - Shell 配置程序

    原文地址 Provisioner 命令:"shell" 示例: node.vm.provision "shell" do |s| s.inline = < ...

  2. C# 加密解密类

    一. MD5  1 防止看到明文 数据库密码,加盐(原密码+固定字符串,然后再MD5/双MD5)  2 防篡改   3 急速秒传(第一次上传文件,保存md5摘要,第二次上传检查md5摘要)   4文件 ...

  3. oracle三大范式

    范式: 设计数据库定义的一个规则, 三大范式, 灵活运用, 人的思想是活的 一范式 1, 不存在冗余数据 同一个表中的记录不能有重复----所以主键(必须有) 2, 每个字段必须是不可再分的信息(列不 ...

  4. JavaScript Tre

    function BinarySearchTree() { var Node = function(key) { this.key = key; this.left = null; this.righ ...

  5. spring的4种事务特性,4种隔离级别,7种传播行为

    spring事务: 什么是事务: 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 事务特性(4种): 原子性 (atomicity):强调事务的不可分割. 一致性 (c ...

  6. 利用Lua实现二叉查找树并进行各种遍历

    -- author : coder_zhang-- date : 2014-6-25 root = nil function insert_node(number) if root == nil th ...

  7. SpringCloud-Eureka-服务注册是如何发起的

    原文:https://xsxy007.github.io Spring Cloud环境下,服务提供者和消费者启动后都会将自身注册到Eureka 一.将服务注册到Eureka 一个SpringBoot应 ...

  8. 谁动了我的内存:php内存泄露,系统缓存消耗? 转摘:http://blog.csdn.net/tao_627/article/details/9532497

    http://www.laruence.com/2011/03/04/1894.html 前言:持续我一贯的标题党作风,说说例子解决方案,没有深入探讨. 情景:线上图片服务压缩的图片品质(100),缩 ...

  9. Ioc和DI之间的关系(依赖注入的核心概念)

    1.开篇闲话 由于之前做的很多项目都没接触到这个,后来到了另一个公司,他们的代码结构是基于领域驱动设计的,其中里面的对象都是通过依赖注入方式(Sprint.NET)实现的,也大致了解了哈,在网上搜了些 ...

  10. 233-基于TMS320C6678+XC7K325T的CPCIe开发平台

    基于TMS320C6678+XC7K325T的CPCIe开发平台 一.板卡概述         该DSP+FPGA高速信号采集处理板由我公司自主研发,包含一片TI DSP TMS320C6678和一片 ...