上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 17 下一页

2011年8月10日

ACM PKU 2385 Apple Catching http://poj.org/problem?id=2385

摘要: 这道题是典型的DP题,但是我的代码在poj上过了,在DUT的oj上却过不了,到现在也不知道错在哪儿了!思路很明确,状态转移方程为:如果苹果从1树上掉下来,有 dp[i][j][1]=max(dp[i-1][j][1],dp[i-1][j-1][2])+1; dp[i][j][2]=dp[i-1][j][2];如果苹果从2树上掉下来,有 dp[i][j][2]=max(dp[i-1][j-1][1],dp[i-1][j][2])+1; dp[i][j][1]=dp[i-1][j][1];意思是,当人在掉苹果的树下时可以直接拿到苹果,当人不在时,走一步可以拿到苹果,i标示的是时间,j标示的是走的次 阅读全文

posted @ 2011-08-10 17:22 _Clarence 阅读(165) 评论(0) 推荐(0) 编辑

2011年8月7日

ACM PKU 3342 Party at Hali-Bula http://poj.org/problem?id=3342

摘要: 好久没有认真写过解题报告了,今天白天做题做纠结了,晚上趁着这个纠结的时间好好写一个题的解题报告吧,希望我的报告后来者能看懂;ACM PKU 3342 Party at Hali-Bula http://poj.org/problem?id=3342这道题;题目大意是:一个聚会要邀请最多的人参加,但是又担心老板和员工在一起会玩得不高兴,所以老板去了那么他得直属员工就不能去,题目最终目的是找一个解决方案找到一个最优解(即最多人数)同时回答这个问题是不是唯一解。对于求解问题dp[i][2]=0标示当前节点不参加聚会,dp[i][2]=1表示当前节点参加聚会;有如下状态转移方程:dp[u][0]+=m 阅读全文

posted @ 2011-08-07 18:57 _Clarence 阅读(220) 评论(0) 推荐(0) 编辑

链式前向星

摘要: 1 struct node 2 { 3 int from,to, next; //next表示下一条边; 4 }; 5 node edge [maxm]; 6 int ecnt,box[maxn]; //box[]第一个节点; 7 void _make_map(int from,int to) 8 { 9 edge[ecnt].to=to;10 edge[ecnt].next=box[from];11 box[from]=ecnt++;12 }13 void make_map(int from,int to)14 {15 _make_map(fr... 阅读全文

posted @ 2011-08-07 10:54 _Clarence 阅读(145) 评论(0) 推荐(0) 编辑

已知数的前序和中序遍历,求后序遍历和层序遍历的序列

摘要: 树的存储结构定为链式存储结构,首先需要建树buildTree(),然后用递归遍历PostTraverse()产生后序遍历,借用队列实现层序遍历:实现代码:#include <iostream>#include <string>#include <queue>using namespace std;struct TreeNode{ char val; TreeNode *left,*right;};TreeNode * bulidTree(string pre,string in){ TreeNode * root =NULL; if (pre.length( 阅读全文

posted @ 2011-08-07 10:52 _Clarence 阅读(411) 评论(0) 推荐(0) 编辑

ACM PKU 1157 LITTLE SHOP OF FLOWERS http://poj.org/problem?id=1157

摘要: 明显的动态规划题,状态转移方程为:dp[i][j]=max{(dp[i-1][j-1]+A[i]),dp[i][j]};下面附上我的代码:#include <iostream>#include <string.h>#include <stdio.h>const int inf=0x3fffffff;const int maxn=101;using namespace std;int dp[maxn][maxn],num[maxn][maxn];void solve(int bunches,int vases){ for(int i=0;i<vases; 阅读全文

posted @ 2011-08-07 10:16 _Clarence 阅读(97) 评论(0) 推荐(0) 编辑

2011年8月5日

最长不降子序列

摘要: 这题目是经典的DP题目,也可叫作LIS(Longest Increasing Subsequence)最长上升子序列或者 最长不下降子序列。很基础的题目,有两种算法,复杂度分别为O(n*logn)和O(n^2) 。一.问题描述 设有由n个不相同的整数组成的数列,记为: a(1)、a(2)、……、a(n)且a(i)<>a(j) (i<>j) 例如3,18,7,14,10,12,23,41,16,24。 若存在i1<i2<i3< … < ie 且有a(i1)<a(i2)< … <a(ie)则称为长度为e的不下降序列。如上例中3,18 阅读全文

posted @ 2011-08-05 09:52 _Clarence 阅读(791) 评论(0) 推荐(0) 编辑

2011年8月4日

ACM PKU Fibonacci http://poj.org/problem?id=3070 矩阵加速

摘要: 这是一道矩阵加速的题,训练的时候有讲到这中省时的方法,所以拿这个题目来练手;原理采用的是二分加速和矩阵乘法;时间效率为logN,为计算斐波那契数列最快的方法,由于时间仓促,这里只做个简单的解题报告,有不懂的地方可以发表评论。#include <iostream>using namespace std;struct tra{ long long ans[2][2];}; void mul (tra & tempa, tra & tempb) { tra tmp; tmp.ans[0][0] = tempa.ans[0][0] * tempb.ans [0][0] + 阅读全文

posted @ 2011-08-04 09:57 _Clarence 阅读(138) 评论(0) 推荐(0) 编辑

2011年6月16日

约数个数定理

摘要: 约数个数定理:设n的标准分解式为(1),则它的正约数个数为: d(n)=(a1+1)(a2+1)…(ak+1);其中,an表示同一个约数的个数。举例证明:比如说求360的约数个数360=2^3*3^2*5那么2的个数有4种选择(选0个,选1个,选2个,选3个),3的个数有3种选择,5的个数有2种选择,因为是相互独立的,所以根据乘法原理,得到4*3*2=24 阅读全文

posted @ 2011-06-16 21:33 _Clarence 阅读(1529) 评论(0) 推荐(0) 编辑

2011年5月31日

ACM PKU 3984 http://poj.org/problem?id=3984 迷宫问题

摘要: 这是本人离开集训队两年后又回来做的第一道题,因为研究生阶段学的是计算机软件与理论,另外现在在学C++的精髓,想做点题来充实一下,检测自己学的怎么样。迷宫问题很简单,是我随意看到的一道题,看见有兴趣就写了一下,这样的题写了差不多一个小时,也是这段时间没有训练的原因吧。 这题我最初的思想是想用我师父的无敌递归写的,但是题目中有一个关于找最小,而且要打印路径的问题用简单递归很棘手,有很大可能是我的递归火候不足,没有师父那么炉火纯青。想了几分钟也没有想到更好的方法,上了个厕所回来还是走了我之前的专攻方法DP,用的是记忆搜索,写代码也就是几分钟的事了。 废话说的有点多,还是解析一下代码,写一下结题报告. 阅读全文

posted @ 2011-05-31 15:45 _Clarence 阅读(201) 评论(0) 推荐(0) 编辑

2011年5月6日

ACM PKU 1008 http://acm.pku.cn/JudgeOnline/problem?id=1008

摘要: 解法 一:#include <iostream>#include <stdio.h> #include <string.h> using namespace std;char hMonthName[19][8]={"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac& 阅读全文

posted @ 2011-05-06 19:57 _Clarence 阅读(136) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 17 下一页

导航