朝鲜战争:轰炸大小和岛


试题描述

1951年11月,抗美援朝,保家卫国的志愿军为了抵挡美军疯狂的进攻,决定轰炸大小和岛。支援军训练有素命中率达到90%!美军大小和岛上的设施被损毁。现在由于大多数美军都去还击志愿军了,只剩下一个修理工了,这个修理工虽然开着汽车,能够瞬时到达,但修理还是需要时间的,如果不及时维修,装备就会报废。且装备只能一个个维修。请问按怎样的修理顺序才能保住更多的装备?


输入

第一行:是一个整数N
接下来N行:每行两个整数T1,T2
修理这个建筑需要T1分钟,如果在T2分钟之内还没有
修理完成,这个建筑就报废了。

输出

输出一个整数S,表示最多可以抢修S个建筑。 

输入示例

4
100 200
200 1300
1000 1250
2000 3200

输出示例

3

其他说明

数据范围: N<15000

C程序:

#include <iostream>
#include <cstring>
#include <queue>
#include <cstdio>
#include <algorithm>

using namespace std;

const int N=150006;

struct Big_Heap {
    int A[N<<1|1], tot;

    void init(int n) {
        for(int i=1; i<=(n<<1|1); i++) A[i]=0;
        tot=0;
    }

    void Insert(int val) {
        A[++tot]=val;
        for(int x=tot; x>1 && A[x]>A[x>>1]; x>>=1) swap(A[x], A[x>>1]);
    }

    void Update(int val) {
        A[1]=val;
        for(int i=1, j=2; j<=tot; i=j, j<<=1) {
            if((j|1)<=tot && A[j]<A[j|1]) j|=1;
            if(A[j]<A[i]) break;
            swap(A[i], A[j]);
        }
    }
} heap;

struct data {
    int t1, t2;
    bool operator < (const data &T) const {
        return t2<T.t2;
    }
} A[N];
int n, ans, cur;

int main() {
    while(scanf("%d", &n)!=EOF) {
        for(int i=0; i<n; i++) scanf("%d%d", &A[i].t1, &A[i].t2);
        sort(A, A+n);
        cur=ans=0, heap.init(n);
        for(int i=0; i<n; i++) {
            if(A[i].t1+cur<=A[i].t2) ans++, heap.Insert(A[i].t1), cur+=A[i].t1;
            else {
                if(!heap.tot) continue;
                int val=heap.A[1];
                if(val<=A[i].t1) continue;
                cur-=val-A[i].t1;
                heap.Update(A[i].t1);
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}
时间: 2024-10-24 19:42:05

朝鲜战争:轰炸大小和岛的相关文章

图形验证码实现方案(解决短信轰炸问题)

最近收到leader的一个邮件说我们的项目有短信轰炸风险.顿时让一个做技术开发的人为之一颤.今天给大家介绍一个解决这个问题的使用工具. 就是谷歌的 kaptcha 进行验证码生成和校验.闲话少说直接上代码. 1. 首先下载一个工具包 <dependency> <groupId>com.github.axet</groupId> <artifactId>kaptcha</artifactId> <version>0.0.9</ve

青海西宁市机场遭别国轰炸

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

文件系统 介绍--各个系统对文件限制大小等

A.FAT16(最大分区2GB,最大文件2GB ,最大容量) 在说明FAT16文件系统之前,我们必须清楚FAT是什么?FAT(File Allocation Table)是“文件分配表”的意思.顾名思义,就是用来记录文件所在位置的表格,它对于硬盘的使用是非常重要的,假若丢失文件分配表,那么硬盘上的数据就会因无法定位而不能使用了.不同的操作系统所使用的文件系统不尽相同,在个人计算机上常用的操作系统中,MS-DOS 6.x及以下版本使用FAT16:OS/2使用HPFS:Windows NT则使用NT

老百胜点击13208831115两千吨×××酿10万人死亡,美军东京大轰炸73周年

老百胜点击13208831115网址www.lbs818.com现代战争中,随着战机与×××愈来愈先进,也让交战双方的平民饱受空袭轰炸之苦.日本在发动珍珠港事变后,当时仍处于被动的美军,曾由吉米·杜立德中校派出16架B-25米切尔型轰炸机空袭日本东京.横滨.名古屋和神户等地的油库.工厂和军事设施,但受到轰炸机续航力与计划限制,此次轰炸只具备象征性意义,并未对日本本土造成太大的伤害. 但随着跳岛战术奏效.以及新型B-29"超级堡垒"轰炸机问世后,美军的轰炸计划就欲发有把握.在收复马里亚纳

# 响应式布局的常用解决方案对比(媒体查询、百分比、注意!明天上午,金沙岛

这里feaure_2 有4种取值(状态),我们就用4个状态位来表示这个特征,one-o编码就是保证每个样本中的单个特征只有1位处于状态1,其他的都是0. 安装这个包后,会获得两个mysql的yum reo源:ecyumreosdmysql-communiyreo,ecyumreosdmysql-communiy-sourcereo. 3.安装mysql 今天在看sring @Valid表单验证的时候,使用@NoEmy的时候发现被@Derecaed修饰了(表示该用例已经过时),我就想找到它的替代用

P3932 浮游大陆的68号岛

P3932 浮游大陆的68号岛 妖精仓库的储物点可以看做在一个数轴上.每一个储物点会有一些东西,同时他们之间存在距离. 每次他们会选出一个小妖精,然后剩下的人找到区间[l,r]储物点的所有东西,清点完毕之后问她,把这个区间内所有储物点的东西运到另外一个仓库的代价是多少? 比如储物点 i 有 x 个东西,要运到储物点 j ,代价为 \[x \times \mathrm{dist}( i , j )\] dist就是仓库间的距离. 当然啦,由于小妖精们不会算很大的数字,因此您的答案需要对192608

算法初级面试题05——哈希函数/表、生成多个哈希函数、哈希扩容、利用哈希分流找出大文件的重复内容、设计RandomPool结构、布隆过滤器、一致性哈希、并查集、岛问题

今天主要讨论:哈希函数.哈希表.布隆过滤器.一致性哈希.并查集的介绍和应用. 题目一 认识哈希函数和哈希表 1.输入无限大 2.输出有限的S集合 3.输入什么就输出什么 4.会发生哈希碰撞 5.会均匀分布,哈希函数的离散性,打乱输入规律 public class Code_01_HashMap { public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.p

【c/c++】内存分配大小

测试平台:linux 32位系统 用sizeof()运算符计算分配空间大小.单位:字节 1. 数组名与变量名的区别 int main() { char q[] = "hello"; cout << "q:" << sizeof(q) << endl; char *mq = q; cout << "mq:" << sizeof(mq) << endl; const char *

文件拆分成指定大小(IO流)

1 package stream; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.util.Arrays; 8 9 public class TestStream { 10 11 public static void main(String[] args) { 12 i