题解 \(by\;zj\varphi\)

一道贪心的题目

我们先将节点和电阻按左边界排序,相同的按右边界排序

对于每一个节点,我们发现,选取左边界小于等于它的电阻中右边界大于它且最接近的它的一定是最优的

因为对于一个节点,其往后的节点中右边界可能会变大,要留出大的给后面的,换句话说,要让一个电阻发挥它最大的作用

注意:因为给出的电阻可能会有参数一样的,所以要用 \(\rm multiset\)

Code
#include<bits/stdc++.h>
#define ri register signed
#define p(i) ++i
using namespace std;
namespace IO{
char buf[1<<21],*p1=buf,*p2=buf;
#define gc() p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++
template<typename T>inline void read(T &x) {
ri f=1;x=0;register char ch=gc();
while(ch<'0'||ch>'9') {if (ch=='-') f=0;ch=gc();}
while(ch>='0'&&ch<='9') {x=(x<<1)+(x<<3)+(ch^48);ch=gc();}
x=f?x:-x;
}
}
using IO::read;
namespace nanfeng{
#define FI FILE *IN
#define FO FILE *OUT
template<typename T>inline T cmax(T x,T y) {return x>y?x:y;}
template<typename T>inline T cmin(T x,T y) {return x>y?y:x;}
typedef long long ll;
static const int N=5e4+7;
int T,n,m,fg;
ll sum1,sum2;
struct node{int l,h,nm;}U[N],R[N];
inline int operator<(const node &n1,const node &n2) {return n1.h<n2.h;}
inline int cmp(const node &n1,const node &n2) {return n1.l!=n2.l?n1.l<n2.l:n1<n2;}
multiset<node> st;
multiset<node>::iterator it;
inline int main() {
// FI=freopen("nanfeng.in","r",stdin);
// FO=freopen("nanfeng.out","w",stdout);
read(T);
for (ri z(1);z<=T;p(z)) {
st.clear();
read(n),read(m);
fg=sum1=sum2=0;
for (ri i(1);i<=n;p(i)) {
read(U[i].l),read(U[i].h),read(U[i].nm);
sum1+=U[i].nm;
}
for (ri i(1);i<=m;p(i)) {
read(R[i].l),read(R[i].h),read(R[i].nm);
sum2+=R[i].nm;
}
if (sum2<sum1) {puts("No");continue;}
sort(U+1,U+n+1,cmp);
sort(R+1,R+m+1,cmp);
ri lst=1;
for (ri i(1);i<=n;p(i)) {
while(lst<=m&&R[lst].l<=U[i].l) st.insert(R[lst]),p(lst);
node tmp;
while((it=st.lower_bound(U[i]))!=st.end()&&it->nm<=U[i].nm) {
U[i].nm-=it->nm;
st.erase(it);
}
if (it==st.end()&&U[i].nm) {fg=1;break;}
if (U[i].nm)
tmp=*it,tmp.nm-=U[i].nm,st.erase(it),st.insert(tmp);
}
if (fg) puts("No");
else puts("Yes");
}
return 0;
}
}
int main() {return nanfeng::main();}

