摘要:
题目大意:一个数组,四种操作: 模拟这四种操作。 题目分析:三种更新操作,一种询问操作。三种更新实际上是两种,add更新(等差数列做加减运算仍是等差数列)和set更新,add更新的懒标记记录首项、尾项和公差。 代码如下: 阅读全文
摘要:
题目大意:在二维坐标系的x正半轴,y正半轴和第一象限内,有三种操作: 1、add x,y (添加点<x,y>); 2、remove x,y(移除点<x,y>); 3、find x,y(查找在点<x,y>的绝对右上角的第一个点); 并且,只能移除已添加的点,一个点在移除之前不能重复添加。 题目分析:将 阅读全文
摘要:
题目大意:给n个0~15之间的数,有3种更新操作,1种询问操作。3种更新操作是:1、让某个闭区间的所有数字与一个0~15之间的数字进行逻辑与运算;2、让某个闭区间的所有数字与一个0~15之间的数字进行逻辑或运算;3、让某个闭区间的所有数字与一个0~15之间的数字进行异或运算。一种询问操作是询问某个闭 阅读全文
摘要:
题目大意:给n个0~m之间的数,如果是0,那么0可以变为任意的一个1~m之间的一个数。从中选出若干个数,使构成一个连续的序列。问能构成的最长序列的长度为多少? 题目分析:枚举连续序列的起点,二分枚举二分序列的终点。 代码如下; 阅读全文
摘要:
题目大意:有n个花瓶,每个花瓶中只能放一朵花。两种操作,一种是从A开始放F朵花,如果有的花瓶中已经有花则跳过这个花瓶,往下一个花瓶放;第二种是将区间[A,B]之间花瓶中的花清空。如果是第一种操作,输出这次放的花的左右端点;如果是第二种操作,输出这次总共清理出了多少支花。 题目分析:建立线段树,节点维 阅读全文
摘要:
题目分析:线段树区间更新+离散化 代码如下: 阅读全文
摘要:
题目大意:求LIS,但是要求LIS中相邻的两个元素之间的距离要大于d。 题目分析:线段树。节点(l,r)保存信息为LIS的最后一个元素落在[l,r]之间的最大长度。从第d+2个元素开始查询更新操作,但要在更新第i-d+1个元素信息之后。 代码如下: 阅读全文
摘要:
题目大意:线段树的区间更改与查询,但是涉及到两种区间修改方式,一是给区间中的数全部加上一个数,二是将一个区间全部置为同一个数,然后询问整个区间和。 题目分析:处理好set操作和add操作的先后顺序就OK了。 代码如下: 阅读全文
摘要:
17: LCS Description Giving two strings consists of only lowercase letters, find the LCS(Longest Common Subsequence) whose all partition are not less t 阅读全文
摘要:
题目大意:给一棵带点权的树,现在要从根节点开始选出m个连通的节点,使总权值最大。 题目分析:定义状态dp(u,m)表示在以u为根的子树从根节点开始选出m个点连通的最大总权值,则dp(u,m)=max(dp(u,m),dp(u,m-k)+dp(son,k)),其中0<=k<m。这是01背包,k应该从大 阅读全文