编程心得
qiueji
秋之雨
展开
-
zjut 1740 Find x 从此题推广到求一个数的N次方的小数精度问题
这题题意就是给定一个1~21的整数,求出其开三次方的值,保留小数点100位。这题大概的做法就是先由普通开三次方确认一个头,然后通过大数乘逐位逼近结果,因为小数比较麻烦,所以只能每次逼近一位,在逼近的字符串s1上+‘0’,给定的整数+“000”即可。因为要四舍五入,先逼近到101位,然后对最后一位进行判断修改即可。但是我逼近的方法是暴力顺序法,每个数字的复杂度大约是100位×10个数字×大数乘中10原创 2012-02-28 23:09:29 · 1182 阅读 · 0 评论 -
关于LCS的构造
LCS问题一直都知道如何去求长度,但是还真是没真正研究过如何去构造。今天算法课老师一直在讲一些我们不可能现在去研究的东西,我就看了看。大致算法为这样: void LCSLength(int m,int n,char * x, char * y,int * * c,int * * b) { int i,j; for(i=1;i<=m;i++) c[i][0]=0; for(i=1;i<=n;原创 2012-02-28 23:30:55 · 608 阅读 · 0 评论 -
hdu 4171 Paper Route bfs
题目意思是给N个点,然后还有一个办公室。下面N+1行输入从办公室(即0号)开始每个到学校的距离,然后N行,正好是棵树,输入这棵树以及权值。要求遍历树上每一点然后到学校的最短的那个距离。算法是首先存下每个点到办公室的点,即把办公室的点看为根,然后通过bfs求得每个点到根的距离,然后把树的总距离求出,因为只要不是终点到根的路径,都是需要走两次的,所以取个min(total*2 - i->0 + i->原创 2012-03-29 23:15:02 · 644 阅读 · 0 评论 -
两道字符串水题 记录一下 zjut 1605 和 zjut 1703
Regular BracketsZJUT1605 题意是给一系列括号,只有[]和()是匹配的,还有[R],(R),[]R,()R,R[],R()这几种是匹配的。问最长的匹配的字串是什么。原题的数据量只有100,实际可以提高到100000,因为是O(N)的算法。大概是用栈保存那些未被匹配的字符和其位置,然后从栈顶到尾找到那些每两个相邻栈元素之间的距离最长的即可。注意的是要把首尾考虑进去。 #i原创 2012-03-30 20:29:41 · 356 阅读 · 0 评论 -
初步线段树 hdu1166
#include #include #include using namespace std; #define MAX 50000 struct node { int l,r,num; }; node maintree[4*MAX]; void settree(int n,int l,int r) { maintree[n].l=l; maintree[n].r=r; maintre原创 2012-03-17 16:38:06 · 336 阅读 · 0 评论 -
hdu 1003 最大子序列和 简单题
前面有提到过最大子序列和,这道题多了一个要指出最大子序列和的头尾,随便加了两个指针,WA了一次,因为没有考虑指针重合的特殊性,即最大子序列和其实就是一个数。改完就A了。作为前面最大子序列的范例吧。#include #include #include #include using namespace std; int main() { int t,m=0; scanf("%d",&t); wh原创 2012-03-17 19:42:28 · 329 阅读 · 0 评论 -
uvaLive 5139 (world final 1990 - Washington) Rare Order
题意是给定一个字符串的排列规则,即这个排序是按照特定的字符排序排下来的,要求输出已经给出来的全部字符的排列顺序。这个题是用拓扑排序做的,首先将每两个字符串能得到的规则进行比较,然后得到一张有向图。然后寻找出度为0的,则为最小,然后删掉所有以此的出度。以此类推。这里因为只有字母,所以主要复杂度就在于全部字符的排列规则的判定。我用向量处理这里未知的字符串数量,用时惊人啊,不过还是1Y了。下面是代码。原创 2012-04-05 21:35:01 · 367 阅读 · 0 评论