题目

链接

$Reki$ 在课余会接受一些民间的鹰眼类委托,即远距离的狙击监视防卫.。$Reki$ 一共接收到$m$份委托,这些委托与 $n$ 个直线排布的监视点相关。第 $i$ 份委托的内容为:对于区间 $[r_i, \ j_i]$ 中的监视点,至少要防卫其中的 $k_i$ 个点。$Reki$ 必须完成全部委托,并希望选取尽量少的监视点来防卫。($n \leq 500000, \ m \leq 1000000$)。

分析

一眼看,发现是道差分约束的裸题。设点i的值为sum[i],如果l-r中至少有x个,就是sum[r]-sum[l-1]>=x。

我们把区间根据右端点大小排序。对于每一个区间,若这个区间满足条件就continue,如果不满足就尽量填在右边。

我们采用树状数组来维护,对相应的点进行加1操作、对区间求和操作。最多修改 $n$ 个点,时间复杂度为$O(n \log n)$.

#include<bits/stdc++.h>
using namespace std; const int maxn = + ;
const int maxm = + ;
int a[maxn], n, m;
bool vis[maxn]; struct Node
{
int l, r, k;
bool operator< (const Node& b) const
{
if(r != b.r) return r < b.r;
if(l != b.l ) return l < b.l;
return k > b.k;
}
}q[maxm]; struct BIT
{
int C[maxn];
void init()
{
memset(C, , sizeof(C));
//for (int i = 1; i <= n; i++)
// add(i, a[i]);
}
int lowbit(int x)
{
return x & -x;
}
int sum(int x)
{
int ret = ;
while (x > )
{
ret += C[x];
x -= lowbit(x);
}
return ret;
}
void add(int x, int d)
{
while (x <= n)
{
C[x] += d;
x += lowbit(x);
}
}
}bit; int main()
{
scanf("%d%d", &n, &m);
for(int i=;i < m;i++) scanf("%d%d%d", &q[i].l, &q[i].r, &q[i].k);
sort(q, q+m);
bit.init();
for(int i = ;i < m;i++)
{
int l = q[i].l, r = q[i].r, k = q[i].k;
int num = bit.sum(r) - bit.sum(l-);
if(num >= k) continue; //如果已经满足要求,啥事不管
for(int j = r;j >= l;j--) //从右往左枚举
{
if(!vis[j])
{
vis[j] = true;
num++;
bit.add(j, );
if(num == k) break;
}
}
}
printf("%d\n", bit.sum(n));
return ;
}

参考链接:

1. https://ac.nowcoder.com/discuss/172020

2. https://www.codetd.com/article/4710306

牛客练习赛3 F - 监视任务——贪心&&树状数组的更多相关文章

  1. 牛客练习赛3 F - 监视任务

    链接:https://www.nowcoder.net/acm/contest/13/F来源:牛客网 题目描述

  2. 牛客小白月赛13-H(单调栈+树状数组)

    题目链接:https://ac.nowcoder.com/acm/contest/549/H 题意:给一个柱状图,包括每个矩阵的宽度和高度,求能组成的最大矩阵的面积. 思路:显然最大矩阵的高一定为n个 ...

  3. 牛客练习赛11 假的字符串 (Trie树+拓扑找环)

    牛客练习赛11 假的字符串 (Trie树+拓扑找环) 链接:https://ac.nowcoder.com/acm/problem/15049 来源:牛客网 给定n个字符串,互不相等,你可以任意指定字 ...

  4. 【bzoj4240】有趣的家庭菜园 贪心+树状数组

    题目描述 对家庭菜园有兴趣的JOI君每年在自家的田地中种植一种叫做IOI草的植物.JOI君的田地沿东西方向被划分为N个区域,由西到东标号为1~N.IOI草一共有N株,每个区域种植着一株.在第i个区域种 ...

  5. 2018牛客网暑期ACM多校训练营(第五场) F - take - [数学期望][树状数组]

    题目链接:https://www.nowcoder.com/acm/contest/143/F 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...

  6. D 洛谷 P3602 Koishi Loves Segments [贪心 树状数组+堆]

    题目描述 Koishi喜欢线段. 她的条线段都能表示成数轴上的某个闭区间.Koishi喜欢在把所有线段都放在数轴上,然后数出某些点被多少线段覆盖了. Flandre看她和线段玩得很起开心,就抛给她一个 ...

  7. [luoguP2672] 推销员(贪心 + 树状数组 + 优先队列)

    传送门 贪心...蒟蒻证明不会... 每一次找最大的即可,找出一次最大的,数列会分为左右两边,左边用stl优先队列维护,右边用树状数组维护.. (线段树超时了....) 代码 #include < ...

  8. 贪心+树状数组维护一下 Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) D

    http://codeforces.com/contest/724/problem/D 题目大意:给你一个串,从串中挑选字符,挑选是有条件的,按照这个条件所挑选出来的字符集合sort一定是最后选择当中 ...

  9. [BZOJ4240]有趣的家庭菜园(贪心+树状数组)

    最后数列一定是单峰的,问题就是最小化最后的位置序列的逆序对数. 从大到小加数,每次贪心看放左边和右边哪个产生的逆序对数更少,树状数组即可. 由于大数放哪对小数不产生影响,所以正确性显然. 注意相同数之 ...

