poj 2777Count Color
这道题,做的太悲催了,开始想到每个节点的涂色情况用数组来存,1代表有,0代表没有,提交上去果断RE了好几次,原因是here A, B, C are integers, and A may be larger than B没看到,哎审题不细心呀;
后来改后又tle了,哎这小又没招了,想到是不是没有优化好,然后绞尽脑汁的想优化,结果还是tle,后来无奈的搜了解题报道,才知道用到线段数组的延迟标记,表示压力很大,没办法,稍稍看懂后就表了别人的代码,就A了,哎。。。。。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m,c;
struct e
{
int l,r;
int state;
bool id;
};
e tree[300010];
void build(int s,int t,int p)
{
tree[p].l=s;
tree[p].r=t;
if(s==t) return;
int k=(s+t)>>1;
build(s,k,p<<1);
build(k+1,t,(p<<1)|1);
}
void update(int s,int t,int p,int value)
{
// puts("bug");
int i,j,k;
if(s==tree[p].l&&t==tree[p].r)
{
tree[p].id=1;
tree[p].state = 1<<(value-1);
return;
}
if(tree[p].id)
{
tree[p].id=0;
tree[p<<1].id=1;
tree[(p<<1)|1].id=1;
tree[p<<1].state=tree[p].state;
tree[(p<<1)|1].state=tree[p].state;
}
int mid=(tree[p].l+tree[p].r)>>1;
if(t<=mid)
update(s,t,p<<1,value);
else if(s>mid)
update(s,t,(p<<1)+1,value);
else
{
update(s,mid,p<<1,value);
update(mid+1,t,(p<<1)|1,value);
}
tree[p].state=(tree[p<<1].state)|(tree[(p<<1)|1].state);
if(tree[p<<1].id&&tree[(p<<1)+1].id&&tree[p<<1].state==tree[(p<<1)+1].state)
tree[p].id=1;
}
int find(int s,int t,int p)
{
if(s==tree[p].l&&t==tree[p].r)
{
return tree[p].state;
}
if(tree[p].id) return tree[p].state;
int mid=(tree[p].l+tree[p].r)>>1;
int i=0;
if(t<=mid)
return find(s,t,p<<1);
else if(s>mid)
return find(s,t,(p<<1)+1);
else
{
i=find(s,mid,p*2);
i|=find(mid+1,t,p*2+1);
return i;
}
}
int main()
{
int i,j,k,color;
while(scanf("%d%d%d",&n,&color,&m)!=-1)
{
build(1,n,1);
tree[1].state=1;
tree[1].id=1;
while(m--)
{
getchar();
char c;
scanf("%c",&c);
if(c=='C')
{
scanf("%d%d%d",&i,&j,&k);
if(i<j) swap(i,j);
update(i,j,1,k);
}
else
{
scanf("%d%d",&i,&j);
k=find(i,j,1);
int num=0;
if(i<j) swap(i,j);
// cout<<k<<endl;
for(int s=0;s<color;s++)
if(k&(1<<s)) num++;
printf("%d\n",num);
}
}
}
return 0;
}
转载于:https://www.cnblogs.com/one--world--one--dream/archive/2011/09/24/2189592.html
poj 2777Count Color相关推荐
- POJ 2054 Color a Tree (贪心)
$ POJ~2054~Color~a~Tree $ $ solution: $ 我们先从题中抽取信息,因为每个点的费用和染色的次数有关,所以我们可以很自然的想到先给权值大的节点染色.但是题目还说每个节 ...
- POJ 2054 Color a Tree解题报告
题干 Bob is very interested in the data structure of a tree. A tree is a directed graph in which a spe ...
- POJ 2054 Color a Tree
贪心.... Color a Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: ...
- POJ 1046 Color Me Less(浅水)
一.Description A color reduction is a mapping from a set of discrete colors to a smaller one. The sol ...
- PKU/POJ 2054 Color a Tree
关于树的着色. 要求从根节点出发, 遍历整棵树, 要求代价最小. 访问每个节点的代价V[i] = F[i] * C[i], C[i]为已知的值, F[i]则为访问该节点的时间. 每一步只能从已访问的节 ...
- $2019$ 暑期刷题记录 $2$(基本算法专题)
$ 2019 $ 暑期刷题记录 $ 2 $ (基本算法专题) $ by~~wch $ $ BZOJ~1958~Strange~Towers~of~Hanoi $ (动态规划,递推) 题目大意: 求有 ...
- 【读书笔记】《算法竞赛进阶指南》读书笔记——0x00基本算法
to-do: 例题: POJ 1845 Sumdiv 所有的课后习题: 随缘~~~ 位运算 对于一个二进制数,通常称其最低位为第0位,从右往左依此类推. 补码 unsigned int 直接将其看作3 ...
- matlab里冒泡法比较大小,matlab冒泡法排序
[1,2,3]; % 冒泡法排序,注意的是特征值顺序变化的同时要与相对应的下标同... 转换完之后对向量进行逆序排列, 我看到有同学硬是 写了一个冒泡排序来完成这个工作,你的数据结构老师一定非常欣慰. ...
- poj 2777 Count Color
http://poj.org/problem?id=2777 简单线段树,[成段更新,成段查询]! View Code 1 #include <cstdio> 2 #include < ...
最新文章
- validator的Symbol Coverage没有100%
- 从各大跨平台技术说开去,我们真的需要虚拟 DOM 吗?
- 洛谷——P3807 【模板】卢卡斯定理
- 将TUM数据集制作成BundleFusion数据集
- 服务器win2008 R2 x64 部署ASP.net core到IIS 并解决 HTTP Error 502.5 的问题
- 小米平板5系列共三款机型:全系搭载2K/120Hz屏幕
- A - 顺序表应用1:多余元素删除之移位算法
- (best!)JAVA中文字符编码问题详解
- python读取目录里所有txt文件转excel
- 【docker】docker的简单状态监控
- ubuntu12 环境下编译freerdp
- mysql 嵌套查询优化
- FPGA时钟电路PCBlayout设计原则
- TI DSP处理器中CMD 文件的那些事儿
- 怎样用VR看分频视频?
- idea从插件市场或者外部插件库导入插件的方式
- ubuntu GRUB 引导加载 Beini(WiFi破解神器) Tiny Core Linux
- JDBC连接数据库模板
- template(模板)的介绍以及使用方法
- 软件安全实验(一)PEVIEW-弹窗操作
热门文章
- 成功跳槽百度工资从15K涨到28K,BAT大厂面试总结
- python【Numpy科学计算库】连女朋友都会用的Numpy(真の能看懂~!)
- div中有元素刷新不出来_DNF:神话罐子来了!500个不渝材料就能换,但你刷新不出来...
- python和软件自动化_软件测试和自动化测试
- matlab toolbox下载_Matlab自动导出高质量无变形论文插图
- python画笑脸步骤遇到的问题_用python绘制笑脸的基本步骤
- mysql-plus 动态修改全局sql, 进行数据隔离, 多租户, 多字段修改
- 企业网络推广专员浅析是否网站权重越高企业网络推广效果越好?
- 浅析建设企业网站的三大基本类型
- 网站在改版时如何降低对排名的影响呢?