poj1201(贪心+树状数组)
来源:互联网 发布:阿里云网站日志在哪里 编辑:程序博客网 时间:2024/06/05 03:27
网上的题解都用啥差分约束系统。。。太高端,不会玩,额。。这题把数据按b的大小进行从小到大排序。然后每次取最右边的数据,用树状数组维护,真的是很方便
#include <iostream>#include<stdio.h>#include<algorithm>#include<cstring>#define mem(a) memset(a,0,sizeof(a))using namespace std;const int MAX=5*1e4+20;typedef struct{ int a,b,c;}Node;Node no[MAX];int c[MAX];bool vis[MAX];bool cmp(const Node&a,const Node &b){ return a.b<b.b;}void add(int n,int x){ while(n<MAX) { c[n]+=x; n+=n&(-n); }}int get_sum(int n){ int s=0; while(n>=1) { s+=c[n]; n-=n&(-n); } return s;}int main(){ int n,i,sum,ist,j,num=0; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d%d%d",&no[i].a,&no[i].b,&no[i].c); sort(no+1,no+1+n,cmp); /*for(i=1;i<=n;i++) cout<<no[i].a<<" "<<no[i].b<<" "<<no[i].c<<endl; */for(i=1;i<=n;i++) { int left=no[i].a,right=no[i].b; sum=get_sum(right)-get_sum(left-1); ist=no[i].c-sum;//cout<<ist<<endl; for(j=right;;j--) { if(ist<=0) break; if(vis[j]==0) { num++; add(j,1); vis[j]=1; ist--; } else continue; } } printf("%d\n",num); return 0;}
0 0
- poj1201(贪心+树状数组)
- 贪心用树状数组优化
- uva 11054 Gerovia的酒交易(贪心+树状数组)
- POJ1201-Intervals-线段树+贪心
- hdu5338 贪心+线段树+二分+树状数组
- poj 1201 1716 (贪心+树状数组)
- 【贪心+堆+树状数组】JXOI2017[加法]题解
- poj1201(图论)
- poj1201
- poj1201
- POJ1201
- HOJ 2430——Counting the algorithms(树状数组+贪心)
- 2008 Asia Regional Beijing (网络流+树状数组+贪心)hdu2485 - 2494
- POJ 3110 Jenny's First Exam (二分 + 树状数组 + 贪心 + 预处理年份)
- bzoj 1106: [POI2007]立方体大作战tet(贪心+树状数组)
- (转)树状数组
- 树状数组(转载)
- Stars(树状数组)
- JVM虚拟机结构
- Android-扩展BaseAdapter实现progressBar下载
- OC中字典
- redis源码阅读[2]
- vs2010项目属性配置
- poj1201(贪心+树状数组)
- OC中字符串NSstring
- hdu 2544 最短路
- IDEA JVM参数
- uva12716 GCD XOR(打表找规律+筛法)
- QT 绘制 五角图案
- 自适应图像分辨率
- Moore's voting algorithm
- Swift学习笔记之数组(三)