线段树 HDU 4046 panda
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4046
代码风格:www.notonlysuccess.com
题目大意:求wbw出现的个数
算法:线段树,区间合并
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;#define lson l, m, rt << 1
#define rson m+1, r, rt << 1 | 1
#define mid int m = (r+l) >> 1int cnt[454545];
char s[465456];void PushUp(int L, int R, int m, int rt)
{cnt[rt] = cnt[rt << 1] + cnt[rt << 1 | 1];if(L <= m && m+2 <= R)if(s[m] == 'w' && s[m+1] == 'b' && s[m+2] == 'w')cnt[rt] ++;if(L <= m-1 && m + 1 <= R){if(s[m-1] == 'w' && s[m] == 'b' && s[m+1] == 'w'){cnt[rt] ++;}}
}void build(int l, int r, int rt)
{if(r == l)return ;mid ;build(lson);build(rson);PushUp(l, r, m, rt);
}void update(int d, int l, int r, int rt)
{if(l == r){return ;}mid ;if(d <= m)update(d, lson);else update(d, rson);PushUp(l, r, m, rt);
}int minz(int a, int b)
{return a < b ? a : b;
}int maxz(int a, int b)
{return a > b ? a : b;
}int query(int L, int R, int l, int r, int rt)
{if(L <= l && r <= R)return cnt[rt];mid ;int ret = 0;if(R <= m)return query(L, R, lson);else if(L > m)return query(L, R, rson);elseret += query(L, R, lson) + query(L, R, rson);if(maxz(l, L) <= m && m+2 <= minz(r, R))if(s[m] == 'w' && s[m+1] == 'b' && s[m+2] == 'w')ret ++;if(maxz(l, L) <= m-1 && m + 1 <= minz(r, R))if(s[m-1] == 'w' && s[m] == 'b' && s[m+1] == 'w')ret ++;return ret ;
}int main()
{int n, m, T;int a, b, c;int ica = 1;char op[45];scanf("%d", &T);while(T --){printf("Case %d:\n", ica ++);memset(s, 0, sizeof(s));memset(cnt, 0, sizeof(cnt));scanf("%d%d", &n, &m);scanf("%s", s);build(0, n-1, 1);while(m --){scanf("%d%d", &a, &b);if(a == 1){scanf("%s", op);s[b] = op[0];update(b, 0, n-1, 1);}else{scanf("%d", &c);printf("%d\n", query(b, c, 0, n-1, 1));}}}return 0;
}
线段树 HDU 4046 panda相关推荐
- hdu 4046 Panda 线段树
五场的网络赛的题目出现了大量的线段树的题目,每次都只能坐在那里干瞪眼.. 看来需要好好的啃啃线段树了.. #include<iostream> #include<string> ...
- poj 2528 离散化+线段树 hdu 1698 线段树 线段树题目类型一:染色计数 外加离散化
第一次听到离散化是今年省赛的时候,一道矩形并的题,很水,就两个矩形... 今天再去做线段树已经发现离散化忘得差不多了...水逼的悲哀啊... 先看简单点的hdu 1698 http://acm.hdu ...
- 线段树——HDU - 1698
题目含义 就是初始化一堆数为1 可以经过操作把一个区间的数都改变 并求这堆数的总大小 题目分析 有一个 #include<iostream> #include<stdio.h> ...
- 线段树 HDU 3397
5种操作 具体看代码 #include<iostream> #include<stdio.h> #include<string.h> #include<alg ...
- 暑期集训5:并查集 线段树 练习题G: HDU - 1754
2018学校暑期集训第五天--并查集 线段树 练习题G -- HDU - 1754 I Hate It 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让 ...
- 暑期集训5:并查集 线段树 练习题F: HDU - 1166
2018学校暑期集训第五天--并查集 线段树 练习题F -- HDU - 1166 敌兵布阵 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A ...
- 暑期集训5:并查集 线段树 练习题B: HDU - 1213
2018学校暑期集训第五天--并查集 线段树 练习题B -- HDU - 1213 How Many Tables Today is Ignatius' birthday. He invites ...
- 暑期集训5:并查集 线段树 练习题A: HDU - 1232
2018学校暑期集训第五天--并查集 线段树 练习题A -- HDU - 1232 畅通工程 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅 ...
- HDU 5861 Road 线段树区间更新单点查询
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5861 Road Time Limit: 12000/6000 MS (Java/Othe ...
最新文章
- 中tr不能显示字符_BeautifulSoup4中find 和find_all的比较
- 使用SaxParser和完整代码进行XML解析
- 数据结构与算法之-----图(代码实现)
- SQL Server复制需要有实际的服务器名称才能连接到服务器 错误解决方案
- 《统计学习方法》——逻辑斯蒂回归
- 【产品】产品经理PM相关书籍荐读
- Tcl学习2——Tcl语言语法
- 百度指数 数据分析(介绍)
- Silverlight Blend动画设计系列五:故事板(StoryBoards)和动画(Animation)
- 【HAL库系列】0.STM32CubeIDE介绍
- Unity Metaverse(二)、Mixamo Animator 混合树与动画融合
- 抖音蓝V号如何在企业首页添加联系方式?解读详细的设置流程
- 2022年车险攻略:1分钟告诉你什么是车险怎么买?
- 数据在计算机中存储形式
- ITX-3568JQ四核ITX工业级主板
- ts报错:Object is possibly ‘undefined‘.Vetur(2532)
- 数据结构复习题集(客观题)
- 封装Win10步骤和注意事项
- linux l7,linux iptables L7-filter
- ubuntu9.10安装gmlive看网络电视 #ubuntu9.10 #gmlive #pplive #sopcast
热门文章
- Linux文件系统管理——创建与检测
- 测量标准误(Standard Error of Measurement;SEm)
- HTML为什么称为超文本标记语言?< DOCTYPE html>什么意思?
- “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛——C.面积【签到题】
- 深入理解操作系统实验——bomb lab(phase_2)
- 基于Bootstrap的下拉框多选 Bootstrap Multiselect 插件使用
- pdfmake支持html,pdfMake前端导出pdf
- “XXX.exe 中的 0xXXXXXXXX处未处理的异常: 0xC0000005: 读取位置 0xXXXXXXXX 时发生访问冲突”的一种解决方案
- 苹果支付验证回执单相关错误码
- 《深入理解计算机网络》迷你书