3928. 【NOIP2014模拟11.6】射击 (Standard IO)

Time Limits: 1000 ms Memory Limits: 65536 KB

Description

有问题,找副连,无聊的时候当然也可以找他啦。小W找到了他的叔叔——东厂厂长——宇宙超级无敌老WS yy。他们叔侄两个商量之后决定用弹弓打破社区里的一些窗户,但是弹弓每秒只能彻底打破一扇窗户。而且如果某户窗户的主人回来了的话,他们就不能进行破坏了(不然会死得很惨的)。因为有的人装的玻璃好,有的人装的玻璃差,有的人装的玻璃高,有的人装的玻璃矮,所以你不能要求他们叔侄两个打破不同的窗户获得的快乐值必须相同。现在他们想知道在能活着的情况下能够获得的最大快乐值。

Input

第一行一个正整数n,表示共有n个窗户。

接下来n行,每行两个整数,第一个为窗子的主人回来的时刻(秒),第二个为破坏该窗户所能获得的快乐值。

Output

最大的快乐值。

Sample Input

4

1 19

2 10

1 20

2 15

Sample Output

35

Hint

样例说明:

在第0个时刻,他们选择破坏掉3号窗户,在第1个时刻,因为1号窗户的主人已经回来了,所以不能去破坏1号窗户,只能去破坏2号窗户或4号窗户,显然选择4号窗户。总的快乐值就是20+15=35。

Data Constraint

20%的数据,n<=100。

40%的数据,n<=50000。

100%的数据,n<=200000,快乐值的绝对值不超过32767,时刻非负且小于2^31。

题解

这道题有人说用并查集,但是我觉得用贪心+堆更好理解

记第 i 个窗户时间为 a [ i ] . t ,快乐值为a [ i ] . c

先将时间从小到大排序

然后从头开始加,用小根堆维护已选择的窗户

如果个数没达到当前上限,那就选择

如果个数已经达到了上限,而且当前的 c 大于堆顶元素,那就替换

ps:好久没写堆了,可能有点问题,但是能过

代码

#include<cstdio>
#include<algorithm>
#include<vector>
#define N 200010
using namespace std;
struct point{
long t,c;
}a[N];
vector<point>dui; bool operator >(point a,point b)
{
return a.c>b.c;
}
bool operator <(point a,point b)
{
return a.c<b.c;
} bool tmp(point a,point b)
{
if(a.t!=b.t)return a.t<b.t;
else return a>b;
} void ins(point key)
{ long now;
dui.push_back(key);
for(now=dui.size()-1;now>0&&dui[now>>1]>dui[now];now>>=1)
swap(dui[now],dui[now>>1]);
}
void gai(point key)
{ long now;
bool t;
dui[0]=key;
now=0;
t=true;
while((now<<1)+1<=dui.size()&&t){
t=false;
if(dui[now<<1]<dui[(now<<1)+1]){
if(dui[now]>dui[now<<1]){
swap(dui[now],dui[now<<1]);
now<<=1;
t=true;
}
}else
if(dui[now]>dui[(now<<1)+1]){
swap(dui[now],dui[(now<<1)+1]);
now=(now<<1)+1;
t=true;
}
}
} int main()
{ long n,i,ans=0;
scanf("%ld",&n);
for(i=1;i<=n;i++)
scanf("%ld%ld",&a[i].t,&a[i].c);
sort(a+1,a+n+1,tmp);
for(i=1;i<=n;i++)if(a[i].t!=0){
if(dui.size()<a[i].t&&a[i].c>0)
ins(a[i]);
else if(a[i].c>dui[0].c)
gai(a[i]);
}
for(i=0;i<dui.size();i++)
ans+=dui[i].c;
printf("%ld\n",ans);
return 0;
}

