摘要: 题意:给一个n*n的格子,放入k个物体,要求每个物体的相邻8个方向都不能放物体,问方案数。 题解:dp[i][j][k]表示前i行放了j个物体,且第i行状态为k的方案数,转移为dp[i][j][k]=∑dp[i-1][j-num[p]][p],num[p]表示单行状态为p能放几个物体,可以先预处理出 阅读全文
posted @ 2018-11-12 23:02 grimcake 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 题意:给一棵数,可以修改边权,问任意一个点到1号点的距离 题解:树上差分,即求出dfs序,然后当修改某一个点和它的父节点的边权时,就相当于以它为根的子树的所有点到1号点的距离都改变了,这样就可以用树状数组差分后进行区间修改。 阅读全文
posted @ 2018-11-09 12:50 grimcake 阅读(94) 评论(0) 推荐(0) 编辑
摘要: HDU-4632 Palindrome subsequence(区间dp) 题意:求一个字符串有多少个子序列是回文串。 题解:dp[i][j]表示i到j有多少的自序列是回文串,具体转移看代码 代码: HDU-4635 Strongly connected(强连通缩点) 题意:给一个有向图,问能加的最 阅读全文
posted @ 2018-10-28 22:05 grimcake 阅读(152) 评论(0) 推荐(0) 编辑
摘要: A. Diverse Substring(前缀和) 题意:给一个字符串,找出一个子串满足该子串中每个字母出现的次数不超过子串的长度/2,字符串的长度n<1000. 题解:n方枚举子串的起点和终点,对于每个字母建一个前缀和就能知道在任意一个字串中每个字母出现的个数了。 代码: B. Vasya and 阅读全文
posted @ 2018-10-26 22:18 grimcake 阅读(145) 评论(0) 推荐(0) 编辑
摘要: A. Diagonal Walking 简单模拟 代码: B. String Typing(kmp) 题意:有两种操作,往一个字符串末尾添加一个字符,可以操作无限次;将当前字符复制一遍,最多操作一次。现给出一个字符串,问最少操作多少步能够得到该字符串。 题解:首先求出next数组和最小循环节,从后往 阅读全文
posted @ 2018-10-24 19:35 grimcake 阅读(106) 评论(0) 推荐(0) 编辑
摘要: A. Golden Plate 水题 B. Curiosity Has No Limits(构造) 题意:给出一个长度为n-1的序列a和一个长度为n-1的序列b,问能否构造出一个长度为n的序列t,使得t(i)|t(i+1)=a(i), t(i)&t(i+1)=b(i),其中每个序列的元素都大于等于0 阅读全文
posted @ 2018-10-24 13:55 grimcake 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 最近学习了一下后缀数组,模板原理以后再看,先记一下一些数组的含义。用以下这张图做例子: rank(i)代表第i个后缀的字典序排名 sa(i)代表排名为i的字典序对应的位置 lcp(i, j)表示suffix(i)和suffix(j)的公共最长前缀 height(i) = lcp(sa(i-1), s 阅读全文
posted @ 2018-09-19 23:30 grimcake 阅读(175) 评论(0) 推荐(0) 编辑
摘要: HDU-4314 题意:给定一棵树,每条边有权值,要求删边使得树分为k个部分,有k个特殊的节点,要使这k个节点在不同的部分,求删除的边的最小权值和 题解:边从大到小排序,并查集维护,如果该条边的两个顶点所在的集合有特殊点,则删除这条边,如果只有一个特殊点,合并且让特殊点作为根节点 代码: 阅读全文
posted @ 2018-09-02 21:08 grimcake 阅读(143) 评论(0) 推荐(0) 编辑