上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 27 下一页
摘要: 1.涉及负数时同时维护最大和最小,互相转移。 2.考场上最大最小混搭转移WA,赛后发现如果是小的搭小的,大的搭大的就可过,类似这种: 于是猜测原因的话可能是:最大和最小的不一定是同一种方案,而P1、P2、P3这三种情况转移到现态必须是同一种方案转移过来? 阅读全文
posted @ 2019-03-23 21:18 AlphaWA 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 写得很好的题解 一眼过去很像是:排序,然后从前向后扫,有这个区间时插到树里,过去以后再删除。然后事实也是这样做的…… 具体起来: 1.如果考虑暴力的话,一种想法是枚举左端和右端要选取的区间(如果我们按长度排序的话),那么只要发现当前选取的这些从左到右的区间可以得到m及以上就可以了,没必要特地考虑具体 阅读全文
posted @ 2019-03-23 09:52 AlphaWA 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 输入给出了最小循环节长度,暗示next数组。 然后自己按照自己的kmp板子逆着来一遍就好。 阅读全文
posted @ 2019-03-22 11:49 AlphaWA 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 对于某个位置i,i - Next[i]是循环节长度,i整除(i - Next[i])时是完整的几个循环元。 阅读全文
posted @ 2019-03-22 09:18 AlphaWA 阅读(149) 评论(1) 推荐(0) 编辑
摘要: 查了半天数组越界的RE,才发现自己把ch数组放结构体里是过大的……放全局就A了。 类似区间的dp比较显然,只是用trie树做了优化,使得可以在trie树里一边走一边往上加dp值,不必枚举以前的每个位置了,省去了很多不必要状态。复杂度就O(n*Trie)。 终于比刘汝佳的代码优雅了(弥天大雾) 阅读全文
posted @ 2019-03-21 17:56 AlphaWA 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 题目传送 官方题解传送 1 #include <cstdio> 2 #include <iostream> 3 #include <algorithm> 4 using namespace std; 5 6 const int maxm = 1e5 + 5; 7 int n, m, ans; 8 p 阅读全文
posted @ 2019-03-20 11:51 AlphaWA 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题目传送 学习的这篇题解。 结论: 1.直观感受一下会发现找到LIS,LIS里的东西相对位置是不会变的,其他的移一移总会排序成功的,所以其他的就是最小集合了,第一问的答案就是n-LIS; 2.寻找字典序第k小的集合,相当于是寻找字典序第k大的LIS,然后把这个LIS删去,就是第二问的答案集合。 前置 阅读全文
posted @ 2019-03-19 10:44 AlphaWA 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 题是水题,学习一下用树状数组求LIS。 先离散化一下,注意去重;然后就把a[i]作为下标,dp[i]作为值,max作为维护的运算插进树状数组即可。 如果是上升子序列,询问(a[i] - 1);如果是不下降子序列,询问(a[i])。 阅读全文
posted @ 2019-03-18 20:21 AlphaWA 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 得到两个结论后为水题:1.进制一定是字母个数,否则这个表列不出来;2.对于某个字母,这行有几个两位数,这个字母的值就为多少。 判error直接暴力一遍即可。 阅读全文
posted @ 2019-03-18 15:16 AlphaWA 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 题目传送 就像题解所说的,写几个可以发现有分成四段的性质:第一段是从n开始往下贪,第二段是个数字,第三段……卧槽好吧真难描述。 然后发现这个数据量可达1e9,所以考虑“二分确定序列+数学计算”的方式解题。 首先二分出第一段的长度,这里我写得丑了,又将某些情况特判了一下;不难发现有了第一段的长度、N、 阅读全文
posted @ 2019-03-18 12:26 AlphaWA 阅读(162) 评论(0) 推荐(0) 编辑
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 27 下一页