JZOJ 3928. 【NOIP2014模拟11.6】射击的更多相关文章

  1. JZOJ 3929. 【NOIP2014模拟11.6】创世纪

    3929. [NOIP2014模拟11.6]创世纪 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 上帝手 ...

  2. JZOJ 3927. 【NOIP2014模拟11.6】可见点数

    3927. [NOIP2014模拟11.6]可见点数 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description ZP ...

  3. [JZOJ 4307] [NOIP2015模拟11.3晚] 喝喝喝 解题报告

    题目链接: http://172.16.0.132/senior/#main/show/4307 题目: 解题报告: 题目询问我们没出现坏对的连续区间个数 我们考虑从左到有枚举右端点$r$,判断$a[ ...

  4. 【NOIP2014模拟11.3】噪音

    题目 FJ有M个牛棚,编号1至M,刚开始所有牛棚都是空的.FJ有N头牛,编号1至N,这N头牛按照编号从小到大依次排队走进牛棚,每一天只有一头奶牛走进牛棚.第i头奶牛选择走进第p[i]个牛棚.由于奶牛是 ...

  5. 【NOIP2014模拟11.3】蛋糕

    题目 今天是Bessie的生日,他买了一个蛋糕和朋友们一起分享,蛋糕可以看成是一个R行C列的表格,共有R*C个格子,每个格子都有一个0至9的数字,表示该格子蛋糕拥有的巧克力.现在Bessie要把蛋糕横 ...

  6. JZOJ 3509. 【NOIP2013模拟11.5B组】倒霉的小C

    3509. [NOIP2013模拟11.5B组]倒霉的小C(beats) (File IO): input:beats.in output:beats.out Time Limits: 1000 ms ...

  7. JZOJ 3508. 【NOIP2013模拟11.5B组】好元素

    3508. [NOIP2013模拟11.5B组]好元素(good) (File IO): input:good.in output:good.out Time Limits: 2000 ms  Mem ...

  8. JZOJ 3518. 【NOIP2013模拟11.6A组】进化序列(evolve)

    3518. [NOIP2013模拟11.6A组]进化序列(evolve) (File IO): input:evolve.in output:evolve.out Time Limits: 1000 ...

  9. JZOJ 3505. 【NOIP2013模拟11.4A组】积木(brick)

    3505. [NOIP2013模拟11.4A组]积木(brick) (File IO): input:brick.in output:brick.out Time Limits: 1000 ms Me ...

随机推荐

  1. C++ 回调函数简单示例

    回调函数其实就是以函数指针做函数参数传递给另一个函数,在另一个函数执行的时候可以根据函数指针执行回调函数的代码.简单示例,便于理解,防止遗忘. #include <iostream> ty ...

  2. 【flask】RestFul的基本鉴权

    编写API的基本鉴权 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : shenqiang from flask import Fla ...

  3. 老版本loadrunner 打开侧边栏

  4. hibernate多表查询sql,以及所得对象的处理

    String sql ="SELECT id FROM tea WHERE tea.name=? "; SQLQuery query = this.getSession().cre ...

  5. 吴裕雄--天生自然python学习笔记:爬取我国 1990 年到 2017年 GDP 数据并绘图显示

    绘制图形所需的数据源通常是不固定的,比如,有时我们会需要从网页抓取, 也可能需从文件或数据库中获取. 利用抓取网页数据技术,把我国 1990 年到 2016 年的 GDP 数据抓取出来 ,再利用 Ma ...

  6. 吴裕雄--天生自然 Hadoop大数据分布式处理:centos7修改系统时间、时区

    cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 修改完后需要重启.

  7. IE11阅读视图:带给你静心饕餮阅读大餐的片刻

    编者按:又到读书日,今天你挤出时间读书了吗?如今,越来越多人在习惯电子阅读,然而总难逃眼花缭乱的干扰信息.Internet Explorer 11新增阅读视图功能,一键开启,给你带给你静心饕餮阅读大餐 ...

  8. 渗透利器-BadUSB 控制外网主机详解 Teensy2.0++

    准备工作 一块 Teensy2.0++ 的板子(淘宝一搜就有) Arduino编译器 1.8.7版本下载连接:arduino下载地址 Teensy插件 下载连接:Teensy下载地址 [外链图片转存失 ...

  9. MS15-020 文件共享漏洞利用

    Metasploit MS15-020漏洞利用 环境: 共享机/受害者:windows xp IP:192.168.222.1 攻击机:kali linux IP:192.168.10.1 msfco ...

  10. highcharys去掉x轴,y轴轴线和刻度

    x轴 xAxis: { lineWidth :,//去掉x轴线 tickWidth:,//去掉刻度 labels: { enabled: false },//去掉刻度数字 }, y轴 yAxis: { ...