上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页
摘要: 题意:询问n个点的每个非叶子点度数恰好等于d的不同构的无根树的数目。 n≤1000,d≤10n≤1000,d≤10。 题解: 这题真的是一道非常好的题 首先考虑有根树 定义f[i][j][k]表示i个点,根节点度数为j,最大子树大小为k 转移的时候枚举最大子树以及个数,这样保证了不重构 通过记录了根 阅读全文
posted @ 2018-07-31 23:47 尹吴潇 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 题解: 思考了很久这个图的特点没有发现 看了题解瞬间醒悟原来要在序列上做 还原出这张图显然是O(N^2)可以做的 然后其实就比较简单了 首先为了满足独立集,我们需要保证所取元素递增 为了满足覆盖集,我们需要满足对于一段不取的元素 apre>max或者max>alast 由于apre最大的就是当前这个 阅读全文
posted @ 2018-07-31 23:31 尹吴潇 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题解: 解法1: 单调栈优化 首先发现一个性质就是 如果当前从i转移比从j转移更加优秀 那么之后就不会从j转移 所以我们考虑利用这个性质 我们要维护一个队列保证前一个超过后一个的时间单调不减 怎么来维护呢 我们计算s[t-2]超过s[t-1]的时间t1,s[t-1]超过i的时间t2,如果t1<t2就 阅读全文
posted @ 2018-07-31 02:26 尹吴潇 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题解: 一道比较简单的题目 容易发现状态数只有5*n个 而转移需要满足i1<i2;j1<j2 那么很明显是二维平面数点 暴力一点就是二维树状数组+map 5nlog^3 比较卡常 但是注意到我们的dp是保证了i1<i2的 所以本质是扫描线+树状数组 5nlogn 由于代码非常简单编译调试一遍过 代码 阅读全文
posted @ 2018-07-29 11:32 尹吴潇 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 题解: 一道比较简单的题目 想着想着就把题目记错了。。想成了可以把某段区间覆盖为其中一个数 其实是比较简单的 每个点的贡献一定是一个区间(就跟zjoi2018那题一样) 然后问题就变成了给你n个区间让你选择然后覆盖整个序列,其中使用>1的不能超过k 转移时比较简单的 阅读全文
posted @ 2018-07-28 22:56 尹吴潇 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题解: 一道不错的题目 好像有容斥的方法。。我没看不知道 首先dp是比较简单的 f[i][j]表示考虑了前m门课,完全碾压了j个人 那么转移是 f[i][j]=sigma { f[i-1][k]*C(j,k)*C(n-j,a[i]-k) } *pi 时间复杂度n^3 其中pi表示选出他们分数的方案数 阅读全文
posted @ 2018-07-28 14:54 尹吴潇 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 题解: 很多方法 斯特林数推导略麻烦但是不依赖于模数 代码: 拉格朗日插值 由于可以证明这是个K+1次多项式于是可以直接用插值 阅读全文
posted @ 2018-07-28 14:42 尹吴潇 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题解: 比较简单的一道题 显然我们只需要知道每个联通块的大小就可以了 然后发现x1+xn=30 其中xi<=xi+1的状态只有5000 所以直接记忆化搜索就可以了 emm原来map还可以映射vector这些我还以为要自己写 代码(比较暴力): 阅读全文
posted @ 2018-07-27 16:49 尹吴潇 阅读(177) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-07-25 23:21 尹吴潇 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 题解: 网上题解还没看 我的方法是用平衡树维护一个单调栈 由于N用了一定是赚的 所以它的作用是让f[i+1]=f[i]+1 这个是可以记录的 就跟noip蚯蚓那题一样 然后插入一个值的时候查询前面的最大值再比较一下做修改就可以了 明天写下看看正确性 阅读全文
posted @ 2018-07-25 22:48 尹吴潇 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 题解: 首先我们知道对于size==1的点是只出现一次的 存疑:为什么新增点不会size==1 那么问题就变成区间取等差数列,区间取最小值 分别线段树维护就可以了 代码: 阅读全文
posted @ 2018-07-25 15:10 尹吴潇 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题解: 5分钟看题 25分钟码完 然后调了一下 样例1s??? 好吧我把只出一张牌当成决策了。。 判断了一下前面没有出牌再考虑这个决策(是不是傻逼??) 交上去65 于是愉快的改状压 改到一半的时候想到 没有办法出牌就直接return了。。 交上去 a了 继续写状压 的确状压还是快了10倍+的 不过 阅读全文
posted @ 2018-07-24 15:54 尹吴潇 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题解: 树链剖分是显然的 问题在于求树链的并 比较简单的方法是 用线段树打标记覆盖,查询标记区间大小 Qlog^2n 代码: 阅读全文
posted @ 2018-07-24 10:51 尹吴潇 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题解: 后缀自动机处理这个问题,需要每次都将节点排序一遍,然后统计 这样就会造成较大的复杂度 现在我们需要支持连边,和修改求和 1.可以链修改,单点查询 2.可以点修改,子树查询 阅读全文
posted @ 2018-07-23 16:12 尹吴潇 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 题解: 跟找最长公共子串几乎差不多的方法在后缀自动机上跑 找到一个匹配点,ans+=sum[x] 其中sum[x]=sum[fa]+(len[x]-len[fa[x]])*size[x] 另外一个比较通用的方法 是建立广义后缀自动机 那么每个点的贡献是(len[x]-len[fa[x]])*size 阅读全文
posted @ 2018-07-23 11:46 尹吴潇 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 题解: 这题有一个很显然的性质是字符串越长字典序越大 考虑二分答案贪心判断 由于最大的一定是后缀,所以从后向前判断,每次加入一个后缀 用hash比较大小(就是二分判断是否相同比较第一个不相同字符) 代码: 阅读全文
posted @ 2018-07-23 10:21 尹吴潇 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题意: ∀i∈[0,n) 求有多少对后缀满足 Len(lcp)\ge iLen(lcp)≥i ,以及满足条件的两个后缀的权值乘积的最大值 题解: bzoj差异这题弱化版本 noi怎么这么水的题目 代码: 阅读全文
posted @ 2018-07-22 22:53 尹吴潇 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题解: 代码: 阅读全文
posted @ 2018-07-22 22:50 尹吴潇 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 题解: 后缀自动机用起来非常好用。。 首先根到每个特殊点就是原串的前缀(size=1) 那么我们会发现在parent树上 right集合不断变成后缀 那么他们的lca就是他们的最长公共后缀 于是问题变成了树上给n个点求len[lca]的和 显然dfs一遍就可以完成了 后缀数组做这题也是比较简单的 枚 阅读全文
posted @ 2018-07-22 22:38 尹吴潇 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题解: 每个点的size值就是这个从根-它出现的次数 如果相同只算一次就全部赋值为1就可以了 代码: 阅读全文
posted @ 2018-07-22 16:37 尹吴潇 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 题解: 和上一题差不多 每个点记录前面的到这个点的最大值 初值赋为len[i] 然后注意要用子节点更新父节点 代码: 阅读全文
posted @ 2018-07-21 16:19 尹吴潇 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 题解: 因为父亲节点是第一个right集合不同的后缀 所以我们用ac自动机匹配的方法向下找,不符合了就往父亲方向跳 时间复杂度O(n) 代码: 阅读全文
posted @ 2018-07-21 14:43 尹吴潇 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题解: ex-crt 学习见https://www.cnblogs.com/Miracevin/p/9254795.html hdu2891 阅读全文
posted @ 2018-07-21 10:54 尹吴潇 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题解: 例题啥的看https://www.cnblogs.com/Sakits/p/8251363.html 我基本是照着这个学的 代码: 阅读全文
posted @ 2018-07-21 10:53 尹吴潇 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题解: 一个挺简单的性质却没有发现。。 操作一定是从x-n的 正确性很显然 这种题目还是要多做 那么dp就比较简单了,f[i][j]表示前i个,用了j次,f[i][j]=max(f[i1][j1])+1 其中i1<i,j1<=j,a[i]+j>=a[i1]+j1 如果下面是自己写 可能就写二维线段树 阅读全文
posted @ 2018-07-19 23:58 尹吴潇 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 题解: 满分的笛卡尔树以后再学吧。。 40分还是比较好想的 但是状态挺复杂的 直接贴代码了 代码: 阅读全文
posted @ 2018-07-17 00:27 尹吴潇 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 题解: 跟n个点有标号的无向连通图个数几乎一模一样 直接上代码了 代码: 阅读全文
posted @ 2018-07-16 15:02 尹吴潇 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题解: 很久以前看的时候觉得很难并不会 其实还是挺简单的 首先我们容斥 那就只要算不连通图的个数 我们枚举1所在的连通图节点个数 然后组合数一下 转移方程就是g(n) = sum{ C(n - 1, k - 1) * f(k) * h(n - k)} 代码: 阅读全文
posted @ 2018-07-16 14:51 尹吴潇 阅读(657) 评论(0) 推荐(0) 编辑
摘要: 题解: 一道比较水的题 但这个测试数据极弱我也不知道我的代码正确性是不是有保证 构成一个边双联通 可以由两个有一个公共点的边双联通或者一个边双加一条链构成 所以我们需要要预处理出所有环 令f[i][j][k]表示起点为i,终点为j,经过点的状态为k,这样递推 那么最后环就是加上j-i这条边就可以了 阅读全文
posted @ 2018-07-16 14:32 尹吴潇 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 题解: 好像还是比较简单的 对每个重心向下一层重心连边 树高是log的 我们对每一层维护两个信息 1.所有节点到上一层重心的距离 2.所有儿子的1堆的堆顶 另外开个总的堆 维护每一层最长+次长 修改是nlog^2的 洛谷上的时限真紧啊。。 卡时卡不过 代码: 阅读全文
posted @ 2018-07-13 23:31 尹吴潇 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题解: 点分常数大如狗 正解是离线跑点分 我是一个个跑,理论复杂度一样 慢了10倍+ 阅读全文
posted @ 2018-07-13 14:44 尹吴潇 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题解: 点分治序列+超级钢琴那题 搞出点分治序列 那么每个点能构成路径的就是连续的一段 上次是用线段树维护的。。这次就用st表了 代码: 阅读全文
posted @ 2018-07-12 23:35 尹吴潇 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题解: 比较简单的点分治 首先暴力的话直接枚举 然后枚举另一个点的时候顺便看一下有没有零点 n^2 考虑点分治 分治之后用f[i][0/1]表示权值为i,有没有零点的方案数 我们来证明一件事情,如果两边都无零点且权值为0则整一个序列没有零点 则左边某点和最右点构成0,而整一段和为0,则左边端点和那点 阅读全文
posted @ 2018-07-12 23:10 尹吴潇 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题解: 并没有想到。。 我们用前驱后继来表示出题目要求 即pre[i]<l且scc[i]>r且l<=i<=r 即4维偏序 使用树套树可以用主席树套线段树(很毒瘤??) 那么会kd-tree就比较简单了,3维空间查找 代码写完编译运行一遍过就很爽了 代码: 阅读全文
posted @ 2018-07-10 23:07 尹吴潇 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题解: kd-tree裸题 对每个点维护最近的k个开个堆维护一下 阅读全文
posted @ 2018-07-10 22:29 尹吴潇 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 题解: n倍经验题 首先比较容易想到的是对绝对值分类讨论 然后是4维偏序 1.查询和修改顺序 2.x>y 3.a[x]>a[y] 4.(x+a[x])-(y+a[y])<=k 这样是nlogn^3的,也许可以卡过吧。。。 另外注意在解决偏序问题的时候我们尽量使用cdq分治嵌套 注意cdq分治嵌套的时 阅读全文
posted @ 2018-07-10 14:36 尹吴潇 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题解: 前一题不是强制在线,后一题是强制在线 树套树空间会炸 说一下cdq分治+树状数组 首先我们利用cdq分治使得查询和操作保证先后关系 然后矩阵查询变成4个矩阵的差 那么我们就可以运用扫描线的方法来维护了 时间nlogn^2,空间O(n) 后一题是kd-tree 查询的方法和线段树基本一样 如果 阅读全文
posted @ 2018-07-10 12:40 尹吴潇 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题解: 学之前以为这个东西挺难的 看了之后发现好像挺简单的 思路上挺简单的,代码上基本和线段树差不多 hdu-2966 代码: BZOJ2648 BZOJ3053 阅读全文
posted @ 2018-07-10 12:34 尹吴潇 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题解: 首先很贪心的选择 有最大的我们一定会用最大的 然后可以将序列分割。。 就变成了一道模拟题了。。 每个状态记录(h,t,h-have,t-need) 注意一下细节就可以了 代码: 阅读全文
posted @ 2018-07-09 16:03 尹吴潇 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题解: 比较水的一道题 首先我们化简一下式子发现是维护xxo+yyo的最值 显然是用凸包来做 我们可以直接用支持插入删除的凸包 也是nlogn的 因为没有强制在线,我们也可以cdq,考虑前面一半对答案的影响,再考虑后面的 时间复杂度nlog^2n 后面这道强制在线当然可以直接平衡树维护 但是有一种神 阅读全文
posted @ 2018-07-09 15:20 尹吴潇 阅读(93) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页