随机推荐

  1. 汉诺塔递推HDU2064

    题意: 移动木头盘不能a到c,必须a到b到c. 问你移动次数. 假设将n层塔从A经B挪到C需要f[n]步.那么具体的移动过程可以这样看:将上面n-1层从A经B挪到C需要f[n-1]步,再将第n层从A挪 ...

  2. PHP搭建B2C分销商城系统需要考虑哪些因素?(一)

    在网购日渐繁盛的今天,传统线下门店和代理分销越发显示出其弊端.此种情况下,进入互联网市场是最好的选择.入驻第三方平台成本太高,无法掌握自己的流量,所以搭建自己的分销平台成为众多企业的首选.搭建B2C分 ...

  3. 第十章 MIZ702 ZYNQ制作UBOOT固化程序

    10.0难度系数★☆☆☆☆☆☆ 10.1是什么是固化 我们前几章将的程序都是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序.JTAG的方法是通过TCL脚本来初始化P ...

  4. 2-MySQL DBA笔记-MySQL安装部署和入门

    第2章 MySQL安装部署和入门 第1章介绍了MySQL的一些基础知识,本章将为读者介绍MySQL的部署.安装及一些常用命令和参数的设置.2.1 如何选择MySQL版本 在选择MySQL的版本时,要根 ...

  5. Python实现英文文章加密传送,收到后进行解密

    思路:将I Love You这样的字符串中的每一个字符,将他的Unicode码都就进行加或减去一个特定的数, 在传送过程中,如果被截获,获取的也是一段混乱的文章,当收到这段文章后,按相同的方式对Uni ...

  6. spring——自动装配

    语法:<bean id="..." class="..." autowire="byType"/> autowire属性取值如下 ...

  7. SQL Prompt 注册后隔一段时间莫名无法使用的处理

    https://blog.csdn.net/anyqu/article/details/88537197 以前一直以为是授权丢了,反复重装也解决不了 Sql Prompt---Unable to co ...

  8. SQLSERVER 在PROCEDURE 中动态执行SQL语句【EXEC】并获取

    1.直接上代码 CREATE PROCEDURE [dbo].[TEST] AS BEGIN DECLARE )='N8-4F', --構建SQL需要的條件 ),--構建後的SQL語句 @cnt in ...

  9. lamp :在Linux 下搭建apache、Mysql、php

    CentOS下搭建LAMP环境 LAMP: Linux + Apache + PHP + Mysql. 系统: CentOS 7,64位. CentOS安装 我选取了64位的CentOS 7这个Lin ...

  10. C++性能榨汁机之虚函数的开销

    C++性能榨汁机之虚函数的开销 来源  http://irootlee.com/juicer_vtable/ 虚函数的实现 虽然C++标准并没有规定编译器实现虚函数的方式,但是大部分编译器均是采用了虚 ...