[BZOJ4636][扫描线+set]蒟蒻的数列
来源:互联网 发布:足迹软件 编辑:程序博客网 时间:2024/05/22 11:42
感觉用扫面线+set要比线段树好打一些
#include <cstdio>#include <iostream>#include <algorithm>#include <set>#define N 40010using namespace std;typedef long long ll;multiset<ll,greater<ll> > S;int n,cnt;ll Ans;struct stp{ int x; ll k; int g; friend bool operator <(stp a,stp b){ return a.x<b.x; }}A[N*3];inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline void rea(int &x){ char c=nc(); x=0; int f=1; for(;c>'9'||c<'0';c=nc())f=c=='-'?-f:f; for(;c>='0'&&c<='9';x=x*10+c-'0',c=nc()); x*=f;}inline void rea(ll &x){ char c=nc(); x=0; int f=1; for(;c>'9'||c<'0';c=nc())f=c=='-'?-f:f; for(;c>='0'&&c<='9';x=x*10+c-'0',c=nc()); x*=f;}int main(){ rea(n); for(int i=1;i<=n;i++){ int l,r; ll k; rea(l); rea(r); rea(k); if(l>=r) continue; A[++cnt]=(stp){l,k,1}; A[++cnt]=(stp){r,k,0}; } S.insert(0); sort(A+1,A+1+cnt); int last=A[1].x; for(int i=1;i<=cnt;i++){ Ans+=1ll*(A[i].x-last)*(*S.begin()); last=A[i].x; if(A[i].g) S.insert(A[i].k); else S.erase(S.find(A[i].k)); } printf("%lld\n",Ans+(*S.begin())); return 0;}
0 0
- 【BZOJ4636】蒟蒻的数列【扫描线】【set】
- [BZOJ4636][扫描线+set]蒟蒻的数列
- BZOJ4636 蒟蒻的数列
- 【bzoj4636】蒟蒻的数列
- 【bzoj4636】【蒟蒻的数列】【线段树】
- BZOJ4636 蒟蒻的数列 链表
- bzoj4636 蒟蒻的数列(离散化+线段树)
- BZOJ 4636: 蒟蒻的数列 线段树/扫描线 set
- poj2932 Coneology【扫描线+set】
- 【bzoj4561】【JLOI2016】【圆的异或并】【扫描线+set】
- [扫描线 树状数组 随机数列 优化] BZOJ 2221 [Jsoi2009]面试的考验
- hdu 3681 Prison Break 扫描线set
- POJ 2932 Coneology (扫描线判断最外面的圆&set维护最近的圆)
- [扫描线 set] BZOJ 4561 [JLoi2016]圆的异或并
- bzoj 4561: [JLoi2016]圆的异或并(扫描线+set)
- BZOJ 4636: 蒟蒻的数列
- BZOJ 4636 蒟蒻的数列
- 圆的扫描线
- Myeclipse中关闭updating indexes 和优化myeclipse启动速度
- 60个较为实用、高效的工具资源库
- socket之gethostbyname
- Unsupported device model
- Unix/Linux系统下的时间知识点
- [BZOJ4636][扫描线+set]蒟蒻的数列
- 层次遍历二叉树-三种不同的方法
- CoAP与 MQTT 初步了解总结
- 百度语音识别REST API完整Demo
- 哪些常见操作会造成内存泄漏?
- 1077. Kuchiguse 解析
- 用FFmpeg SDK计算MP3文件的时长
- 栈ADT
- 2017年山东省第八届acm省赛总结