[kuangbin带你飞]专题七 线段树 F
来源:互联网 发布:php证书 编辑:程序博客网 时间:2024/05/22 00:55
https://vjudge.net/contest/66989#problem/F
给了每一线段的颜色,存在颜色覆盖,求表面上看能看到的颜色种类和各种颜色的段数
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define lid (id << 1)#define rid (id << 1 | 1)using namespace std;const int maxn = 8005;struct node{ int l, r, c;}tr[maxn*4];int cnt[maxn], temp;void push_down(int id){ if(tr[id].c!=-1) { tr[lid].c=tr[rid].c=tr[id].c; tr[id].c=-1; }}void Build (int id, int l, int r){ tr[id].l = l;tr[id].r = r;tr[id].c = -1; if (l== r-1) return ; else{ int mid=(l+r)>>1; Build (id<<1, l, mid); Build (id<<1|1, mid, r); }}void update (int id, int l, int r, int c){//区间更新, if (l==tr[id].l && tr[id].r==r) tr[id].c = c; else{ push_down(id); int mid = (tr[id].l+tr[id].r)>>1; if (r <= mid) update (lid, l, r, c); else if (l >= mid) update (rid, l, r, c); else { update (lid, l, mid, c); update (rid, mid, r, c); } }}void Count (int id){ if (tr[id].c != -1) {//当前区间裸露在外面 if (tr[id].c != temp)//当前区间没有被统计过 cnt[tr[id].c] ++; temp = tr[id].c; return ; } if (tr[id].l == tr[id].r-1) {//返回未被覆盖的区间,否则会栈溢出 temp = -1; return ; } Count (lid); Count (rid);}int main (){ int n, m; while (scanf("%d",&n) != EOF) { Build (1,0,maxn); while (n --) { int x, y, c; scanf ("%d %d %d", &x, &y, &c); update (1, x, y, c); } temp = -1; memset (cnt,0,sizeof(cnt)); Count(1); for (int i=0;i<maxn; i++) if (cnt[i]) printf ("%d %d\n",i,cnt[i]); printf ("\n"); } return 0;}
阅读全文
0 0
- [kuangbin带你飞]专题七 线段树 F
- [kuangbin带你飞]专题七 线段树
- [kuangbin带你飞]专题七 线段树 H HDU4027
- [kuangbin带你飞]专题七 线段树 B
- [kuangbin带你飞]专题七 线段树 A
- [kuangbin带你飞]专题七 线段树 C
- [kuangbin带你飞]专题七 线段树 E
- [kuangbin带你飞]专题七 线段树 ABCDE 题解,持续更新
- [kuangbin带你飞]专题七 线段树 A HDU 1166
- [kuangbin带你飞]专题七 线段树 B HDU 1754
- [kuangbin带你飞]专题七 线段树 C POJ 3468
- [kuangbin带你飞]专题七 线段树 D POJ 2528
- [kuangbin带你飞]专题七 线段树 E HDU 1698
- [kuangbin带你飞]专题七 线段树 G POJ 3264
- [kuangbin带你飞]专题七 线段树 I HDU 1540
- [kuangbin带你飞]专题七 线段树 J HDU 3974
- [kuangbin带你飞]专题七 线段树 题解(未完)
- [kuangbin带你飞]专题七 线段树 【A、B、C、E、G、H】
- 交换机相关高级特性
- SQL Server2008 R2设置sa登录
- 各种电容器的优缺点
- Windows下CMD中文乱码问题解决方法
- T0004 Fibonacci问题
- [kuangbin带你飞]专题七 线段树 F
- php环境配置
- 贪吃蛇大神的代码,非原创
- 二叉树的层次遍历
- C++ dynamic_cast操作符
- JDK的下载与安装&eclipse的下载与安装
- 一个demo学会java
- Fragment生命周期
- 打开TensorBoard面板(MNIST)