uva297 Quadtrees (线段树思想,区间操作)
2015-06-24 09:58
197 查看
借鉴了线段数区间操作的思想,只是把一个结点的孩子扩展到了4个,
结点k,四个孩子编号分别为4*k+1,4*k+2,4*k+3,4*K+4,从零开始。
根据层数,确定权值。
结点k,四个孩子编号分别为4*k+1,4*k+2,4*k+3,4*K+4,从零开始。
根据层数,确定权值。
#include<cstdio> #include<cstring> const int maxn = 1365 + 5;//4^5 + 4^4 + ... + 1 char s[maxn]; int tr[maxn]; int p; void add(int o) { char ch = s[p++];// if(ch == 'p'&&!tr[o]) { int no = o<<2; for(int i = 1; i <=4; i++) add(no+i); } else if(ch == 'f') { tr[o] = 1; } } int w[] = {1024,256,64,16,4}; int query(int o,int l) { if(l == 5) return tr[o]; int ans = 0; if(!tr[o]){ int no = o<<2; l++; for(int i = 1; i <=4; i++) { ans += query(no+i,l); } } else { ans += w[l]; } return ans; } int main() { // freopen("in.txt","r",stdin); int T; scanf("%d",&T); while(T--) { memset(tr,0,sizeof(tr)); for(int i = 0; i < 2; i++){ scanf("%s",s); p = 0; add(0); } printf("There are %d black pixels.\n",query(0,0)); } return 0; }
相关文章推荐
- mvc中做一个ajax读取数据的感想
- Basic Calculator II
- 在英语中,in,on,at的用法是?
- 异常java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;处理办法
- Scala的面向对象
- [Leetcode]Two Sum
- 浏览网页背后的心理学:你是否也这么想?
- Activity中startActivityForResult()的连续调用
- 社説 20150624 首相沖縄訪問 現実的な基地負担軽減を図れ
- Nova 扩展支持ipsan API源代码解析
- 多校对抗赛 2015年6月22
- adb shell mount android 分区
- 詩經甲骨文解讀:山有樞
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记35 UITextField文本框
- What components are not suitable to work as component interfaces
- MVP模式在Android开发中的应用
- 九鼎创展s5p4418开发板Android4.4-搭建最简单的linux文件系统
- ppt制作精华
- Effective C++ 条款13
- cocos2dx常见的46种+22种动作详解