题目描述

  作为一名天才科学家,$Kurisu$已经设计出了时间机器的构造。
  根据$Kurisu$的构想,时间机器中有$n$种需要放置电阻的节点,第$i$种节点有$s_i$个,其电压$U$的变动范围是${low}_i\leqslant U\leqslant {high}_i$。
  现在有$m$种电阻,第$i$种电阻有$k_i$个,第$i$种电阻能正常工作时,电压$U'$需要满足$l_i\leqslant U'\leqslant r_i$。第$i$种电阻能放置在第$j$种节点上,当且仅当$l_i\leqslant {low}_j\leqslant {high}_j\leqslant r_i$。
  现在$Kurisu$想要确认她的构想能不能实现,即是否能在所有节点上放置合适的电阻。


输入格式

第一行一个整数$T$,表示数据组数。
每组数据的第一行有两个整数$n,m$,表示节点和电阻的种类数。
接下来$n$行,每行三个整数${low}_i,{high}_i,s_i$,描述一种结点。
接下来$m$行,每行三个整数$l_i,r_i,k_i$,描述一种电阻。


输出格式

输出共$T$行,每行一个字符串,若可以实现则输出$"Yes"$(不包含引号),否则输出$"No"$。


样例

样例输入:

3
2 2
1 4 2
3 5 1
1 4 2
2 5 1
3 2
1 3 1
2 4 1
3 5 1
1 3 2
2 5 1
2 2
1 2 2
1 2 1
1 2 1
1 2 2

样例输出:

Yes
No
Yes


数据范围与提示

保证$1\leqslant {low}_i\leqslant {high}_i\leqslant {10}^9,1\leqslant l_i\leqslant r_i\leqslant {10}^9,1\leqslant k_i,s_i\leqslant {10}^9,T\leqslant 50,1\leqslant n,m\leqslant 5\times {10}^4$。
记$\sum n$为一个测试点中所有$n$的总和,记$\sum m$为一个测试点中所有$m$的总和,则$\sum n,\sum m\leqslant 4\times {10}^5$。
各个测试点还满足如下约束:


题解

考虑贪心。

将电阻个节点均按左端点排序,按排序考虑每一种节点,每次贪心地选择左端点在该节点左侧的电阻中,右端点在该节点右侧且尽量靠近该节点右侧的电阻。

考虑如何优化。

利用$set$维护当前左端点符合条件的电阻的右端点即可。

时间复杂度:$\Theta((n+m)\log m+n\log n)$。

期望得分:$100$分。

实际得分:$100$分。


数据范围

#include<bits/stdc++.h>
using namespace std;
struct rec{int l,r,s;}a[50001],b[50001];
struct node{int first,second;};
int n,m;
set<node> s;
bool cmp(rec a,rec b){return a.l<b.l;}
bool operator < (node a,node b){return a.first<b.first;}
int main()
{
int T;scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
s.clear();
for(int i=1;i<=n;i++)scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].s);
for(int i=1;i<=m;i++)scanf("%d%d%d",&b[i].l,&b[i].r,&b[i].s);
sort(a+1,a+n+1,cmp);
sort(b+1,b+m+1,cmp);
s.insert((node){2002092300,0});
for(int i=1,j=1;i<=n;i++)
{
while(b[j].l<=a[i].l&&j<=m)
s.insert((node){b[j].r,j++});
node flag=(node){a[i].r,0};
while(a[i].s)
{
flag=*s.upper_bound(flag);
if(flag.first==2002092300)break;
int t=min(b[flag.second].s,a[i].s);
b[flag.second].s-=t;a[i].s-=t;
if(!b[flag.second].s)s.erase(flag);
}
if(a[i].s){puts("No");goto nxt;}
}
puts("Yes");
nxt:;
}
return 0;
}

rp++

[CSP-S模拟测试]:时间机器(贪心+set)的更多相关文章

  1. csp-s模拟测试99

    csp-s模拟测试99 九九归一直接爆炸. $T1$一眼板子. $T2$一眼语文题(语文的唯一一次$120+$是给模拟出来的可知我的语文能力). $T3$一眼普及题. ?? Hours Later 板 ...

  2. csp-s模拟测试95

    csp-s模拟测试95 去世场祭. $T1$:这不裸的除法分块吗. $T2$:这不裸的数据结构优化$Dp$吗. $T3$:这不裸的我什么都不会搜索骗$30$分吗. 几分钟后. 这除法分块太劲了..(你 ...

  3. csp-s模拟测试92

    csp-s模拟测试92 关于$T1$:最短路这一定建边最短路. 关于$T2$:傻逼$Dp$这一定线段树优化$Dp$. 关于$T3$:最小生成树+树P+换跟一定是这样. 深入(?)思考$T1$:我是傻逼 ...

  4. csp-s模拟测试85

    csp-s模拟测试85 $T1$全场秒切没有什么区分度,$T2$全场成功转化题意但是我并不会打,$T3$暴力都没打很遗憾. 100 00:21:49 02:56:35 02:56:49 135 02: ...

  5. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  6. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  7. Android单元测试与模拟测试详解

    测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...

  8. [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)

    目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...

  9. 安装nginx python uwsgi环境 以及模拟测试

    uwsgi帮助文档: http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html http://uwsgi-docs.re ...

随机推荐

  1. 【Linux】运维常用命令

    1.查看进程 ps -ef 如果需要查看特定的进程,比如redis的 ps -ef | grep redis 2.强制杀死进程  kill -9 进程id 3.忽略输出后台启动 nohup ./red ...

  2. 【BZOJ2555】SubString(后缀自动机,LCT)

    题意:给你一个字符串init,要求你支持两个操作 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 你必须在线支持这些操作. 长度 <= ...

  3. [CSP-S模拟测试]:v(hash表+期望DP)

    题目背景 $\frac{1}{4}$遇到了一道水题,又完全不会做,于是去请教小$D$.小$D$看了$0.607$眼就切掉了这题,嘲讽了$\frac{1}{4}$一番就离开了.于是,$\frac{1}{ ...

  4. [CSP-S模拟测试74]题解

    A.梦境 如果不用去重一定要用Multiset……挂30分算是出题人手下留情了. 贪心.把点排序,区间按右端点递增排序.依次考虑每个区间,取能选的最靠左的点即可.multiset维护. #includ ...

  5. 因果卷积(causal)与扩展卷积(dilated)

    因果卷积(causal)与扩展卷积(dilated)之An Empirical Evaluation of Generic Convolutional and Recurrent Networks f ...

  6. java并发编程笔记(十)——HashMap与ConcurrentHashMap

    java并发编程笔记(十)--HashMap与ConcurrentHashMap HashMap参数 有两个参数影响他的性能 初始容量(默认为16) 加载因子(默认是0.75) HashMap寻址方式 ...

  7. 汇编指令MOV

    格式:MOV DST,SRC 例如: MOV EAX,#050aH ;将十六进制050a 传送到通用寄存器eax中 MOV DI,BX(寄存器到寄存器之间传数) MOV ES,AX(通用寄存器与段寄存 ...

  8. ASP.NET Core 菜鸟之路:从Startup.cs说起 转发https://www.cnblogs.com/chenug/p/6869109.html

    1.前言 本文主要是以Visual Studio 2017 默认的 WebApi 模板作为基架,基于Asp .Net Core 1.0,本文面向的是初学者,如果你有 ASP.NET Core 相关实践 ...

  9. do_mmap解读

    1: unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, 2: unsigned long len, unsigned ...

  10. python第一个问题

    temp=input("请输入1到100之间内的数字:")if num > 50:    print("你妹好漂亮")else:    print(&qu ...