题解 \(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. hfctfwp(re)

    1.easy python revering 看字节码操作,昂哥直接看直接写exp太强了,我就直接手动写了个源码出来(昂哥永远滴神) arr0=[249,91,149,113,16,91,53,41, ...

  2. Redis数据库 常用的基本操作

    一.redis数据库操作 redis数据库默认有16个数据库[0-15],默认进入的是0库. select  数据库名 :切换数据库. keys  * :查看所有的键. expire 键 秒数:设置过 ...

  3. Android布局方式总结

    Android的布局分别是:线性布局LinearLayout.相对布局RelativeLayout.帧布局FrameLayout.网格布局GridLayout.约束布局ConstraintLayout ...

  4. F5 Http monitor

    The BIG-IP HTTP health monitor attempts to mabtch the configured Receive String against the HTTP res ...

  5. 利用C语言判定用户输入数据从而给出结果(利用判定用户体重范围)同求最优解!!!

    例子: 要求:医务工作者通过广泛的调查和统计分析,根据成人的身高与体重因素给出了按"体质指数"进行判断的方法,具体如下: 体质指数t=体重 w/(身高h)2(w的单位为kg,h的单 ...

  6. Serverless与Web后端天生不合?

    Serverless/Faas/BaaS 等概念在这几年的技术圈中是绝对的热点词汇之一,国内外众多云厂商也纷纷推出自家的 Serverless 和函数计算产品,微信也依托腾讯云推出了基于 Server ...

  7. Java基础00-字符串14

    1. API 1.1 API概述 2. String String常用类的常用方法 String字符串变量的创建: 声明:    String 变量名; String str; 声明并初始化: Str ...

  8. 【16位RAW图像处理三】直方图均衡化及局部直方图均衡用于16位图像的细节增强。

    通常我们生活中遇到的图像,无论是jpg.还是png或者bmp格式,一般都是8位的(每个通道的像素值范围是0-255),但是随着一些硬件的发展,在很多行业比如医疗.红外.航拍等一些场景下,拥有更宽的量化 ...

  9. 【LeetCode】724. 寻找数组的中心下标

    724. 寻找数组的中心下标 知识点:数组:前缀和: 题目描述 给你一个整数数组 nums ,请计算数组的 中心下标 . 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的 ...

  10. 使用vue-preview报错Cannot read property 'open' of undefined

    最近在做一个vue项目中时,需要使用vue-preview插件制作缩略图,首先在终端使用npm i vue-preview -S指令安装了vue-preview插件,然后在main.js中,导入并引用 ...