Codeforces Round #200 (Div. 1) (树上的线段树)
来源:互联网 发布:less than知乎 编辑:程序博客网 时间:2024/05/17 08:03
A:
a/b,a > b的话通过串联变回(a - b)/b,a < b的话通过并联来变
B:
仔细想想其实就是个简单的栈操作,如果加入的东西和栈顶相同,则两个消掉,否则入栈。
C:
给你一些士兵的位置,再给你一些最后要占领的位置,问这些士兵最少需要多久使得所有要被占领的位置都被走过。
思路:
首先对所有士兵位置排序,给所有要占领位置排序,可以考虑最左边的占领位置肯定是由最左边的士兵来走是最优的,对于一个确定的时间,这个士兵要保证占领了最左边的位置的情况下最多可以占领左边的多少位置是可以计算出来的,可以通过先走到最左边的位置再往右走尽可能远,或者先走向右边尽可能远但是要保证要能走回到最左边位置。第一个士兵处理好前几个位置,后面的士兵当然也是一样子的,所以二分下答案就可以了。
D:
给你一棵树,树根为节点1,每次有三种操作,第一种是某一个节点注水,该节点的所有儿子也会被注水。第二种是对某一个节点清空,该节点和该节点的所有祖先都会被清空,也就是说有水的都会被清空。第三种操作是询问某一个节点有没有水。
思路:
首先可以先序遍历下树处理出所有节点的时间戳,所有节点的所有儿子节点包括自己代表了一个区间,ld[ u ]表示区间左值,rd[ u ]表示区间右值。可以开两个线段树,一个线段树处理注水操作,另一个线段树处理清空操作,线段树都是维护区间最值的。如果第i个操作是对节点u进行注水操作,对于区间 ( ld[u] , rd[u] )插入 i 来更新, 如果是清空操作,用 i 更新ld[u]的值,询问u的时候,询问下ld[u]注水操作的值和清空操作的值,如果前者大,则有水,否则无水。
我觉得这个应该是很基础的,不过对于所有祖先这样子操作还是挺神奇的。。。下次学下树链剖分~
- Codeforces Round #200 (Div. 1) (树上的线段树)
- Codeforces Round 200 Div1 D Water Tree (树上线段树)
- Codeforces Round #168 (Div. 1) B. Zero Tree(树上DFS)
- 【线段树延迟更新】Codeforces Round #104 (Div. 1) E
- Codeforces Round #179 (Div. 1) A题 线段树
- 线段树Codeforces Beta Round #99 (Div. 1)C
- Codeforces Round #250 (Div. 1) D 线段树
- Codeforces Round #225 (Div. 1) C 树状数组 || 线段树
- Codeforces Round #275 Div.1 B Interesting Array --线段树
- Codeforces Round #225 (Div. 1)C(dfs+线段树)
- Codeforces Round #225 (Div. 1)-C. Propagating tree(线段树)
- 线段树Codeforces Round #136 (Div. 2)
- 有趣的线段树小集合 Codeforces Round #250 (Div. 1) D. The Child and Sequence
- Codeforces Round #200 (Div. 1)D. Water Tree 【dfs序+线段树】
- Codeforces Round #200 (Div. 1) Water Tree (dfs序+线段树)
- Codeforces Round #200 (Div. 1) D. Water Tree(dfs序+线段树)
- Codeforces Round #399 (Div. 1 + Div. 2, combined) B. Code For 1 线段树
- 【codeforces】Codeforces Round #305 (Div. 1)E. Mike and Friends【后缀数组+线段树】
- win7旗舰版(64位)环境下oracle11g的安装方法
- CBG算法的实现
- Android 获取ROOT权限原理解析
- Sharing
- android superuser.apk 管理root权限原理分析
- Codeforces Round #200 (Div. 1) (树上的线段树)
- 黑马程序员之输入输出
- C++设计模式之Builder(建造者)模式
- barcode4j 条形码使用
- 计算机科学中最重要的32个算法
- 从文件读出学生信息数据,按成绩从高到底排序,并输出其中成绩次高者的所有数据。
- eclipse中显示代码行数
- Struts bean标签
- android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context r