2011年9月9日
摘要: 题目:Giant For题意:一个容器有三种操作:add x y: 增加一坐标。remove x y: 去除一坐标。find x y: 查找容器里的一坐标使得其座标值大于x y,如果有多组值,按主以x次以y排序,输出最小x, y(0 <= x, y<= 1000000000)解题思路:用线段树维护坐标点,以x值作为叶结点,然后第个结点保存其子树的最大y值,如果find x, y,从根结点开始,往符合条件的子树深入,即往子树有大于x的叶结点和大于y值的结点的子树前进这里x,y值很大,数组开不下去,但操作数最多才200000,也就是最多才有200000对不同的数,首选输入所有的操作,按 阅读全文
posted @ 2011-09-09 14:11 Kenfly 阅读(296) 评论(0) 推荐(0)
摘要: 题目:Find the maximum题意:如题。解题思路:打表后不难找出一条规律:要找的那个数总是2*3*5*7*...这样的值,用递推方法求出所有范围内的这些素数积,从中用二分找出符合的数就行了。比赛的时候,小杰用其独藏的C++高精度模版写了个,TLE,然后cxyue用java过掉了。当时我说用二分查找优化下啊,cxyue说才100个数,二分没多大用,后来那天晚上,小杰跟我说他100多ms过掉了,用了二分。不懂java,下面是鄙人对着类库敲出来的AC代码。顺便一说,为什么类成员变量要定义为static呢,因为只有static数据成员才能被static成员函数调用,main函数是static 阅读全文
posted @ 2011-09-09 13:15 Kenfly 阅读(514) 评论(0) 推荐(0)
摘要: 题目:To Miss Our Children Time题意:给出n个长方体,其长宽高分别为ai,bi,ci,di, di为长方体的类型。di为0的长方体,当其长宽分别大于或等于某个长方体时,可以摆放在某个长方体上面。di为1的长方体,当其长宽分别大于或等于且其底面积大于某个长方体时,可以摆放在某个长方体上面。di为2的长方体,当其长宽分别大于某个长方体时,可以摆放在某个长方体上面。求通过这些长方体可以摆出的最高塔的高度。解题思路:这题是经典的求DAG图上的最长路径题目。用边表示一个长方体可摆放在另一个长方体这种关系,给所有可能组合的两个长方体造边,则会得到DAG图,这题有个特别小心的地方是当 阅读全文
posted @ 2011-09-09 12:42 Kenfly 阅读(1368) 评论(0) 推荐(0)
摘要: 题目:Alice and Bob's Trip题意:给出一棵树型地图,Alice和Bob从0根结点开始走,轮流选择边,直到到达叶结点,这里的边是单向的。Alice总是选择会使当前达到最小距离的边,Bob相反,求最后的总距离解题思路:先求出每个子树的最小值或最大值,然后再更新当前根,如此递归。求最小值还是最大值要根据当前轮到Alice还是Bob选择路径决定。这题不难,是简单的树型DP,但是这里很可能会卡数据,用vector是过不了的,动态new和free的花销太大。看一下AC的,基本都是1800ms险过的。前面花了几百ms的可能用上了什么奇淫技巧,又或许还有其它更牛b的解法。下面的代码只 阅读全文
posted @ 2011-09-09 01:54 Kenfly 阅读(522) 评论(0) 推荐(0)