Count the Colors
来源:互联网 发布:js转化为字符串 编辑:程序博客网 时间:2024/06/05 05:19
/*Author: 2486Memory: 232 KBTime: 110 MSLanguage: C++ (g++ 4.7.2)Result: Accepted*///暴力可过,或者是线段树#include <cstdio>#include <cstring>#include <algorithm>typedef long long ll;using namespace std;const int maxn=8000+5;int n,a,b,c,ans[maxn],col[maxn];int main() { while(~scanf("%d",&n)) { memset(ans,0,sizeof(ans)); memset(col,0,sizeof(col)); int Max=0; for(int i=0; i<n; i++) { scanf("%d%d%d",&a,&b,&c); for(int j=a; j<b; j++) { col[j]=c+1; } Max=max(Max,b); } for(int i=0; i<=Max; i++) { while(i!=0&&col[i]&&col[i]==col[i-1]) { i++; } if(col[i]) { ans[col[i]-1]++; } } for(int i=0; i<=8001; i++) { if(ans[i]) { printf("%d %d\n",i,ans[i]); } } printf("\n"); }}
/*Author: 2486Memory: 356 KBTime: 20 MSLanguage: C++ (g++ 4.7.2)Result: Accepted*/#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=8000+5;int sum[maxn],col[maxn<<2],res[maxn];int n,x1,x2,c;void pushup(int rt) {}void pushdown(int rt,int l,int r) { if(col[rt]!=-1) { col[rt<<1]=col[rt<<1|1]=col[rt];//直接往下递归就可以了,不用管其他 col[rt]=-1; }}void build(int rt,int l,int r) { col[rt]=-1; if(l==r)return; int mid=(l+r)>>1; build(rt<<1,l,mid); build(rt<<1|1,mid+1,r);}void update(int L,int R,int c,int rt,int l,int r) { if(L<=l&&r<=R) { col[rt]=c; return; } pushdown(rt,l,r); int mid=(l+r)>>1; if(L<=mid)update(L,R,c,rt<<1,l,mid); if(mid<R)update(L,R,c,rt<<1|1,mid+1,r); pushup(rt);}void query(int L,int R,int rt,int l,int r) { if(l==r) { sum[l]=col[rt];//赋值,放回区间的位子颜色 return; } pushdown(rt,l,r); int mid=(l+r)>>1; if(L<=mid)query(L,R,rt<<1,l,mid); if(mid<R)query(L,R,rt<<1|1,mid+1,r); pushup(rt);}int main() { while(~scanf("%d",&n)) { memset(sum,-1,sizeof(sum)); memset(res,0,sizeof(res)); build(1,0,maxn-1); for(int i=0; i<n; i++) { scanf("%d%d%d",&x1,&x2,&c); if(x1==x2)continue; update(x1,x2-1,c,1,0,maxn-1); } query(0,maxn-1,1,0,maxn-1);//将所有数据都更新到底部 for(int i=0; i<maxn; i++) { while(i!=0&&sum[i]!=-1&&sum[i]==sum[i-1])//如果没有颜色就加一,如果与之前相等那么也是加一 i++; res[sum[i]]++; } for(int i=0; i<maxn; i++)if(res[i])printf("%d %d\n",i,res[i]); printf("\n"); } return 0;}
0 0
- 【線段樹】Count the Colors
- Count the colors
- ZOJ1610-Count the Colors
- zoj1610-Count the Colors
- ZOJ1610 Count the Colors
- Count the Colors
- Count the Colors
- Count the Colors
- F - Count the Colors
- Count the Colors
- zju1610 Count the Colors
- ZOJ1610-Count the Colors
- Count the Colors
- Count the Colors ZOJ
- Count the Colors ZOJ
- Count the Colors ZOJ
- Count the Colors
- Count the Colors(暴力)
- 移动端高清、多屏适配方案
- 【独立开发者er Cocos2d-x实战 002】使用Cocos Studio创建帧动画
- 数据结构与算法-约瑟夫问题
- Java解析HTML之HTMLParser使用与详解
- 244 16进制的简单运算
- Count the Colors
- 今天开始写博客
- 堆排序
- MySQL的binlog数据如何查看
- UVa 11371 - Number Theory for Newbies
- 抓包之安卓app内请求
- 《opencv入门教程》(迭代器遍历)
- 错排问题--十二金钗
- SQL 合并两个结果集 一个倒序,一个正序