Looks quite intuitive at the very first sight... I thought:rect[x, y, w+1, h+1] = rect[x, y, w, h] + num[x + w + 1, y..y+h+1] + num[x..x+w+1, y+h+1] -...
分类:
其他好文 时间:
2014-06-26 21:20:32
阅读次数:
232
题目#include//最长上升子序列 nlogn//入口参数:数组名+数组长度,类型不限,结构体类型可以通过重载运算符实现//数组下标从1号开始。int bsearch(int a[],int len,int num){ int left=1,right=len; while(left...
分类:
其他好文 时间:
2014-06-26 16:20:12
阅读次数:
236
题目//做哈夫曼树时,可以用优先队列(误?)//这道题教我们优先队列的一个用法:取前n个数(最大的或者最小的)//哈夫曼树//64位//超时->优先队列,,,,//这道题的优先队列用于取前2个小的元素#include #include#include#include#includeusing nam...
分类:
其他好文 时间:
2014-06-26 16:01:24
阅读次数:
215
题目POJ 3617 和 这道题题目一样,只是范围稍稍再小一点。//模拟试试#include#include#includeusing namespace std;char s[30010][2];bool bijiao(int st,int ed){ if(st==ed) re...
分类:
其他好文 时间:
2014-06-26 16:00:00
阅读次数:
201
就是欧拉判定,判定之后就可以使用DFS求欧拉回路了。图论内容。
这里使用邻接矩阵会快很多速度。
这类题目都是十分困难的,光是定义的记录的数组变量就会是一大堆。
#include
#include
#include
#include
using namespace std;
struct Edge
{
int ed, des;
Edge(int e = 0, int d ...
分类:
其他好文 时间:
2014-06-26 13:16:05
阅读次数:
250
POJ 2151 Check the difficulty of problems (动态规划-概率DP)
题目大意:
有 M 道题目 T 支队伍,N表示 最好 的队 至少要做出N题 ,紧接下来T行M列,表示某队做出某题 的概率为p ,问你每支队至少做出1题,最好的队至少做出N题的概率是多少?
解题思路:
一题动态规划的题, 既然最好的队至少做出N题,那么用二维记录,DP [t][f] 记录还剩 t 支队及是否出现超过N题的事件的概率。如果当前这支队伍做出超过N题,那么f置为1,否则还是f。弹了两遍,...
分类:
其他好文 时间:
2014-06-26 07:11:03
阅读次数:
190
题解
题目要求是,有两种操作,从头取出一个字符,或者从尾取出一个字符,加到一个新的字符串末端,然后保证这个字符串是所有可能生成的字符串中,字典序排列最小的那个。依旧是贪心的想法,谁小我取谁即可。特殊判断两者相同的。一旦两者相同,那么就接着判断下一种,直到找到更小的为止。
另外需要注意两点,题目的输入很变态,要一个字母一行的输入,所以用cin或者用scanf(" %c", &ch)。cin不多说了,除了慢点其他没啥缺点。scanf中为何要加上一个空格呢?因为在格式串中,空格的意思是匹配输入中的所有换行、TAB...
分类:
其他好文 时间:
2014-06-25 08:46:12
阅读次数:
243
题解
用类似哈夫曼树的思想去考虑,每次选取两个较小的点合并,然后把合并后的放回原集合。用一个小根堆去维护即可。
注意首先,C++的优先队列默认是大顶堆,所以需要改写;其次,改写之后的堆是没有clear()方法的,所以务必记住队列的清空!...
分类:
其他好文 时间:
2014-06-25 07:34:58
阅读次数:
274
题解
题目抽象出来就是用一个半径为R的圆去覆盖一条直线上的点。每个园内必须有至少一个被标记的点。问最少需要标记多少个点。
贪心去处理就行了,给从左边开始,在园内的最右边的点加上标记即可。...
分类:
其他好文 时间:
2014-06-25 07:15:39
阅读次数:
243