摘要:
今天遇到一个题,有两种操作,A添加新顶点,B,询问某个点是否在当前点的凸包内。。简单来说就是只有添加操作的凸包维护,做法也不难想,可以从我们正常的水平序求凸包中得到启发,即动态维护一条上凸折线,以及一条下凸折线,用STL可以得到一个O(nlogn)的做法。。切完顺便把程序当场模板留了下来,感觉这个思路用来做模板挺好用的,不停的insert操作就可以了。代码也短View Code 1 //By Lin 2 #include<cstdio> 3 #include<cstring> 4 #include<map> 5 #define mp(x,y) make_pa 阅读全文
摘要:
http://codeforces.com/contest/257/problem/E 闲来无事切一下div2的比赛,增强一下自信心,弱暴了=。=,最近卡题卡得要靠div2来涨信心了。 E题题面很长,但是实际很好读,读完题发现就是一个纯粹的模拟题,不过规模比较大需要用数据结构来维护,一开始觉得平衡树挺方面的,后来发现楼层之后10^5离散化都不用就写成线段树了。 由于电梯运行时间可能很大,所以不能以秒为单位模拟,但是显然可以以请求电梯以及下电梯的事件来模拟,用线段树判断当前向下的请求以及向上请求总数,判断电梯运行方向,同时顺便求出以该方向运行多久可以满足第一个请求,再于新增加请求时间比较看看哪个 阅读全文
摘要:
http://codeforces.com/problemset/problem/70/E 给一棵树,让你在树上建立若干个区域中心(每建立一个需花费一定代价),最终每个节点到最近区域中心距离为Li, 则会产生d[Li]的代价,求一个方案使得最终总代价最小。 神级树形dp,看完题解才会的,感觉是我之前完全没有见识过的一类树形dp思路,太孤陋寡闻了! 如图,dp[T,g]作为一个状态,T是原图中截断某条边剩下的子数,容得T数目是O(n)级别的,g是树上某个顶点(dp[T,g]表示T这棵子树的根v,以g为中心最小代价,同时树上其他顶点可以以其他结点作为中心。原题解中g限定为T上的节点,显然这样定义状 阅读全文