随笔分类 - OJ&Competition——BZOJ
摘要:【传送门:BZOJ1342】 简要题意: 给出n个数的序列,要选出连续m个数,使得这些数的最大值-最小值<=c 求出所有m个数的序列的第一个数的位置,如果没有输出NONE 题解: 直接单调队列,不解释 参考代码:
阅读全文
摘要:【传送门:BZOJ3613】 简要题意: 给出一个长度为n的A序列,可以使序列里的数增加或减小一个数,使得整个序列呈不下降序列 设B数组为最后的不下降序列 求出最小的ans=Max{|A[j]-B[j]|,1≤j≤n} 题解: 水题 直接二分改变大小,然后判断就可以了 输入的时候取mod要勤奋一点
阅读全文
摘要:【传送门:SPOJ1811&BZOJ2946】 简要题意: 给出若干个字符串,求出这些字符串的最长公共子串 题解: 后缀自动机 这两道题的区别只是在于一道给出了字符串个数,一个没给,不过也差不多(代码就贴SPOJ的,因为数据范围大一点) 首先用第一个字符串构造SAM 然后处理其他的每个串在后缀自动机
阅读全文
摘要:【传送门:BZOJ4516】 简要题意: 给出一个长度为n的数字字符串,求出每个数字插入到字符串结尾时的不同子串个数 题解: 后缀自动机 对于一个状态s,他的right集合代表的子串的长度就是(dep[fail],dep[s]]。这道题我们需要动态的维护不同子串的个数,每次从头扫一遍直接计算肯定不行
阅读全文
摘要:【传送门:BZOJ3998】 简要题意: 对于一个给定长度为N的字符串,求它的第K小子串是什么 题解: 后缀自动机 首先对于T=0的时候,所有的能到达的不同状态,Right集合大小恒为1 T=1的时候,就累加 然后先判断子串数量是否超过K 如果没有,则直接DFS就好了 参考代码:
阅读全文
摘要:【传送门:BZOJ4491】 简要题意: 给出一个长度为n的序列,m个操作,每个操作输入x,y,求出第x个数到第y个数的最长子串,保证这个最长子串是不上升或不下降子串 题解: 线段树 因为不上升或不下降嘛,就差分一下呗 每一段区间维护: d表示最多连续的非正数的个数,u表示最多连续的非负数的个数 l
阅读全文
摘要:【传送门:BZOJ1858】 简要题意: 给出一个长度为n的01序列,有五种操作,m个操作: 0 x y将第x个数到第y个数都变成0 1 x y将第x个数到第y个数都变成1 2 x y将第x个数到第y个数的所有数取反(即0变为1,1变为0) 3 x y求出第x个数到第y个数有多少个1 4 x y求出
阅读全文
摘要:【传送门:BZOJ1901】 简要题意: 给出一个长度为n的序列,有两种操作,m个操作: Q l r k求出l到r第k小的值 C x c将第x个数变成c 题解: 带修主席树例题,用树状数组来维护修改 参考代码:
阅读全文
摘要:【传送门:BZOJ4010】 简要题意: 有n道菜,有m个限制条件,每个限制条件输入x,y,表示第x道菜要在第y道菜之前做 在满足所有限制条件的情况下,编号小的菜要尽早做 求出满足要求的菜的顺序,如果没有满足要求的则输出Impossible! 题解: 拓扑排序 一开始想着将x连向y,然后跑拓扑,输出
阅读全文
摘要:【传送门:BZOJ2134】 简要题意: 给出n道题目,每道题目有a[i]个选项 有一个人知道所有题目的正确选项,但是他把答案全部写在了第i+1的题目上(第n个题目的答案写在了第1个题目上) 求出这个人做对题目的期望 题解: 期望DP,有一点点水 首先对于a[i-1]和a[i]而言,假设要答对第i道
阅读全文
摘要:【传送门:BZOJ3562】 简要题意: 给出n个点,m条初始无向边,有3种操作,q个操作: A x y连接x和y D x y删除x和y的边 Q 求出有多少个连通块 题解: 并查集+DFS 因为询问很少,但是边很多,所以我们先离线将不会被删除的边拿出来,然后将永远连在一起的点缩点 这样子这个图就会变
阅读全文
摘要:【传送门:BZOJ1084】 简要题意: 给出n行m列的矩阵,要求选出k个不互相覆盖子矩阵,使得选出的k个子矩阵的和最大,求出和 题解: DP 我的DP方程可能有些麻烦。。 首先面向数据编程,因为m<=2,所以先把m=1的情况求出来,这个就不用讲了 然后对于m=2的情况,我们设: f[i][k][0
阅读全文
摘要:【传送门:BZOJ5039】 简要题意: 给出一个长度为n个序列,有m个操作,共为三种操作: 1 x y c表示将x到y的值全部*c 2 x y c表示将x到y的值全部+c 3 x y求x到y的值的和 题解: 同BZOJ1798 参考代码:
阅读全文
摘要:【传送门:BZOJ1798】 简要题意: 给出一个长度为n个序列,有m个操作,共为三种操作: 1 x y c表示将x到y的值全部*c 2 x y c表示将x到y的值全部+c 3 x y求x到y的值的和 题解: 线段树嘛,区间修改加区间求值 但是关键是怎么处理乘和加的lazy标记的处理 首先肯定不能够
阅读全文
摘要:【传送门:BZOJ3932】 简要题意: 给出n个任务,每个任务给出开始时间和结束时间还有这个任务的优先度 有m个询问,每个询问给出x和k,求第x秒的时候,优先度从小到大k个任务的优先度的和 强制在线 题解: 主席树好题 设c为这个子树有多少个任务,sum为这个子树里的权值和 先把优先度离散化,然后
阅读全文
摘要:【传送门:BZOJ3339】 简要题意: 给出一个长度为n的数列,有m个询问,每个询问输入l,r,求出l到r之间没出现过的最小自然数 题解: 同BZOJ3585 参考代码:
阅读全文
摘要:【传送门:BZOJ3585】 简要题意: 给出一个长度为n的数列,有m个询问,每个询问输入l,r,求出l到r之间没出现过的最小自然数 题解: 莫队+权值分块 只要处理每一个权值块总共出现多少种数,每当找到一个权值块出现的种数不等于总共的种数,就直接在这个块里找哪个没出现过就行了 参考代码:
阅读全文
摘要:【传送门:BZOJ4196】 简要题意: 有n个软件,每个软件有一个依赖的软件(除了第一个软件),要想安装一个软件就必须要安装它所依赖的软件 有m种操作,有一种是安装某个软件,另一种是删除某个软件,如果删除了一个软件,那么所有直接或间接依赖它的软件都要删除 求出每种操作改变了多少个软件的状态 题解:
阅读全文
摘要:【传送门:BZOJ3524】 简要题意: 给出n个数,m个询问,每个询问输入l,r,请判断区间[l,r]是否存在一个数出现的次数大于(r-l+1)/2,如果存在则输出这个数,否则输出0 题解: 主席树例题,直接在找值的时候判断是否存在左子树或者右子树出现的值>(r-l+1)/2就行了 参考代码:
阅读全文
摘要:【传送门:BZOJ3626】 简要题意: 给出一棵树,设dep[i]为每个点与根节点的距离+1, 有m个询问,每个询问输入l,r,z 求出$\sum_{l<=i<=r}dep[LCA(i,z)]$ 题解: 读题,实际上dep[i]就表示i到根有多少个节点 那么如果要求dep[LCA(i,j)]的话,
阅读全文

浙公网安备 33010602011771号