zoj 2615 Cells 栈的运用】的更多相关文章

题目链接:ZOJ - 2615 Scientists are conducting research on the behavior of a newly discovered Agamic Cellular Microbe. This special kind of microbe is capable of massively reproducing by itself in a short time. The lifetime of an ACM consists of three pha…
这道题在LA是挂掉了,不过还好,zoj上也有这道题. 题意:好大一颗树,询问父子关系..考虑最坏的情况,30w层,2000w个点,询问100w次,貌似连dfs一遍都会TLE. 安心啦,这肯定是一道正常人能做的题目.不过是需要几个小技巧. 1.2000w个点不一定都要保存下来,事实上,虽然题目给了256M的空间,只要开了两个这么大的数组,MLE是跑不了的,所以只保存30w个父节点. 2.如果这30w个父节点构成一条链,dfs的栈肯定爆.所以需要用栈模拟dfs.这里用的是stack<int>,当然…
注意数组别开太小了,代码照着训练经典打的: #include <iostream> #include <sstream> #include <cstdio> #include <climits> #include <cstring> #include <cstdlib> #include <string> #include <stack> #include <map> #include <cm…
B - Building Fire Stations Time Limit:5000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu Submit Status Practice ZOJ 3820 Appoint description:  System Crawler  (2015-08-15) Description Marjar University is a beautiful and peaceful place.…
ZOJ - 2967Colorful Rainbows 题目大意:给你道彩虹,每条彩虹有两个属性,a斜率和b截距,也就是彩虹描述为y=ax+b的直线,并且不存在垂直的彩虹以及一样的彩虹.然后就说明,如果一条彩虹能在取任意x值时的y值大于其他所有彩虹,那么这条彩虹就能被看见,(也就是y轴从上往下不被其他彩虹完全挡住),给定一些彩虹的信息,问能看见几条彩虹?(一开始时理解错题意了~~~) 首先我们是可以知道的,如果斜率a相同,那么截距b小的明显会被大的挡住,所以我们只处理同斜率a中截距b最大的节点,…
Mergeable Stack Time Limit: 2 Seconds      Memory Limit: 65536 KB Given initially empty stacks, there are three types of operations: 1 s v: Push the value onto the top of the -th stack. 2 s: Pop the topmost value out of the -th stack, and print that…
https://vjudge.net/problem/UVALive-3486 题意: 判断u是否是v的祖先. 思路: 很简单,dfs遍历,记录每个节点第一次访问时的时间戳 in[i] 和第二次访问时的时间戳 out[i],如果满足in[x]<in[y]<out[x],那么x就是y的祖先. 用dfs实现是很容易的事,但这题需要用栈来模拟一下. #include<iostream> #include<algorithm> #include<cstring> #…
题目链接:https://cn.vjudge.net/contest/209473#problem/D 题目大意:有一棵树,这棵树的前n个节点拥有子节点,告诉你n的大小,以及这n个节点各有的子节点个数,对于Q个询问<x,y>,回答x是否是y的祖先. 解题思路: 一开始想的LCA,倍增解决.然后一看数据范围,2e7!瞬间被吓回来了. 想了各种方法百思不得其解最后看了题解orz(强烈建议独立思考,挫败感很强!). 题解……万分机智,我们思考一下深搜建树的过程,先遍历到一个父亲节点,再往下遍历到这个…
好久没写递归了,怕手生再来练练手. 题意:车轨上有上图所示的n个中转栈,现有2n个列车,给出列车初始编号序列.列车从最右边驶入车轨,并且列车只能从右向左移动,要求给出列车中转操作序列,使列车经过这n个中转栈后从最左端输出时满足1~2n的排列. 分析:其实这不就是火车出栈问题吗,可以用分治递归的思路,首先使一半有序,然后再合并使整体有序. 思路:具体来讲就是,一段无序的序列(编号1~2n),通过一个中转栈使1 ~ 2n-1在整个序列的前面2n-1+1 ~ 2n在整个序列的后面:再经过下一中转栈时,…
题意:给出n条y=ai*x+bi的直线.对于这些直线,如果存在x使得该直线y大于其他任意一直线,那么这条直线可以被看见,问有多少条直线可以被看见. 做法什么的不讲了,参见:http://blog.csdn.net/ten_three/article/details/12289427  以及  http://blog.sina.com.cn/s/blog_7eee8bf3010136d8.html 利用了堆栈来做,总体复杂度O(nlogn) 代码: #include <iostream> #in…