2013年8月22日
摘要: http://poj.org/problem?id=1159题意 : 给定一个字符串,问最少插入多少字符,使该字符串变成回文串思路 : 设原字符串序为X,逆序列为Y,则最少需要补充的字母数 = X的len减去X和Y的最长公共子序列的长度,又是一个动态规划问题,这个题的数据范围到5000,倒不是说会超时,但是会超内存,在书上看了一个很好的方法就是滚动数组,感觉挺新鲜的,也挺厉害的,但是滚动数组只节省空间,不省时间#include#include#include#include#include#includeusing namespace std ;int dp[3][5200];int main 阅读全文
posted @ 2013-08-22 21:25 枫、 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 题意 : 输入若干个树木品种,里边有的是重复的,让你统计每个品种占输入的总数量的百分比,最后按字典序输出思路 : 本题数量很大,所以采用直接统计的方式会超时,而采用的方法可以用二叉搜索树,或者用map函数或者是字典树都可以实现,呃,我想说,为什么用G++交WA了,得用C++交才对啊#include#include#includeusing namespace std ;struct node{ char name[31] ; struct node *lchild,*rchild ; int count ;//记录该结点品种出现次数}tree ;struct node *ro... 阅读全文
posted @ 2013-08-22 17:04 枫、 阅读(212) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1442题意 : 题目中对给出的数字有两种操作ADD(I)操作,将ADD括号里的数字 I 加到数列里边去,然后是自动排好序的,每一个数列前边都会有一个数字ss,代表着前边GET的数量有ss个,GET就是将现有数列显现出来,然后给你N个依次要添加的数字,下边一行是M个数字,代表着每个get前边有的add的数量,然后输出这个序列中第ss个数。思路 : 因为要排序,所以就直接用优先队列就好,但是用一个不行,会超时,至于为什么,其实我也不知道,就用了两个,大小根堆一起用,把小根堆里要输出的那个数前边的数字放到大根堆里,循环操作,如果小根堆首元素小于大 阅读全文
posted @ 2013-08-22 11:11 枫、 阅读(580) 评论(0) 推荐(0) 编辑