Hello 2020D(多重集)
如果有一对时间对在某一场馆有时间重合而这一对时间对在另一场馆没有时间重合,则输出NO,否则输出YES。
#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
vector<pair<pair<int,int>,pair<int,int> > >v1,v2;
int check(const vector<pair<pair<int,int>,pair<int,int> > >&v){//常引用,既提高了效率,也不会让参数在函数中被改动
multiset<int>l,r;//保留了某一场馆时间重合的场次下另一场馆的时间对。
for(int i=;i<v.size();++i){
pair<pair<int,int>,pair<int,int> >it=v[i];
pair<int,int>temp=it.first;
pair<int,int>temp2=it.second;
if(temp.second==){
l.erase(l.find(temp2.first));
r.erase(r.find(temp2.second));
}
else{
multiset<int>::iterator x=r.lower_bound(temp2.first);
if(x!=r.begin())//如果有比当前开始时间更小的结束时间,说明这一场馆可以有一对没有时间重合的时间对且另一场馆这一对时间重合。
return ;
multiset<int>::iterator y=l.upper_bound(temp2.second);
if(y!=l.end())//如果有比当前结束时间更大的开始时间,说明这一场馆可以有一对没有时间重合的时间对且另一场馆这一对时间重合。
return ;
l.insert(temp2.first);
r.insert(temp2.second);
}
}
return ;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
int a,b,c,d;
for(int i=;i<=n;++i){
cin>>a>>b>>c>>d;
v1.push_back(make_pair(make_pair(a,-),make_pair(c,d)));//相同的开始时间和结束时间要让开始时间排在前面,因为开始时间和结束时间相同的这一对是时间重合的,把开始时间的标记打得比结束时间小,可以保留更多A场馆重合的场次的B场馆的时间对。
v1.push_back(make_pair(make_pair(b,),make_pair(c,d)));
v2.push_back(make_pair(make_pair(c,-),make_pair(a,b)));
v2.push_back(make_pair(make_pair(d,),make_pair(a,b)));
}
sort(v1.begin(),v1.end());
sort(v2.begin(),v2.end());
if(!check(v1)||!check(v2))
cout<<"NO";
else
cout<<"YES";
return ;
}
Hello 2020D(多重集)的更多相关文章
- C++ 多重集的使用
C++ 多重集的使用 多重集当中的数据映射关系将不是前面的一对一的关系,而是一对多,也就是可以在容器当中插入具有相同key的实例.关于组织方式,LZ进行了下面的大胆的预测. 第一.底层的数据组织方式如 ...
- Vijos_1792_摆花_(动态规划,多重集组合数)
描述 https://vijos.org/p/1792 共n种花,第i种花有a[i]个,要摆m个,同一种花连续且花按照序号从小到大排,问共有多少种摆花方案. 描述 小明的花店新开张,为了吸引顾客, ...
- POJ_3046_Ant_Counting_(动态规划,多重集组合数)
描述 http://poj.org/problem?id=3046 n种蚂蚁,第i种有ai个,不同种类的蚂蚁可以相互区分,但同一种类的蚂蚁不能相互区分,从这些蚂蚁中取出s,s+1,s+2,...,b- ...
- Problem I: STL——多重集的插入和删除
Problem I: STL--多重集的插入和删除 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1729 Solved: 1258[Submit][ ...
- Codeforces Round #523 (Div. 2) D. TV Shows 模拟(多重集 先把所有区间加入多重集合)+贪心+二分
题意:给出n个电视节目的起始和结束时间 并且租一台电视需要x +y*(b-a) [a,b]为时段 问完整看完电视节目的最小花费是多少 思路:贪心的思想 情况1 如果新租一台电视的花费<=在空 ...
- 乘法原理,加法原理,多重集的排列数(多个系列操作穿插的排列数) 进阶指南 洛谷p4778
https://www.luogu.org/problemnew/solution/P4778 非常好的题目,囊括了乘法加法原理和多重集合排列,虽然最后使用一个结论解出来的.. 给定一个n的排列,用最 ...
- hdu6397 Character Encoding 母函数解约束条件下多重集
http://acm.hdu.edu.cn/showproblem.php?pid=6397 原问题的本质是问m个元素的多重集S,每一种类型的对象至多出现n-1次的S的k组合的个数是多少? 等价于 x ...
- poj 3046 Ant Counting(多重集组合数)
Ant Counting Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total ...
- Codeforces Round #523 (Div. 2)D(二分,多重集)
#include<bits/stdc++.h>using namespace std;const long long N=1e5+5;const long long MOD=1e9+7;l ...
随机推荐
- js上传文件工具类
个人博客 地址:http://www.wenhaofan.com/article/20180808210417 jQuery.extend({ uploadUtil:function(){ } }); ...
- 在Unity5中使用C#脚本实现UI的下滑、变色、渐隐渐现效果
一.首先,我们先创建一个Text 依次选择Component→UI→Text创建一个Text,创建完成后如下: 二.创建完成后,在Project面板点击Create→C# Script,本例命名 ...
- android TextView 支持长按自由复制
因为EditText支持系统的长按自由复制,所以只需要把EditText通过配置达到TextView效果就行了 <EditText android:id="@+id/subject_i ...
- HTML的文档设置标记
1.格式标记 <br/> 强制换行标记 <p> 换段落标记 换段落,由于多个空格和回车在HTML中会被等效为一个空格,所以HTML中要换段落就要用<p>,<p ...
- C++-POJ2159-Candies[spfa][栈优化][邻接表]
#include <cstdio> ,N=; struct edge{int v,w,next;}e[M];int head[N],cnt; void add(int u,int v,in ...
- JavaScript的严格检查模式
JavaScript的严格检查模式 前提:IDEA设置为ECMAScript 6语法. 'use strict':严格检查模式,用来预防JS的随意性导致的问题. 比如:直接 i=1;这样定义成了全局变 ...
- opencv-python常用接口
最直接的是参考官网:https://docs.opencv.org/4.2.0/d6/d00/tutorial_py_root.html
- 题解【洛谷P1725】琪露诺
题面 典型的单调队列优化\(\text{DP}\)题. 不难想到设\(dp_i\)表示以\(i\)结尾能得到的最大冰冻指数. 这样设的转移方程也很简单:\(dp_i=\max\left\{ dp_j+ ...
- 题解【洛谷P1886】滑动窗口 /【模板】单调队列
题面 单调队列模板题. 单调队列可以从队首和队尾出队. 队列中的元素大小具有一定的顺序. 具体可参考这一篇题解 #include <bits/stdc++.h> #define itn i ...
- Python 之路Day04
列表 list:数据类型之一,存储数据,大量的,存储不同类型的数据 lst=[1,2,'alex',True,['钥匙','门禁卡',['银行卡']]] print(lst) 列表 -- 容器 别的语 ...