【JZOJ5329】-时间机器
【JZOJ5264】化学
Description

Input
Output
Sample Input
3 10
1 2 10
Sample Output
5
Hint

题解:
这个题目又是一道贪心题,我们考虑将区间当成区间上的点(l对应x,r对应y),所以我们对于每种点,我们要寻找的点为于以当前这个点为原点的左上项限上,所在我们将两种点按照x来排序,每次一个一处理,每次取左上方项限中y最小的点就可以multset维护一下就可以了.
代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <set>
#define MAXN 50010
using namespace std;
struct hhh{
int x,y,num;
void read(){
scanf("%d%d%d",&x,&y,&num);
}
}aum[MAXN];
struct hhhh{
int x,y,num;
void read(){
scanf("%d%d%d",&x,&y,&num);
}
}qv[MAXN];
struct data{
int y,num;
bool operator < (const data x)const{
return x.y>y;
}
};
multiset<data> s;
multiset<data>::iterator it;
int n,m,have; void cl(){
memset(qv,,sizeof(qv));
memset(aum,,sizeof(aum));
s.clear();
} bool cmp1(hhh x,hhh y){
if(x.x<y.x) return ;
return ;
} bool cmp2(hhhh x,hhhh y){
if(x.x<y.x) return ;
return ;
} int getit(int hh){
for(int i=n;i>=;i--) if(qv[i].x<=hh) return i;
return ;
} int getmin(int r,int now){
int numm=(<<),id=;
for(int i=;i<=r;i++){
if(qv[i].num==) continue;
if(qv[i].y<aum[now].y) continue;
if(numm>qv[i].y) numm=qv[i].y,id=i;
}
return id;
} void work(){
cl();
scanf("%d%d",&n,&m);for(int i=;i<=MAXN-;i++) qv[i].x=<<;
for(int i=;i<=n;i++) aum[i].read();
for(int i=;i<=m;i++) qv[i].read();
have=m;
sort(aum+,aum+n,cmp1);
sort(qv+,qv+m+,cmp2);
if(qv[].x>aum[].x){puts("No");return;}
int id=;s.insert((data){qv[].y,qv[].num});
for(int i=;i<=n;i++){
int x=aum[i].x,y=aum[i].y,num=aum[i].num;
while(qv[id+].x<=x){
id++; if(qv[id].num!=) s.insert((data){qv[id].y,qv[id].num});
}
while(num){
it=s.lower_bound((data){y,});
if(it==s.end()){puts("No");return;}
data xx=*it;int numm=xx.num;
if(num>=numm) num-=numm,s.erase(it),have--;
else s.erase(it),s.insert((data){xx.y,numm-num}),num=;
if(num!=&&have==){puts("No");return;}
}
if(have==&&i!=n){puts("No");return;}
}
puts("Yes");
} int main()
{
int t;cin>>t;
while(t--) work();
return ;
}
【JZOJ5329】-时间机器的更多相关文章
- 使用ubuntu搭建时间机器备份服务
如何在ubuntu下搭建时间备份服务 折腾了很久,终于可以了. 请严格按照下面的方式来操作. 真正明白问题的,可以按照自己的思路来. 我用的是ubnutu 16.04 安装配置netatalk sud ...
- Mac 的可清除空间(时间机器)
最近项目引入新技术flutter 所以需要更新xcode,下载完了xcode,安装不上 ,费解半天,提示磁盘空间不足.如下图,看到剩余九十多个G, 怎么都解决不了这个问题 就是买磁盘情理软件clean ...
- [CSP-S模拟测试]:时间机器(贪心+set)
题目描述 作为一名天才科学家,$Kurisu$已经设计出了时间机器的构造. 根据$Kurisu$的构想,时间机器中有$n$种需要放置电阻的节点,第$i$种节点有$s_i$个,其电压$U$的变动范围是$ ...
- JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器
5329. [NOIP2017提高A组模拟8.22]时间机器 (File IO): input:machine.in output:machine.out Time Limits: 2000 ms M ...
- Windows 上的苹果 mac Time Machine 时间机器免费替代品 FreeFileSync 操作指南
Windows 上的苹果 mac Time Machine 时间机器免费替代品 FreeFileSync 操作指南 前言:为什么不用 Windows 10 自带的备份还原呢?因为不稳定,不能很好的备份 ...
- csp-s模拟测试42「世界线·时间机器·密码」
$t3$不会 世界线 题解 题目让求的就是每个点能到点的数量$-$出度 设每个点能到的点为$f[x]$ 则$f[x]=x \sum\limits_{y}^{y\in son[x]} U f[y]$ 用 ...
- JZOJ.5329【NOIP2017模拟8.22】时间机器
Description
- NOIP 模拟 $17\; \rm 时间机器$
题解 \(by\;zj\varphi\) 一道贪心的题目 我们先将节点和电阻按左边界排序,相同的按右边界排序 对于每一个节点,我们发现,选取左边界小于等于它的电阻中右边界大于它且最接近的它的一定是最优 ...
- 时光倒流程序设计-AlloyTicker
熵与负熵 熵遵循熵增原理,即无序非热能与热能之间的转换具有方向性.薛定谔说过:生命本质在于负熵.熵代表的是无序,负熵就是熵的对立,而负熵表示的则是有序.汲取负熵(米饭.面包.牛奶.鸡蛋),可以简单的理 ...
随机推荐
- 一道算法问题:一幢 200 层的大楼,给你两个鸡蛋. 如果在第 n 层扔下鸡蛋,鸡蛋不碎,那么从前 n-1 层扔鸡蛋都不碎. 这两只鸡蛋一模一样,不碎的话可以扔无数次. 已知鸡蛋在0层扔不会碎. 提出一个策略, 要保证能测出鸡蛋恰好会碎的楼层, 并使此策略在最坏情况下所扔次数最少.
今晚要参加网易的笔试,所以一直在刷题,刷到这个题的时候觉得自己的思路很模糊,就去网上百度了一下,找到一个大神给的解决方案: 如下: (http://ppwwyyxx.com/2013/Problem- ...
- Android如何管理sqlite
Android中使用SQlite进行数据操作 标签: sqliteandroid数据库sqlintegerstring 2012-02-28 14:21 8339人阅读 评论(2) 举报 分类: a ...
- 服务器替换san存储
1.通知DBA停库: 串行登陆服务器 2.备份系统信息 mkdir -p /bakinfo df -h > /bakinfo/df.txt_`date +%Y%m%d%H%M%S` ps -ef ...
- Unity3D_08_XML文件创建,读取,修改,添加
今天在工作之余学习了一下关于Unity中关于XML的部分. 在这里要注意添加两个命名空间,如下: 一.xml的解析 首先新建一个xml,可以命名为item.xml,拖进assets里面,内容如下: & ...
- selenium WebDriver 截取网站的验证码
在做爬虫项目的时候,有时候会遇到验证码的问题,由于某些网站的验证码是动态生成的,即使是同一个链接,在不同的时间访问可能产生不同的验证码, 一 刚开始的思路就是打开这个验证码的链接,然后通过java代码 ...
- JWT简明介绍
JSON Web Token一种数据格式,用来表示Token.具有可扩展.防篡改.能够在URL中安全传输的特性,已经形成标准,定义在rfc7519. JSON Web Token (JWT) is a ...
- chrome,firefox浏览器字体发虚解决办法
打开微软自家的edge浏览器,字体就没有问题,刚开始以为是浏览器的问题,调整半天也没有效果,后来怀疑是Windows系统的问题,于是尝试调整字体,成功解决! 解决方案: 进入个性化->字体-&g ...
- 关于ClassLoader的使用
了解ClassLoader: /* * 了解类的加载器:ClassLoader * */ @Test public void testClassLoader() { // 获取到系统类加载器,加载用户 ...
- 零基础快速入门Java的秘诀
刚开始学习Java时要端正自己的学习的目标和态度,明确学习Java基础重点要做什么. 首先第一点,Java基础的学习,基础很重要,基础好地基牢,才能爬的高! 大家要从以下4个方向努力: 代码能力:一定 ...
- 使用broker进行Datagurd主备切换报ORA-12514异常
在使用Datagurd broker进行Datagurd主备切换时报ORA-12514监听异常, 详细信息如下: DGMGRL> switchover to xiaohe; Performing ...