摘要: 最近又看到了当时困惑自己很久的约瑟夫,本质上来说有点类似于dp,推导出f(n)与f(n-1)的转移关系递推求解。 下面是最经典的约瑟夫问题,什么?链表模拟? 不存在的>_< https://vjudge.net/problem/51Nod-1073 首先,将n个人编号为: 0,1,2,3...... 阅读全文
posted @ 2017-08-09 22:22 *zzq 阅读(474) 评论(2) 推荐(0)
摘要: 这个算法其实是因为LIS有NlogN的作法,把LCS转化为了LIS来做。 对于序列A{},B{},我们可以记录下来B中的每个元素在A中出现的位置,按顺序保存在一个新序列当中, 如果有多个位置按倒序写,没有就不用写,然后对这个新序列求一个LIS就是两个序列的LCS长度。 为什么这样可行呢,我们可以这样 阅读全文
posted @ 2017-08-09 16:23 *zzq 阅读(1478) 评论(0) 推荐(0)
摘要: http://codeforces.com/contest/814/problem/C 给定一个字符串s,长度小于1500,进行q次询问q<=20w,每次询问输入一个m和一个字符c,求将最多m个c代替原来字符串的某些位置,能得到的连续个c的最长长度。 很容易想到一个n*n*q的暴力做法,但是会超时, 阅读全文
posted @ 2017-08-09 14:52 *zzq 阅读(325) 评论(0) 推荐(0)
摘要: uva 紫书例题,这个区间dp最容易错的应该是(S)这种匹配情况,如果不是题目中给了提示我就忽略了,只想着左右分割忘记了这种特殊的例子。 dp[i][j]=MIN{dp[i+1][j-1] | if(match(i,j) , dp[i][k]+dp[k+1][j] | i<=k<=j .}注意初始化 阅读全文
posted @ 2017-08-09 10:29 *zzq 阅读(214) 评论(0) 推荐(0)
摘要: http://www.ifrog.cc/acm/problem/1028 很有趣的一道题,求从n个数里挑出不同的两个,使得他俩'|','&','^'后的值尽量大,求这个最大的结果。 求最大的异或值想到了trie树的一个经典操作,对于按位与,要两个位置都是1才会出现1,我们肯定要贪心操作,优先使高位为 阅读全文
posted @ 2017-08-09 09:15 *zzq 阅读(340) 评论(0) 推荐(0)