Distributing Parts
Distributing Parts
题目链接:http://codeforces.com/problemset/problem/496/E
贪心
将音乐和人都以低音升序排序,贪心处理低音更低的音乐,找出低音小于等于它的歌手,二分查找高音与它最近的人。因为剩下的人的低音一定小于后面的歌的低音,而我们选择出了满足条件的高音的最小的人,让后面的歌尽有可能的有人唱。然而不知道为什么我用lower_bound(s.begin(),s.end(),modle)会TLE,而用s.lower_bound(modle)就能过,这两者实现不同吗?
代码如下:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<set>
#define N 100005
using namespace std;
struct nod{
int l,r,num,index;
}musics[N],men[N];
int k[N],ans[N];
bool cmp(nod a,nod b){
if(a.l==b.l)return a.r<b.r;
return a.l<b.l;
}
int n,m;
int main(void){
scanf("%d",&n);
for(int i=;i<=n;++i){
musics[i].num=i;
scanf("%d%d",&musics[i].l,&musics[i].r);
}
sort(musics+,musics++n,cmp);
scanf("%d",&m);
for(int i=;i<=m;++i){
men[i].num=i;
scanf("%d%d%d",&men[i].l,&men[i].r,&k[i]);
}
sort(men+,men++m,cmp);
bool flag=;
int tt=;
set<pair<int,int> >s;
for(int i=;i<=n;++i){
while(tt<=m&&men[tt].l<=musics[i].l){
s.insert(make_pair(men[tt].r,men[tt].num));
tt++;
}
set<pair<int,int> >::iterator it;
it=s.lower_bound(make_pair(musics[i].r,));
if(it==s.end()){
flag=;
break;
}
if(musics[i].r<=it->first){
ans[musics[i].num]=it->second;
k[it->second]--;
if(k[it->second]==)
s.erase(*it);
}else{
flag=;
break;
}
}
if(flag){
printf("YES\n");
for(int i=;i<=n;++i)
printf("%d%c",ans[i],n==i?'\n':' ');
}else printf("NO\n");
}
Distributing Parts的更多相关文章
- Codeforces Round #283 (Div. 2) E. Distributing Parts 贪心+set二分
E. Distributing Parts time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- codeforces 497c//Distributing Parts// Codeforces Round #283(Div. 1)
题意:有n个区间[ai,bi],然后有n个人落在[ci,di],每个人能用ki次.问一种方式站满n个区间. 两种区间都用先x后y的升序排序.对于当前的区间[ai,bi],将ci值小于当前ai的全部放入 ...
- [Codeforces 496E] Distributing Parts
[题目链接] https://codeforces.com/contest/496/problem/E [算法] 按右端点排序 , 每个乐曲优先选取的左端点最大的演奏家 用std :: set维护贪心 ...
- 【codeforces 496E】Distributing Parts
[题目链接]:http://codeforces.com/contest/496/problem/E [题意] 给你n个歌曲; 每个歌曲有一个需要声音的区间li,ri; 然后给你m个人; 每个人也有一 ...
- codeforces 496 E. Distributing Parts(贪心+set二分)
题目链接:http://codeforces.com/contest/496/problem/E 题意:有n场演出,每场演出都有限制的高音和低音.然后m个人给出每个人的极限高音和低音还有出场次数. 最 ...
- MEF Parts Sample
namespace Microshaoft.MEF.Contracts { using System; public delegate void ExceptionEventHandler<TS ...
- How can I protect derived classes from breaking when I change the internal parts of the base class?
How can I protect derived classes from breaking when I change the internal parts of the base class? ...
- 词性标注 parts of speech tagging
In corpus linguistics, part-of-speech tagging (POS tagging or POST), also called grammatical tagging ...
- AX 2012 Form and Parts
在AX 2012 中系统标准FORM 中绝大部分都应用parts,form 和parts 是不可分开. 说到底parts到底是什么呢? Parts :我个人理解是为了在一个form中的显示更多信息而存 ...
随机推荐
- C语言之变量与常量的介绍
一 标示符 标识符:可以理解为是变量名.名字常量表示法的常量名,但是不仅限于这两个 命名规范: 1.起名要有意义,基本要做到一看名字就知道是用来干嘛的(要求你遵守,但不会报错,希望能够养成这样的好习惯 ...
- jquery中当CheckBoxList被选中时提示
$(function(){ $('input:checkbox').on('change', function(){ //当复选框选中时出现提示 if($('input:checkbox:checke ...
- 使用prismjs为网站添加代码高亮功能
prismjs 是一款轻量.可扩展的代码语法高亮库,使用现代化的 Web 标准构建,使用 Prismjs 可以快速为网站添加代码高亮功能,支持超过113中编程语言,还支持多种插件,是简洁.高效的代码高 ...
- 【转】【WebService】.NET C# 创建WebService服务
Web service是一个基于可编程的web的应用程序,用于开发分布式的互操作的应用程序,也是一种web服务 WebService的特性有以下几点: 1.使用XML(标准通用标记语言)来作为数据交互 ...
- 校门外的树 OpenJudge 1.6.06
06:校门外的树 总时间限制: 1000ms 内存限制: 65536kB 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0 ...
- B树、B-树、B+树、B*树详解
注:本文为个人学习摘录,原文地址:http://www.blogjava.net/supercrsky/articles/185167.html B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿 ...
- weak引用变量是否线程安全
1.在ARC出现之前,Objetive-C的内存管理需要手工执行release&retain操作,这些极大增加了代码的编写难度,同时带来很多的crash. 同时大量的delegate是unr ...
- Kafka集群搭建
1.zookeeper搭建 Kafka集群依赖zookeeper,需要提前搭建好zookeeper zookeeper快速搭建推荐地址:http://nileader.blog.51cto.com/1 ...
- NGINX----源码阅读---sources配置脚本
/auto/sources 本文件主要用于对源文件环境变量进行初始化,主要包括:.c和.h文件. 对应变量类型有*_MODULES.*_INCS.*_DEPS等. # Copyright (C) Ig ...
- springmvc基础篇—掌握三种处理器
随着springmvc的广泛使用,关于它的很多实用有效的功能应该更多的被大家所熟知,下面就介绍一下springmvc的三种处理器: 一.BeanName处理器(默认) <?xml version ...