摘要: 题目大意:FJ 和Best 用 N (1 <= N <= 30,000)块相同的小立方块玩游戏,小方块编号为 1..N。开始时,小方块都单独分开的, 每个看成一个柱子, 即有 N 柱子。 FJ 要 Best做 P(1 <= P <= 100,000) 个操作,操作有两种类型: (1) FJ 要求Best 把X 号方块所在的柱子放到 Y号所在的柱子上面,成一个新柱子。 (2)FJ 要求Best 计算 X 号方块所在柱子,它下面有多少个小方块。 请编个程序,帮助 Bet 计算。 输入格式: *第一行:一个整数 P *第 2..P+1行:第 i+1行表示第 i个FJ要求的合法 阅读全文
posted @ 2013-01-26 09:36 改名字干什么 阅读(754) 评论(0) 推荐(0) 编辑
摘要: 鉴于自己虽然在向总的带领下学了树但是从来都没有用过。在数据结构的书上,关于二叉树有这样的一段内容:当我们把表达式依照一定的规则,构成一棵树的时候,中序遍历再加一些括号是正常的表达式,后序遍历是逆波兰式。所以,用逆波兰式构成一棵树,再依照中序遍历的法则,将后缀表达式转为中缀表达式。构造一棵树不难,主要是添括号的问题。所以 测了多次,问题总是出现在 compare函数上(程序里成comepare了),不过感觉这个comepar函数还是比较好写的,相比起 用栈来做。。。。。主要是减号和除号的问题。。。 1 program expression; 2 type 3 point=^... 阅读全文
posted @ 2013-01-25 21:45 改名字干什么 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 今天学长们都来了,OI的大牛们都来了,和他们聊了很久的天,受益颇多。首先,我觉得,我是真正喜欢OI这一门竞赛的!!!我觉得我有能力在这一领域搏出属于自己的天空。所以,我要加油啊!我觉得我对未来已经有一个大概的目标了,就是,学计算机系的图形图像专业。这样,就能把我的两个爱好完美地结合在一起。当然我还是从学长的身上学到了一些东西。1.高一高二不能搞堕落,高三可以随便搞。。。。。2.高一高二搞堕落,到高三就要非常惨了。3.这个寒假我们应该把一些基本的数据结构给弄熟,并涉及一些算法。4.盾盾哥的博客可以给我们经验。。。。。 http://blog.csdn.net/jasonzhu85.别人如何做可能 阅读全文
posted @ 2013-01-25 21:35 改名字干什么 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题目大意:农民约翰打算建一个新的矩形谷仓。但是,矩形谷仓的 4 个角落不能在落在软土路基上,只能落在一些固定点上。现在,他已经找到地面上有 N(4 <= N <= 1,000)个点,角落只可以落在这些点上。他想知道依次每加多一个点,可以建立新谷仓的方法数量,请你帮助他找到答案。输入格式:第 1行:一个整数,N第 2行至N +1行:每行有两个被空格分隔的整数的 x,y,作为一个点的坐标。 所有的 x,y都不会超过 16,000。所有点都是不同的。输出格式:共 N 行:每行表示当前可以建立的新的谷仓的数目。样例输入(allbarns.in):81 21 -22 12 -1-1 2-1 阅读全文
posted @ 2013-01-24 19:51 改名字干什么 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 从5机房搬到4机房,唉,果然是被抛弃了,这里的气氛还不错。我相信我还能回去的。。。。。 阅读全文
posted @ 2012-12-25 21:33 改名字干什么 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 今天中午从黑书上看到了的一道例题,动态规划——>线性模型的例1题。看书都看不懂!后面还是看了网上的题解,才渐渐明白......估计我也说不清楚,所以尽力好了。样例:1 2 2 2 2 3 3 3 1我们建立两个数组 :color, num.其中,color储存的是颜色值,Num是相同颜色的个数。例如,对上面的样例来说,我们就有:color[1..4]:=(1,2,3,1). num[1..4]:=(1,4,3,1).我是看结题报告才懂的。所以觉得如果我没看题解,我实在是想不出这种状态来。f[i,j,k]表示合并第i到第j组色块所得到的最大分,至于这个k,他其实是第j组之后的某一个和j组的 阅读全文
posted @ 2012-12-11 21:56 改名字干什么 阅读(372) 评论(0) 推荐(1) 编辑
摘要: 跟数的划分有些类似,递归+记忆化搜索,做过数的划分的人做这道题目应该不是很难。http://www.cnblogs.com/zyxx233/archive/2012/12/08/2809187.html这是数的划分题解同样的,我还是以haha来作为函数.....(个人癖好)状态:haha(s,t,k).意思是从s到t的数段中加入k 个乘号所能得到的最大值。所以 ans:=haha(1,n,k).状态的转移:for i:=1 to t-k-s+1 do begin val(copy(st,s,i),m); if ha[s+i,t,k... 阅读全文
posted @ 2012-12-08 21:22 改名字干什么 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 算法:DP。如果数据不是很大的话我们就可以直接DP了...但是数据有 10^9,所以普通的DP根本不能AC.我记得一个月以前我做了这道题目,普通地DP,然后只能过三个点。数组不能开这么大,就算能开这么大也会超时。这里有个路径压缩的优化方法。。。。(纯属装B....)首先我们先分析一下数据规模,我们发现呢,L<=10^9. 而石子的个数m<=100.这就意味着平均两个石子中间有10^7 的路是没有石子的。也就是说,两个石子中间我们进行了很多没有必要的DP。我们可以稍微把中间给缩减一下。我们通过一个运算求得一次最短可跳长度(S)到一次最长可跳长度(T)中的每一个数的最小公倍数的值为k。 阅读全文
posted @ 2012-12-08 21:05 改名字干什么 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 多线程 DP。真心觉得这个方程不好想!设f[k,i,j,l], 表示走第k步,第一个人,第二个人和第二个人各走到第I行,第j行和第L行所能得到的最优解(我们规定前一个人比后一个人先走!)。状态转移:规定 t[1]:=0; t[2]:=-1;for w:=1 to 2 do for q:=1 to 2 do for p:=1 to 2 do f[k,i,j,l]:=max(f[k,i,j,l],f[k-1,i+t[w],i+t[q],l+t[p]])共有八种状态转移的方式!接下来:由于更新了 i,j,l 并规定了前一个人比后一个人先走所以:有 f[k,i,j,l]:=f[k,i,j,l... 阅读全文
posted @ 2012-12-08 20:45 改名字干什么 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 我想说,题目的意思有误啊!!!!他说任意两份不能相同,我就以为分成的每个部分都不能相同...但他的意思是这是个组合,不是排列(即不考虑顺序问题....)被坑了.....算法: 递归+记忆化搜索顺便说一下 个人比较喜欢用 haha来作为函数的名称.....ans:=haha(n,k,min). 意思是从 把n 分成 k份的方案数,至于后面的1。意思是分出来的每份的值小于min(初始值为1),这个东西在后面有用。因为我们要得出的是一个组合,不是排列,所以我们可以设每次的方案分出的数的序列都是一个不降的序列,如此就有:当k>=2 时,我们有haha(n,k,min):=haha(n,k,min 阅读全文
posted @ 2012-12-08 20:07 改名字干什么 阅读(324) 评论(0) 推荐(0) 编辑