NOIP 模拟 $17\; \rm 时间机器$的更多相关文章

  1. NOIP 模拟 $17\; \rm 世界线$

    题解 \(by\;zj\varphi\) 此题经简单观察可发现,一个点的贡献就是这个点所能到的点减去它的出度 那么我们就可以暴力搜索,但是显然会超时,所以我们可以使用一个黑科技 \(\rm bitse ...

  2. NOIP 模拟 $17\; \rm weight$

    题解 \(by\;zj\varphi\) 一道树剖的题 先对于原图求出一棵最小生成树,求出来的这棵树中的边定为树边,其它边叫非树边 那么对于一条非树边,它要成为最小生成树上的边,权值只能为连接它两个端 ...

  3. NOIP模拟17.9.22

    NOIP模拟17.9.22 前进![问题描述]数轴的原点上有一只青蛙.青蛙要跳到数轴上≥

  4. NOIP模拟17.9.21

    NOIP模拟17.9.21 3 58 145 201 161.5 样例输出21.6 数据规模及约定对于40% 的数据,N <= 20对于60% 的数据,N <= 1000对于100% 的数 ...

  5. NOIP模拟 17.8.20

    NOIP模拟17.8.20 A.阶乘[题目描述]亲爱的xyx同学正在研究数学与阶乘的关系,但是他喜欢颓废,于是他就制作了一个和阶乘有关系的数学游戏:给出两个整数 n,m,令 t = !n,每轮游戏的流 ...

  6. NOIP模拟 17.8.18

    NOIP模拟17.8.18 A.小菜一碟的背包[题目描述]Blice和阿强巴是好朋友但萌萌哒Blice不擅长数学,所以阿强巴给了她一些奶牛做练习阿强巴有 n头奶牛,每头奶牛每天可以产一定量的奶,同时也 ...

  7. NOIP模拟 17.8.15

    NOIP模拟17.8.15 A 债务文件名 输入文件 输出文件 时间限制 空间限制debt.pas/c/cpp debt.in debt.out 1s 128MB[题目描述]小 G 有一群好朋友,他们 ...

  8. NOIP模拟 17.8.17

    NOIP模拟17.8.17 A 小 G 的字符串文件名 输入文件 输出文件 时间限制 空间限制str.pas/c/cpp str.in str.out 1s 128MB[题目描述]有一天,小 L 给小 ...

  9. NOIP模拟 17.8.16

    NOIP模拟17.8.16 A 债务文件名 输入文件 输出文件 时间限制 空间限制debt.pas/c/cpp debt.in debt.out 1s 128MB[题目描述]小 G 有一群好朋友,他们 ...

随机推荐

  1. 线程中sleep()方法和wait()方法的前生今世

    先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员.我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 不知道大家有没有这种感觉,在公 ...

  2. webview和H5交互

    由于H5的灵活多变,动态可配的特点,也为了避免冗长 的审核周期,H5页面在app上的重要性正日益突显. iOS应用于H5交互的控件主要是UIWebView及WKWebView WKWebView是14 ...

  3. CURL 实战下载

    #include <string> #include <stdio.h> #include <iostream> #include<fstream> # ...

  4. 自动化测试 如何快速提取Json数据

    Json作为一种轻量级的交换数据形式,由于其自身的一些优良特性比如包含有效信息多,易于阅读和解析. 使用Json的场景也很多,比如读取解析系列化的Json格式的数据,我们需要将一个Json的字符串解析 ...

  5. uni-app中当uni.navigateTo传的参数为object时,通过传递的不同参数,在显示单页面内通过v-if判断显示出对应的内容(可实现多页面效果)

    通过uni-app中当uni.navigateTo传的参数为object时,通过传递的不同参数,在显示单页面内通过v-if判断显示出对应的内容(可实现多页面效果) 起始页跳转到对应页面,并传递参数(o ...

  6. 高校表白App-团队冲刺第五天

    今天要做什么 封装Adapter制作引导页 今天做了什么 成功封装工具类,为以后的轮播做了铺垫 遇到的问题 在封装时采用数组容器进行操作,只能添加图片作为元素,对于layout不可加入

  7. springMVC-5-视图解析器

    视图和视图解析器工作流程 第一步:获取到ModelAndView对象 请求处理方法执行完成后,无论返回是String,View 还是 ModeMap 类型,Spring MVC 也会在内部将它们装配成 ...

  8. 微信小程序云开发-数据库-查询满足条件的数据

    一.查询价格大于10的商品 1.wxml文件 2.js文件 where条件语句:.where({price:db.command.gt(10)}) 3.查询结果 二.查询价格大于等于10的商品 js文 ...

  9. sentry_sdk 错误日志监控 Flask配置

    https://www.cnblogs.com/sui776265233/p/11348169.html 开源的平台,为小服务日志监控统一管理 pip install --upgrade sentry ...

  10. MySQL是怎么解决幻读问题的?

    前言 我们知道MySQL在可重复读隔离级别下别的事物提交的内容,是看不到的.而可提交隔离级别下是可以看到别的事务提交的.而如果我们的业务场景是在事物内同样的两个查询我们需要看到的数据都是一致的,不能被 ...