上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 27 下一页
摘要: 如果我们能求出来每个区间个数的最大分值,那就可以用线段树维护这个东西 然后出答案了 然后这个的求法和(luogu4269)Snow Boots G非常类似,就是我们把数大小排个序,每次都拿<=x的位置去合并那个并查集,同时维护个数和大小 阅读全文
posted @ 2018-11-09 14:31 Ressed 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 首先缩一波点,就变成了一个DAG,边权是出点的大小 那我们走到某个点的时候可能会有两种状态:已经走过反边或者没走过 于是就把一个点拆成两层(x和x+N),第二层的点表示我已经走过反边了,每层中的边和原来一样,但对于边(u,v),我们连一个(v,u+N),表示走了这条边的反边,这条边的边权是u的大小 阅读全文
posted @ 2018-11-09 14:24 Ressed 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 传送门 本来想用点分治做,结果root又求不对 算的时候还算错了 我好菜啊 结果szr大佬告诉我是树形dp 我好菜啊!! 我们有$\lceil \frac{x}{k} \rceil = \frac{x+(k-x)\%k}{k}$ 于是可以把这个拆成两部分来求,最后加在一起再除个k 距离和很好求,连接 阅读全文
posted @ 2018-11-09 14:10 Ressed 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 我们来算每个点出现在的集合的个数 设f[i]为i出现的集合个数,g[i]是只选子树i 可以有多少种选法 那就有$g[i]=1+\prod\limits_{j是i的孩子}{g[j]} , f[i]=f[fa[i]]*\prod\limits_{j是i的兄弟}{f[j]}$ 这个兄弟的积可以直接用一个逆 阅读全文
posted @ 2018-11-05 22:00 Ressed 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 首先如果这是一个DAG,我按照拓扑序倒着去选,一定能选到所有入度不为0的点 然后考虑有环的情况 我们拎出来一个强连通分量 先假设它缩点以后是没有入度的 那我最后它里面一定至少剩一个不能选 因为就剩一个的时候肯定没有入度呀 那我显然可以把它看成是一个只有一个点入度为0的DAG 而且那个入度为0的点可以 阅读全文
posted @ 2018-11-05 21:53 Ressed 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 这个东西和最长上升子序列很像 考虑如果已经知道每个位置为开头的LIS长度和个数 f[i],我可以扫一遍 判断这个个数和K的大小,找到第一个长度=len而且个数<K的,这个位置就是要选的 然后K-=个数,len--,再记下来我这次选的是这个位置(以后还要判断当前位置是否在上一个钦定住的范围内),然后接 阅读全文
posted @ 2018-11-05 21:42 Ressed 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 先跑一边dijkstra算出从1到i的最短距离dis[i] 然后建反向边 从n开始记忆化搜索,(p,k)表示1到p的距离=dis[p]+k的方案数 答案就是$\sum\limits_{i=0}^{k}{(n,i)}$ 考虑0环,如果我记搜的时候搜到了0环,那答案就是-1,可以先用tarjan处理一下 阅读全文
posted @ 2018-11-02 16:35 Ressed 阅读(550) 评论(0) 推荐(0) 编辑
摘要: 传送门 sbw太神啦orz 首先N<=20可以直接暴搜 然后玄学剪枝可以过18个点 那么N<=40的时候,就把它拆成两半分别暴搜,再用dp拼起来 对于前半段,设f[i][j]是开始高度为i,获得金币为j的方案数;对于后半段,设g[i][j]是结束高度为i,获得金币为j的方案数(离散化一下高度) 然而 阅读全文
posted @ 2018-11-01 09:08 Ressed 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 我当然想选最大的子段和啦 但要选M次 那不一定就是最好的 所以提供一个反悔的选项,我选了一段以后,就把它们乘个-1,然后再选最好的(类似于网络流的思路) 这个可以用线段树来维护,记一个区间包含左端点/右端点的最大值、最小值(因为要乘-1),还有它们的端点位置 然后一直找 直到最大值<=0 阅读全文
posted @ 2018-11-01 08:55 Ressed 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 我每次都想选那个最大的、或者是它旁边的两个一起选,如果这两个一起选会大于那个最大的的话 那我就先把那个最大的选了,再提供一个反悔的选项(类似于网络流的思路?),就是我可以再把种的树换成它旁边那两个,也是相当于又多种了一个,这个的权值是v[l]+v[r]-v[x] 所以用一个双向链表维护这个l、r,用 阅读全文
posted @ 2018-11-01 08:48 Ressed 阅读(138) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 27 下一页