摘要:
题意: 有一个树林,树林中不同种类的树有不同的数量,高度,砍伐它们的价格。现在要求砍掉一些树,使得高度最高的树占剩下的树的总数的一半以上,求最小花费。 题解: 用线段树维护不同种类树的信息,叶子节点从左到右存储单棵砍伐花费最小的树,从高度由高到低枚举树的种类,每次记这种树为留下的最高的树,每次将此种 阅读全文
摘要:
题意: 给定一个矩阵,矩阵上有若干点,每个点有正或负的权值,找一个方框框住一些点使得方框中点权值最大。 题解: 离散化横纵坐标,容易将这个问题转化为在矩阵上求最大和子矩阵的问题。 普通的n*n的矩阵的子矩阵最大和正解为$O(n^3)$,枚举上下端点后dp 然而此题是一个稀疏矩阵,n*n矩阵中只有O( 阅读全文
摘要:
题意: 设f(n,m)为比n大的第m个和n互质的数,给定一个k=(f(n,m)-n)xor n和m,求最小的n 题解: 对于给定的m而言,一个k周围合法的n分布的很密,因此在k的邻域暴力搜索即可。 阅读全文
摘要:
题意: 给你一个小根堆,从根开始拿,拿走子节点被拿完后才可以拿走父节点,两个人依次拿,谁拿的节点总和大谁获胜,问你谁有必胜策略。 题解: 小根堆中,每个点的权值总是不小于父亲节点的权值。所以无论怎么取,先拿走的数一定 不小于后面拿走的数。 此时双方的最优策略就是:贪心选择能取的数字之中最大的数。 阅读全文
摘要:
可持久化线段树,别名主席树。 在我看来这个数据结构绝妙之处在于它把可持久化的概念用于解决区间查询的问题。 一般主席树用于解决区间第k大的问题。 我们建立一棵权值线段树,权值线段树就是线段树上第i个叶子节点储存i出现了多少次(类似于桶排序) 假想,一个数列第i个元素a[i]=p,是在第i个时间节点插入 阅读全文
摘要:
题意: 给你两个序列a,b,序列c的某位是由序列a,b的此位异或得来,让你重排序列ab,找出字典序最小的序列c。 题解: 如果能找到a,b序列中完全一样的值当然最好,要是找不到,那也尽量让低位不一样。 因此,将两个序列中元素的二进制视作字符串,建字典树。 在两棵字典树上,贪心地找让当前位一样的。 每 阅读全文
摘要:
这个板子能够解决任何线性递推式,只要你确定某个数列的某项只与前几项线性相关,那么把它前若干项丢进去,这个板子就能给你返回你要求的某项的值。 原理???(待补充) 阅读全文
摘要:
题意: 给你一个C,再给你n组a,b,让你求x取什么值的时候,$ \sum_{i=1}^n |a_i*x+b_i| =C $,要求求出解的个数,并用最简分数从小到大表示,如果有无穷多解,输出-1. 题解: 其实这些方程就是在平面上的一组曲线,都是V形的,最低点都在x轴上,求出所有的零点,以这个零点从 阅读全文
摘要:
题意: 给你一个暴力匹配字符串公共前缀后缀的程序,为你对于某个字符串,暴力匹配的次数是多少。 题解: 使用扩展kmp构造extend数组,在扩展kmp中,设原串S和模式串T。 extend[i]表示T与S[i,n-1]的最长公共前缀。 在本题中,只需要将S,T均设为题目中输入的字符串即可,这样,ex 阅读全文
摘要:
题意: 给你n个数,求如下限制条件下的排列数:1,第一位必须是x,2,最后一位必须是y,3,相邻两位之差小于等于2 题解: 如果x<y,那么考虑把整个数列翻转过来,减少讨论分支。 设dp[n]为限制1和n在两边,相邻的数之差小于等于2的排列方案。 dp[0]=1 dp[1]=1 dp[2]=2 dp 阅读全文