上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 32 下一页
摘要: 概率题题意:输入case数,每组case两个数字,表示A的点数和B的点数,他们玩游戏,每个人赢的概率都是0.5。输的人要将自己的一部分点数给对方,给的点数是min(na,nb)。例如na=3,nb=2如果A赢了,B要给2点给A,即全部给完。如果B赢了,A要给2点给B,A变为1,B变为4。一个人的点数为0,那么游戏结束了。题目要你输出两个数学期望,第一个是,这个游戏要结束,要玩多少局的数学期望,另一个是A赢的概率这题一开始看觉得是期望DP,后来想想也可以不写DP,能把状态表达出来即可。设一个状态(n,m,c)表示A现在的点数是n,B的点数是m,已经玩了c局。那么游戏结束的状态就是(n,0,c)或 阅读全文
posted @ 2013-04-25 22:59 Titanium 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 继续复习暴力给出n个点的坐标,选出最多的点,在一条直线上直接暴力,不过时间比较糟糕。一个二重循环,枚举i,j两个点,这两点确定一条直线,然后枚举剩下的点看是否在这条直线上,所以一个三重循环,时间复杂度O(n^3)注意枚举不要做重复的工作,否则会超时另外这题是有O(n^2logn)的算法的#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define N 710#define LEN 110int n;struct 阅读全文
posted @ 2013-04-25 19:40 Titanium 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 继续复习暴力题意:输入有点恶心,首先是case数,然后一个空行,然后再输入信息,然后又以一个空行结束该组数据,如果是最后一组数据了,不以空行结束,而是直接以EOF结束。输出,case之间有一个空行,最后一个case后面不要加空行每组case的信息,就是N行的串,串中只有01,串的个数一定是偶数。原本有很多个一样的长串,每个长串都分成了两个短串但是分割的位置不一定相同即两个短串不一定是平分的(就是输入中的那些串)。你要把这偶数个短串拼回那个长串(即2N个短串拼回N个相同的长串),如果有多种可能,任意一种即可,然后输出这个长串题目保证一定有有解的数据不大,144,直接暴力。首先按短串的长度升序排序 阅读全文
posted @ 2013-04-25 15:21 Titanium 阅读(966) 评论(0) 推荐(0) 编辑
摘要: 继续复习基础算法题意,给n个数字,将它们重新排序得到一个最大的数字,好像给出123 456 789 拼为 789456123 最大这题可以算是一个排序题,不过排序的规则有讲究如果想用字典序排序,显然错了,好像999123 999 , 按字典序排序999123在前面,得到的数字为999123999 , 显然没有不够999999123 大有两种不同的思想解这题1.处理前缀的问题,上面那个例子,999是999123的前缀,这种比较不能简单以字典序比较,而是应该用一种“环”的思想去比较,即999比完了,A串到了1,B串应该轮回来变为9,。也就是A串和B串都已这种环的方式去计较,知道第一个不相同的字符出 阅读全文
posted @ 2013-04-23 23:17 Titanium 阅读(1481) 评论(0) 推荐(0) 编辑
摘要: 哈希题意简短:单case,输入一列单词即一个字典,已经按字典序排好输入,上限为120000,然后要你找一些单词,这种单词可以分为两部分,两部分都是字典里面的单词,按字典序输出这种单词很裸的哈希,对于每个单词,将其分成两部分,一共有len中分法,然后去查找是否都在字典中,如果都在字典中就输出(因为输入已经按字典序排好,扫描时直接扫下来就可以了,找到合适的就输出)问题的关键就转变为,给你一个单词,怎么判断这个单词是不是在字典中,用哈希就可以快速判断到。输入时随便将每个单词都用哈希函数映射掉,每得到要查询的单词也直接映射过去查找处理冲突的方法是链表(静态链表数组模拟)用了BKDHash函数在处理字符 阅读全文
posted @ 2013-04-23 20:31 Titanium 阅读(872) 评论(0) 推荐(0) 编辑
摘要: 原文地址 :http://www.byvoid.com/blog/string-hash-compare常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。对于以上几种哈希函数,我对其进行了一个小小的评测。Hash函数数据1数据2数据3数据4数据1得分数据2得分数据3得分数据4得分平均 阅读全文
posted @ 2013-04-23 19:49 Titanium 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 复习一下基础DP,记忆化搜索题意:给一个名字,和n*m矩阵,下面是矩阵信息,每次在一个格子,可以向上下左右移动,但是要求那个数字比当前所在格子数字小。可以从任意点出发,问最长的距离是多少dp[i][j]表示从(i,j)出发能走的最长路dp[i][j] = max{ dp[x][y] } + 1 , 其中(x,y)是(i,j)附近的四个格子之一并且a[x][y] < a[i][j]#include <cstdio>#include <cstring>#define N 110#define MAX 110#define max(a,b) ((a)>(b)?(a 阅读全文
posted @ 2013-04-22 19:40 Titanium 阅读(566) 评论(0) 推荐(0) 编辑
摘要: poj 2168 相同的题目区间DP题意:输入n,表示有n个海龟在一条直线上,乌龟可以站在相同的位置(即坐标可以相同),下面n行,每行两个数字,表示第i个乌龟给出的信息,第一个数字表示它前面有多少只乌龟,第二个数字表示它后面有多少个乌龟。并不是每个乌龟的信息都是正确,有些乌龟的信息是假的,或者和别的乌龟信息冲突,你的任务是选出尽量多的乌龟,使他们的信息不冲突,然后输出有多少个乌龟说谎,和那些乌龟的编号,可能有多种情况,只要保证说谎的乌龟数最少,输出哪种情况都可以分析:乌龟可以站在一样的位置,我们给乌龟排名,可以把它们放在不同的位置 例如 1 2 3 3 3 4 4 5 , 虽然有些排名相同,但 阅读全文
posted @ 2013-04-22 19:20 Titanium 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 数据结构--二叉查找树遍历题意:n,表示二叉查找树的节点个数,每个节点有个数值,并且数值各异不会出现重复的,查找树左子树的节点数值小于根,右子树的节点数值大于根。 一般的后序遍历二叉树时 左孩子,右孩子,根 ; 现在定义一种新的后序遍历 右孩子,左孩子,根 输入n,下面一个序列,是普通后序遍历二叉树的序列 , 要你根据这个序列,输出新定义的那种后序遍历序列 讲到这里,看图,看sample可以理解题意了要是一般的二叉树只知道后序遍历序列是不能建树的,但是这里是二叉查找树却可以对于一个后序遍历序列,它可以分解为 (左子树部分)(右子树部分)(根),由于是查找树,可知(左子树)<(... 阅读全文
posted @ 2013-04-22 15:58 Titanium 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 找规律约瑟夫环问题变形。在这个约瑟夫环问题中,固定每次间隔两人,10个人,杀人顺序为2,4,6,8,10,3,7,1,9,最后剩下5定义一种运算J^m(n) 表示 m次嵌套 J( J( J(n) )好像J^2(10) = J(J(10)) = J(5) = 3而m和n的最大值是 10^9这个问题 主要是能快速算出 J(n),不难想到如果能算出J(n),可以暴力地一步一步迭代下去做m次,容容易发现不用做m次,因为J(1) = 1,当n降到1的时候,m再大都没意义了可以发现这个问题是指数递减的,m<=10^9 是个纸老虎同样地可以打表看看J(n)的值,一看就能看到规律对于一个范围的n , [ 阅读全文
posted @ 2013-04-22 00:00 Titanium 阅读(184) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 32 下一页