上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 34 下一页
摘要: hdu 4041 Eliminate Witches!题意:去掉题目背景,给你一个串,转化为一棵树,输出先序遍历节点的顺序;分析:整个串由节点名字,'('、')'、',' 组成,遇到一个括号时,当前左括号是当前括号内节点的父节点,括号内用','隔开的是兄弟节点,整体就是一颗树;若要将该串转化为树,再进行一次DFS的话,我想应该会超时吧。所以第一感觉就是用栈模拟整个串来遍历该树,用队列来保存遍历节点的顺序,用数组应该会更快吧,不过不知道大概会有多大,所以就偷一下懒,直接用队列了。队列是用来保存遍历节点的顺序的,而栈保存的是当前遍历到 阅读全文
posted @ 2011-09-19 14:33 枕边梦 阅读(441) 评论(0) 推荐(0) 编辑
摘要: Problem Description反素数就是满足对于任意i(0<i<x),都有g(i)<g(x),(g(x)是x的因子个数),则x为一个反素数。现在给你一个整数区间[a,b],请你求出该区间的x使g(x)最大。Input第一行输入n,接下来n行测试数据输入包括a,b, 1<=a<=b<=5000,表示闭区间[a,b].Output输出为一个整数,为该区间因子最多的数.如果满足条件有多个,则输出其中最小的数.Sample Input32 31 1047 359Sample Output26240Hint2的因子为:1 210的因子为:1 2 5 10N只有 阅读全文
posted @ 2011-09-17 14:29 枕边梦 阅读(263) 评论(0) 推荐(0) 编辑
摘要: pku2886 Who Gets the Most Candies?题意: 有一排编号为1~N的小孩顺时针围成圈,每人手上有一张编号为a[i]的卡片,游戏从第K个小孩开始,他亮出自己的卡片数字,若a[i]大于0,那么左数第a[i]个小孩出圈,否则右数第a[i]个小孩出圈,游戏一直进行,知道所有孩子都出圈,第p个出圈的将会得到f(p)个糖果,f(p)表示p的因子数,问谁拿到的最多的糖果。分析:其实我是先知道 了用线段树做,才拼命想该用线段树怎么做的。思路大致是这样的:每次都默认是从剩下的第一个开始数,顺时针让第count个人出圈。所以必须在每一个人出圈时,算出他左边有多少,再通过他手上的卡片值a 阅读全文
posted @ 2011-09-17 13:55 枕边梦 阅读(239) 评论(0) 推荐(0) 编辑
摘要: pku 2828 Buy Tickets题意:给定N(1<=N<=200000)个整数对(pos,val),表示在pos右边 的位置插入一个值val,求经过N次操作之后的val序列的排序情况分析:经典的逆推问题,倘若按照题目给你的顺序进行序列的维护操作,TLE是肯定的。这时,需要注意到,最后一个插入的值位置的固定的,也就是最后一个插入的值可以在它想要插入的位置,所以,先保存所以整数对,之后在倒序插入序列中。那到底应该用什么数据结构实现呢?这里我们发现,可以用线段树来解决这一问题,每一个区间添加一个域 num,表示该区间还能放置的位置数,或者说,表示该区间还能放置的最大的序号值(当然 阅读全文
posted @ 2011-09-16 09:54 枕边梦 阅读(263) 评论(0) 推荐(0) 编辑
摘要: hdu 4023 Game题意:Alice还有Bob 轮流在已知的15中俄罗斯方块上放置瓷砖,Alice放置的是垂直的2*1的矩形,Bob放置的是水平的1*2的矩形,Alice 先开始放,最后没位置可以放者输,输出最后的胜者;分析:题目看似博弈,却是一道贪心+模拟(其实我一开始也死命的认为是博弈,而且,因为博弈还没怎么搞过,就直接跳过了,是看了大牛的提示才知道的);有这样十五种俄罗斯方块:很明显,各种方块对俩人而已是有利也有弊的,俩个人都有自己想优先选择放置的方块。(1,2),都是对于自己稳定的(3,4) (5,6) 前者对B最有利,后者对A最有利(7,8),(9,10),前者对B最不利,后者 阅读全文
posted @ 2011-09-15 20:49 枕边梦 阅读(468) 评论(4) 推荐(1) 编辑
摘要: 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4016题意:从给出的N个数中,选出K个数进行与运算,求出最小值一看到这题目,哎,就知道暴力是绝对超时的,可是之后,就没之后……………………看了网上的思路,这剪枝太有技巧了,orz思路如下:1.从当前值开始,如果选上剩下的所有,也不能小于已得最优值的话,返回。2.最优值不用等到累积选到k数才更新,而是不断更新,因为与运算结果比原来两个都小,所以这也是一个剪枝。3.预处理,从小到大排序,可想而知,先选小的,得到的最优值更接近于结果,是个强剪枝,没有这个2900ms+,加上600ms+。太强大了原文的链接 阅读全文
posted @ 2011-09-14 22:59 枕边梦 阅读(497) 评论(0) 推荐(0) 编辑
摘要: 题意:将题目的背景去掉,简单的说,就是每一次对一个区间的所有值都分别做一次求平方根的运算,就是将那个值改为它的平方根的值,每次再询问一段区间内的总和分析:很明显的用线段树来做,不过明显的对线段树还是不熟悉,一开始将每一步update操作都更新到具体的每一个点了,没有任何技巧,直接TLE;很明显,如果每一步都必须更新的具体每一个点的话,就是一个O(n)复杂度的操作了,这个对使用线段树来说,没太大意义了。这题目而言,我们发现,任何一个2^63次方以内的数,开根号都至多开八次,也就是,多次询问操作之后,很多都已经不需要update了,所以,只需要在每一个节点中增加一个域,用来标记该区间是否已经全部更 阅读全文
posted @ 2011-09-14 20:49 枕边梦 阅读(275) 评论(0) 推荐(0) 编辑
摘要: hdu 4036 Rolling Hongshu题意:一个sweet potato想要去约会,从起点滚到终点,途经一个mountain,有m个峰顶,第一个峰顶,第m个峰顶分别为起点和终点,忽略摩擦力,在每一个斜坡上分布着bitter potatoes,每经过一个bitter potato,bitter potato就会以一定的初速度追赶sweet potato,问,sweet potato应该以最小多大的初速度滚动,保证不被bitter potato追到,完成约会;分析:根据能量守恒定律,首先,求出sweet potato到达每一个峰顶需要的最小速度,其次,求出sweet potato到达每一 阅读全文
posted @ 2011-09-12 14:50 枕边梦 阅读(366) 评论(0) 推荐(0) 编辑
摘要: hdu 4039 The Social Network题意:给出N对好友关系,之后Q次提问,问可以对该用户推荐的相识度最高的好友;推荐好友满足的条件:该用户的所有好友的好友中,出现次数最多的,而且推荐好友本身不是该用户的好友;若有多个推荐好友时,按字典序输出;分析:嘿嘿,我的做法有点暴力,600+ms;首先对所有用户的名字(字符串)标号,好处理一些,这里用了字典树实现了;接下来,用邻接矩阵表示任意俩个用户直接的关系,再者,对与每一次询问,遍历该用户所有好友的好友,找出出现次数最多的;最后,若有多个推荐好友时,要字典树输出,额,我用优先队列做了,重载操作符,之后直接丢进去,再输出就可以了View 阅读全文
posted @ 2011-09-12 12:04 枕边梦 阅读(558) 评论(0) 推荐(0) 编辑
摘要: 题目大概意思:给定一个图,任意俩点间的最短路已知,判断该图是否存在,若不存在,则输出impossible,存在,输出可能的最少边数分析:首先,判断该图是否存在,这个很容易,对已给的图求出任意点的最短路,若存在俩点最短路与原图不同(即所给图存在更短路),则不存在;若该图存在,求出最少的边数,其实就是一个删边的过程,起始的边数是n*(n-1),若俩点之间存在其他路径长等于直接相连时的路径长,则删去,注意,要判断是否重复删边(orz,这里WA了几次);求任意俩点之间的最短路,用floyd算法,复杂度O(n^3),因为n最大为100,无压力~~View Code #include<iostrea 阅读全文
posted @ 2011-09-12 11:46 枕边梦 阅读(222) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 34 下一页