【bzoj1029】建筑抢修

传送门

http://www.lydsy.com/JudgeOnline/problem.php?id=1029

分析

http://blog.csdn.net/popoqqq/article/details/40542013

首先想法:按照t2从小到大排序,能取就取。

修正贪心:若时间能更少,则修当前这个

核心代码

int n;
struct Place {
    int t1,t2;
    Place(int _t1=0,int _t2=0) {
        t1=_t1,t2=_t2;
    }
    friend int operator < (Place a,Place b) {
        return a.t2<b.t2;
    }
}p[N];

priority_queue<int> que;
LL sumT; int cnt;

int main(void) {
    n=rd();
    rep(i,1,n) {
        int t1=rd(),t2=rd();
        p[i]=Place(t1,t2);
    }
    sort(p+1,p+n+1);

    rep(i,1,n) {
        int t1=p[i].t1,t2=p[i].t2;
        if (sumT+t1<=t2) {
            sumT+=t1;
            cnt++;
            que.push(t1);
        }
        else {
            if (!que.empty()) {
                int t=que.top();
                if (t1<t) {
                    que.pop();
                    sumT=sumT-t+t1;
                    que.push(t1);
                }
            }
        }
    }
    printf("%d\n",cnt);

    return 0;
}

小结

(1)贪心的一些理解

很多时候贪心的想法都是很美妙的。

所以想到了一个贪心的想法,千万不要放过。

它可以进行这样的转化:

①直接就是正确的!!

②结合偏离搜索,或者随机化算法,进行高能的Trick

例如n<=40的中途相遇的超大背包问题,就可以这样搞。

例如最大团算法,也可以这样搞。

etc...

③修正贪心

如本题。

④更一般的情形

得出一些性质。

进行一些有效剪枝或者设计其他的算法。

总之不要中途放弃!!

【bzoj1029】道路抢修的更多相关文章

  1. BZOJ1029 建筑抢修

    Description 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重 ...

  2. [bzoj1029]建筑抢修<贪心>

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1029 解析:这也算bzoj中比较简单的一道题,其实想通了就是非常的简单. 这题用贪心的方式 ...

  3. BZOJ1029: [JSOI2007]建筑抢修(贪心)

    题目链接:BZOJ1029: [JSOI2007]建筑抢修 题解:贪心思想,按结束时间从小到大排序,选花费时间尽量短的建筑维修,用堆维护. #include<stdio.h> #inclu ...

  4. 【BZOJ1029】建筑抢修(贪心)

    [BZOJ1029]建筑抢修(贪心) 题面 BZOJ 洛谷 题解 感觉自己已经不会贪心了. 很明显的一个想法是按照终止时间排序,然后能选则选. 但是这样子可能会因为前面选择了一个修理时间很长的,导致现 ...

  5. 【bzoj1029】【JSOI2007】建筑抢修

    1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec  Memory Limit: 162 MBSubmit: 6417  Solved: 2883[Submit][Statu ...

  6. BZOJ1029: [JSOI2007]建筑抢修[模拟 贪心 优先队列]

    1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec  Memory Limit: 162 MBSubmit: 3785  Solved: 1747[Submit][Statu ...

  7. BZOJ1029:[JSOI2007]建筑抢修(贪心,堆)

    Description 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的 入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快 ...

  8. bzoj千题计划119:bzoj1029: [JSOI2007]建筑抢修

    http://www.lydsy.com/JudgeOnline/problem.php?id=1029 把任务按截止时间从小到大排序 如果当前时间+当前任务耗时<=当前任务截止时间,把这个任务 ...

  9. 【bzoj1029】[JSOI2007]建筑抢修 贪心+堆

    题目描述 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建 ...

随机推荐

  1. C# for和 foreach 的数组遍历 比较

    刚学习程序,感觉写代码 很有意思,所以把自己的感悟写下来啦,第一次写博客,可能是菜鸟中的菜鸟  时间久了,相信就会写的很好哦! for和 foreach 的数组遍历 比较 很简单的程序,不解释啦! u ...

  2. zookeeper系列之九—zookeeper数据模型

    http://nileader.blog.51cto.com/1381108/946788 本文主要讲述了Zookeeper的数据模型,包括Zookeeper的数据视图,节点的层次结构以及节点类型等基 ...

  3. C语言中的const

    今天探讨const,首先来说是将变量常量化.为什么要将变量常量化,原因有诸多好处有诸多.比如可以使数据更加安全不会被修改! 但是这个词有几个点要注意,那就是他究竟修饰了谁? 1.const int a ...

  4. 获取某个数据所在数据列表中的行数 mysql

    select * from (select @rownum := @rownum+1 as rownum,goods_idfrom table_goods, (select @rownum:=0) t ...

  5. 计算5的阶乘并在JSP页面输出

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. (转)Genymotion安装virtual device的“unable to create virtual device, Server returned Http status code 0”的解决方法

    网络原因无法下载virtual device,status 为0表示服务器没有响应.FQ下载吧,有VPN的小伙伴推荐这种. 或者直接手动下载ova虚拟机文件,然后将虚拟机文件导入到virtualbox ...

  7. window删除损坏无法打开的文件

    移动硬盘删除文件时提示“文件或目录损坏且无法读取”的解决方法-chkdsk 命令的巧用 新买一个移动硬盘,同学借去Copy一个游戏,拷来后发现数据包损坏,提示"文件或目录损坏且无法读取&qu ...

  8. jquery 之height(),innerHeight(),outerHeight()方法区别详解

    在jQuery中,获取元素高度的函数有3个,它们分别是height(). innerHeight().outerHeight(). 与此相对应的是,获取元素宽度的函数也有3个,它们分别是width() ...

  9. Django.template框架 template context (非常详细)

    前面的章节我们看到如何在视图中返回HTML,但是HTML是硬编码在Python代码中的 这会导致几个问题: 1,显然,任何页面的改动会牵扯到Python代码的改动 网站的设计改动会比Python代码改 ...

  10. POJ 2376 Cleaning Shifts(轮班打扫)

    POJ 2376 Cleaning Shifts(轮班打扫) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] Farmer ...