【NOIP2017提高A组模拟8.22】时间机器
2017-08-23 11:00
302 查看
set模板
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> #include<set> #define fo(i,a,b) for(i=a;i<=b;i++) #define ll long long using namespace std; const ll inf=0x7fffffffffffffff; int read(){ int x=0; char ch=getchar(); while (ch<'0' || ch>'9') ch=getchar(); while (ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar(); return x; } const int maxn=50005; int i,j,k,l,n,x,y,z,t,m; bool bz; struct P{ int x,y,z,w; bool operator <(const P &b)const{return y<b.y;} }a[maxn*2],tmp; multiset<P> cs; multiset<P>::iterator it; bool cmp(P a,P b){return a.x<b.x || a.x==b.x && a.w==1;} int main(){ // freopen("t2.in","r",stdin); freopen("machine.in","r",stdin); freopen("machine.out","w",stdout); t=read(); while (t){ t--; n=read(); m=read(); l=0; fo(i,1,n+m){ if (i==n+1) l=1; a[i].x=read(); a[i].y=read(); a[i].z=read(); a[i].w=l; } sort(a+1,a+n+m+1,cmp); bz=false; cs.clear(); fo(i,1,n+m) if (a[i].w==0){ while (a[i].z){ it=cs.lower_bound(a[i]); if (it!=cs.end()){ tmp=*it; cs.erase(it); x=min(a[i].z,tmp.z); a[i].z-=x; tmp.z-=x; if (tmp.z) cs.insert(tmp); } else{ bz=true; break; } } if (bz==true) break; } else cs.insert(a[i]); if (bz) printf("No\n"); else printf("Yes\n"); } }
相关文章推荐
- 【JZOJ5329】【NOIP2017提高A组模拟8.22】时间机器
- 【jzoj5329】【NOIP2017提高A组模拟8.22】【时间机器】【数据结构】【扫描线】
- 【NOIP2017提高A组模拟8.22】密码
- JZOJ.5329【NOIP2017模拟8.22】时间机器
- JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器
- 5329. 【NOIP2017提高A组模拟8.22】时间机器 map
- 【NOIP2017提高A组模拟8.22】世界线
- 区间【NOIP2017提高A组模拟9.16】
- 【NOIP2017提高A组模拟10.6】Biology
- 【NOIP2017提高A组模拟10.10】Graph
- 神炎皇【NOIP2017提高组模拟12.10】
- 【NOIP2017提高组模拟12.17】巧克力狂欢
- 【NOIP2017提高A组模拟7.13】abcd
- 【NOIP2017提高A组模拟8.16】最短路
- 【NOIP2017提高A组模拟9.5】NYG的背包
- 【NOIP2017提高A组模拟10.5】Ping
- 【NOIP2017提高组模拟12.18】A
- 【NOIP2017提高A组模拟7.14】紧急撤离
- 【NOIP2017提高A组模拟8.25】影子
- 【NOIP2017提高A组模拟8.10】文本编辑器