上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 39 下一页
  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) 编辑
  2013年8月21日
摘要: http://poj.org/problem?id=1840题意 : 有这样一个式子a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0,给你五个系数的值,让你找出x1,x2,x3,x4,x5的值满足这个式子,满足这个式子的方案有多少种输出思路 : 这个题的话我一开始想的就是暴搜,五个for循环,但肯定会超时啊,问了会神才知道,原来这个题变通一下就行了,既然五个for循环超时那就分开,两个和三个,a1x13+ a2x23+ a3x33= -(a4x43+ a5x53),这样去搜就可以了,哈希表存一下,还有,这个的话,若x4和x5系数和x都是50,那么50*50*50*50+5 阅读全文
posted @ 2013-08-21 18:29 枫、 阅读(291) 评论(0) 推荐(0) 编辑
摘要: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1574这个题,比较奇怪,是用递推去做的,我试了很多计算组合数的代码交到这个题上都是WA这个是AC代码#includelong long ch[141][141];int main(){ for(int i = 0; i < 141; i++) { ch[i][i] = ch[i][0] = 1; } for(int i = 1; i < 141; i++) { for(int j = 1; j ... 阅读全文
posted @ 2013-08-21 15:56 枫、 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 这个题数据量小,不容易超时。#includelong long fac(int n){ long long m = 1; for(int i = 1; i <= n ; i++) { m = i*m; } return m;}int main(){ int m,n,i; int a; scanf("%d",&a); for(i = 1; i <= a ; i++) { scanf("%d %d",&m,&n); long long u = fac(m)/(fac(n)*fac(m-n)); ... 阅读全文
posted @ 2013-08-21 15:54 枫、 阅读(304) 评论(0) 推荐(0) 编辑
摘要: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2241这个题的代码适应性也挺强,但这个题倒不适应太多代码,不知道为什么总会出现越界 1 #include 2 3 int main () 4 { 5 int a,m,n; 6 double sum; 7 scanf("%d",&a); 8 for(int i = 1 ; i0)13 {14 sum=sum*((m*1.0)/n);15 m--;16 ... 阅读全文
posted @ 2013-08-21 15:51 枫、 阅读(321) 评论(0) 推荐(0) 编辑
摘要: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1061题意 : 表示这个题的英文没看懂,就看懂了一个warning,看着样例像组合数就算了一下,结果真是。组合数这种题,一共有好多代码,但基本各种代码放在各种题上就会出现不同的问题,要么是超时问题,或者越界问题,还有的直接WA,超时我倒是好理解,但我不明白的是为什么都是算组合数的还会出现越界和WA这样的错误,难道是数组问题?一直不太肯定,毕竟只有一种方法用了数组,递推去做的,还希望了解的朋友们能为我指点迷津啊】#include#define L 阅读全文
posted @ 2013-08-21 15:47 枫、 阅读(195) 评论(0) 推荐(0) 编辑
  2013年8月20日
摘要: http://poj.org/problem?id=2442题意 :就是输入m个数集,每个含n个数,求从每个集合取一个数后,按非降序输出前n小的和。思路 : 本来打算是用几个for循环的,后来觉得要是真这么简单就不会在堆里分类了,所以,经过会神详细指导讲解,略懂略懂,弄俩优先队列,正好搞定 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std ; 7 const int maxn = 2005 ; 8 int main() 9 {10 int n ;11 scanf("%d" 阅读全文
posted @ 2013-08-20 21:09 枫、 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题意 : 举办一次比赛不容易,为了不让题目太难,举办方往往希望能够讲出的题目满足两点,1是所有的队伍都至少能够解出一个题目,2是冠军队至少能解出确定数量的题目,最后让你求的是每个队伍至少解出一道题并且冠军队伍解出N道题的概率.思路 : 我觉得吧,搞ACM不容易,唉,概率这玩意儿,一不小心漏掉一个就完啦。。。。首先呢,概率得好好求,其次呢DP得会一些。。。。这个题的思路我觉得小优姐的CSDN已经说得很详细了http://blog.csdn.net/lyy289065406/article/details/6648579样例解释 :2 2 20.9 0.91 0.9第一行M,T,N代表着M道题,T 阅读全文
posted @ 2013-08-20 14:27 枫、 阅读(336) 评论(0) 推荐(0) 编辑
上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 39 下一页