上一页 1 2 3 4 5 6 ··· 12 下一页
摘要: 题目链接:传送门 题目思路:对于每一个笑话,用动态开点线段树来维护区间是否被覆盖(笑话是否已经被这些人听过),先假定范围内全部没听过(置1),然后再将该范围包含的被覆盖的区间置0; (也可以用set存一下二元组表示线段左右端点,每次二分查询暴力合并) 代码: #include<bits/stdc++ 阅读全文
posted @ 2021-04-10 20:58 DeepJay 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 题目链接: 传送门 思路: 显然,这是一个DAG,而且1 2 3 ... n-1 n 是该图的一个拓扑序。 定义 f(i , j) ( j ≥ i ) 表示到达i点只有一条路径且满足能够到达i 点的这个唯一的点k 所能到达的最远的点<= j。(a[k] + k <= j && k < i) f(i, 阅读全文
posted @ 2020-12-10 16:54 DeepJay 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题目链接:传送门 思路: 显然,al ^ ar < 2 * max{ al , ar }; 又 sum(l+1,r-1) == al ^ ar < 2 * max{ al , ar } <= 2k+1 ; (k 是 max{ al , ar } 的最高位) 那么先枚举左端点 l , 计算 al 的最 阅读全文
posted @ 2020-12-10 16:19 DeepJay 阅读(196) 评论(0) 推荐(1) 编辑
摘要: 题目链接:传送门 题目大意: 给一个方阵,由 O X . , 构成,定义操作:可以将X改为O 或者把O 改成X, 设 O X 的数量为k ,操作次数不能超过 k/3 次 (向下取整); 最后输出方阵,满足横纵方向不存在连续三个X或O。 题目思路: 对于(i+j)%3==x 的单元格改为X ,(i+j 阅读全文
posted @ 2020-12-08 22:13 DeepJay 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目链接:传送门 题目思路: k 次置零操作等价于将原数组,分为k+1段,且任意两段之间是独立的,相互之间没有影响; 设某一段为 序列b (以下标1为开头) ,序列长度为L, 其中每一个数字对 answer 的贡献为 b1 * ( L - 1 ) + b2 * ( L - 2 ) + b3 * ( 阅读全文
posted @ 2020-12-01 17:08 DeepJay 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题目链接:传送门 题目思路: 将m个区间按中点排序, 设第一个"题解"的中点为x,第二个"题解"的中点为y ,显然,对于每一个区间 的中点 mid ,x与y 谁更接近mid谁相交的长度就越长。显然,对于mid单调不减的序列,必定是前一部分与第一个相交更优,后一部分与第二个题解交更优,而这两个部分的分 阅读全文
posted @ 2020-11-21 22:53 DeepJay 阅读(239) 评论(2) 推荐(0) 编辑
摘要: 题目链接:传送门 题目思路: 对于ai ,找到一个aj 满足其二进制的公共前缀最长(公共前缀越长,异或值越小),如果aj有多个,那么再枚举判断和谁连边是最优的。 对于本题的做法,可以采用针对第k位的0/1进行分治(把区间按第k位的分成两个子区间),这样能保证每个ai会和另一个公共前缀最长的aj连边。 阅读全文
posted @ 2020-11-17 18:56 DeepJay 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目链接:传送门 题目思路: 对于异或最小值,可以根据贪心的思想,对于 ai 的二进制表示,从高位向低位枚举,去寻找 j 使得 ai ^ aj 最小化。 可以考虑构建一颗01字典树,叶子节点表示值ai,在同一棵子树下(有公共前缀)肯定优先匹配,公共前缀越长肯定优先级越高。对于字典树上 一个点 的两棵 阅读全文
posted @ 2020-11-17 16:24 DeepJay 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 题目链接:传送门 题目思路: 设 R(l,i) 表示以端点 l 为起点 包括数字 [ 1 , i ] 的最小右端点; 显然,对于 R(l,i) -> R(l,i+1) 是单调不减的(加入一个元素),R(l,i) -> R(l+1,i) 也是单调不减的(双指针思想); 那么对于这两个单调性,可以用线段 阅读全文
posted @ 2020-11-16 19:12 DeepJay 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 题目链接:传送门 题目思路: 如果这道题,没有让求出所有子串的的这个值(定义为X),那么显然是可以直接求LCS*4 然后最后减去( |A| + |B| ); 现在设计状态 :f[i][j] 表示以i ,j 为结尾的子串最大的X; 状态转移方程: if s[i]==t[j] then f[i][j]= 阅读全文
posted @ 2020-11-16 11:39 DeepJay 阅读(244) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 12 下一页