06 2012 档案
摘要:题意:给你一个字符串,通过翻转能得到多少种不同的字符串。思路:其实这题刚一读完题感觉很繁琐,但是仔细研究一下题目中给出的例子会发现也不是那么复杂,或许是看了ZJH的博客后,突然想通了,感觉复杂例子,也可以将它分类简单化。例如给你字符串:abcdef,第一种情况是串本身,第二种情况是bacdef,第三种情况是:bafedc,第四种情况是:abfedc,然后分别对这四种情况进行翻转,用hash函数标记。代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream&
阅读全文
摘要:其实真的没读懂这题是什么意思,读了好几遍题怎么都弄不懂它到底想让求什么的,最后还是查了解题报告,但是他们讲的题意仍是不明白,直到看了代码才似乎明白点他的意思,唉,这个英语啊!我理解的题意:将每一个Pie都要平均分成x份,所有的x加起来要大于等于朋友数f。思路:二分,将最大的一份pie平均分f份,这当然包括他自己,作为二分查找的下限,将所有pie平均分成f份,作为二分查找的上限。代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include
阅读全文
摘要:这些天忙着期末考试,很久没做题了,昨天刷了刷一些水题,练练有点生疏的手,呵呵~,今天重新开始训练计划。题意:在长度为len的线段上有N个点,各处每个点到起点的距离,让及衣橱M个点,使所有点中,两点之间最小的距离尽量大。思路:读完题后,我也以为实用贪心做的,但是后来看了discuss里讨论的都是用二分,然后就改用二分做了。先找出两点之间最小的距离作为二分查找的下限,线段长为上限,然后二分查找最适合的长度。代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostrea
阅读全文
摘要:呃,一看到关于字符串的题就有点发怵,也不是完全因为字符串,而是对于处理字符串部署很擅长,偶尔错个小地方就要检查上半天,又是还不知道怎么错的,影响心情啊!!这题题意是:给出一个字符串,要你求出至少添加多少个字符可以是这个串成为回文穿串。大体思路:还是简单dp, dp[i][j] 表示从i到j至少要添加字符个数。转移方程有两种情况,一是如果str[i]== str[j] 的话,则dp[i][j]= dp[i+1][j-1] ;否则不想等的话,dp[i][j] = min ( dp[i+1][j] , dp[i][j-1] ) + 1 ;代码:#include <stdio.h>#inc
阅读全文
摘要:一道简单dp题,自己感觉这类dp题都很简单,只要找到一种状态,从小往大了推就行了,可关键是木读懂题啊。。。。。。开始读的时候,没认真理解where each soldier can see by looking lengthwise the line at least one of the line's extremity (left or right)这句话,结果理解成从一个用n个元素的数组中抽出几个数,使数组非递减或非递增排列,呃~自然WA的很惨,然后,看了题解,发现我错了,它是让找一个先上升在下降的最长序列,于是开始做,呃~有WA,因为漏掉了一种情况,1 , 2 , 3 , 4
阅读全文
摘要:最近在学习背包九讲,呃,现在刚看到多重背包问题,还是有点慢啊。这题是典型的多重背包问题,题意是,给你n中面值不同的纸币,每种面值为c,每种有n[i]张,给你一定的数额,问有这些纸币能组合出小于等于所给面值的最大钱数。但是题目中给的数据范围有点大,如果按基本的多重背包来做会TLE,看了《背包九讲》中利用二进制思想的优化,没看懂伪代码,搜了个代码慢慢研究,终于有点明白了,不过还是不明白为什么要按1 , 2, 4, ……2^(k-1) , n - 2^k 这样确定系数,呃,还是慢慢想吧~~代码:#include <stdio.h>#include <stdlib.h>#inc
阅读全文
摘要:题意:给你一架天平,C个挂钩位置和G个砝码,让你将这G个砝码全部用上,求有多少种方法使得天平平衡。思路:读完题后根本没有思路,如果让我自己想,我绝不会想到用dp做,但是这题是在背包问题的练习题里的,并且刚刚看完0-1背包,对dp有了一点理解,所以不难想到用dp做。可是,最后却在数组范围上卡了一下,想不明白为什么要开到15000,想了两天后,终于明白,力矩等于力臂*重量,而砝码的个数最多为20个,力臂最长为15,要使天平平衡的左右两边的重量为15*20*20 =7500,所以要开15000;代码:#include <stdio.h>#include <string.h>#
阅读全文
摘要:最近在研究dp类的问题,正好前几天刷北航的时候看到了这题,当时觉得没什么,最长公共子序列在大一讲dp的时候就当做经典例题讲过,但是题目中要求用尽量小的空间,后来看0-1背包的时候看到讲0-1背包的空间优化,突然就想到这题了,于是拿来练练。。。。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>#include <queue>#define maxx 1002using namespac
阅读全文

浙公网安备 33010602011771号