摘要: Solution 要求最小代价的方案数,所以我们显然可以直接把这些元素从小到大排序 我们令$f_i$表示消去$i$个一样的数字的方案数,不难得出$f_i = \frac {i \cdot (i 1)} {2} f_{i 1}$ 假设当前有$i$个数字,我们可以任选两个数字把编号小的消去,所以方案数为 阅读全文
posted @ 2018-10-24 17:20 xunzhen 阅读(205) 评论(0) 推荐(0) 编辑
摘要: "题目蓝链" Solution 直接分块就可以了,对于每一块维护一个大根堆 每次操作对于整块的部分就直接先把待替换元素压进去,然后取出堆顶的元素 对于边界块就直接利用一个小根堆去暴力重构,然后直接依次从堆中取出最小的元素去替换就可以了,然后直接重建这个块的大根堆 时间复杂度$\mathcal{O}( 阅读全文
posted @ 2018-10-24 17:05 xunzhen 阅读(249) 评论(0) 推荐(0) 编辑
摘要: "题目蓝链" Solution 因为这是一个仙人掌图,所以我们可以通过$tarjan$缩点双找出图中所有的简单环。然后我们找出每一个环中的最大编号和最小编号,并按最大编号从小到大排序。然后我们把询问离线下来,并且挂在询问的右端点处 然后我们从左往右扫,处理每一个节点处的询问之前,先把最左能走的不会形 阅读全文
posted @ 2018-10-18 16:05 xunzhen 阅读(288) 评论(0) 推荐(0) 编辑
摘要: "题目蓝链" Solution 因为可以随便走,所以显然就是一个缩点+DP,只需要记录每一个强联通分量的最大和最小价格就可以了 Code cpp include using namespace std; define squ(x) ((LL)(x) (x)) define debug(...) fp 阅读全文
posted @ 2018-10-14 21:55 xunzhen 阅读(127) 评论(0) 推荐(0) 编辑
摘要: "题目蓝链" Solution 我们设$dp[i][j]$表示到第$i$个点多走了$j$步的方案数,$dis[i]$表示从$1$到$i$的最短距离 显然有以下转移方程式, $$ dp[i][j] = \sum dp[k][dis_i + j len_{i, k} dis_k] $$ 其中,$k$为所 阅读全文
posted @ 2018-10-14 21:29 xunzhen 阅读(184) 评论(0) 推荐(1) 编辑
摘要: 在今天的模拟赛中,有一道题需要在$\mathcal{O}(n)$的复杂度内求出一个无序的序列的前$k$大值的和 然后我冥思苦想良久,还是想不到怎么做,最后只能$sort$水分了... 其实C++的模板库$algorithm$里,提供了一个非常好用的函数叫$nth\_element$ 调用方式为$nt 阅读全文
posted @ 2018-10-06 20:00 xunzhen 阅读(569) 评论(0) 推荐(0) 编辑
摘要: "题目蓝链" Solution 我们可以贪心的考虑,就是尽量把小的覆盖完。我们把所有的点从小到大排序,然后直接二分覆盖前$k$个点,用网络流跑一下二分图求出最小链覆盖,然后就判断一下点数减去最小链有没有超过给定的人数 由于这道题的链可以重叠的,所以我们可以直接求出每一个点可达的所有点。然后拆点,对于 阅读全文
posted @ 2018-09-30 21:33 xunzhen 阅读(180) 评论(0) 推荐(0) 编辑
摘要: "题目蓝链" Solution 这题显然就是一道BFS的题,但这道题的边数很多,我们怎么保证是$\mathcal{O}(n)$级别的呢 我们只需要维护一个并查集(模拟链表),表示当前还未访问的点。然后我们从当前节点往所有与当前点连了边的未访问到的节点扩展,每到一个点就在链表删掉当前当前的点。这样就能 阅读全文
posted @ 2018-09-30 16:02 xunzhen 阅读(91) 评论(0) 推荐(0) 编辑
摘要: "题目蓝链" Solution 这道题我一开始打挂了,因为我没有考虑反转会对修改也产生影响。我们可以考虑建立一颗线段树来维护,对于每一个点开一个标记,标记的每一个二进制为表示在当前子树的第几层会全部翻转。我们只需要在修改和查询的时候把这个标记$push\_down$一下就可以了 另外注意在修改操作的 阅读全文
posted @ 2018-09-29 14:51 xunzhen 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 1. 空间开小或开爆 2. 求和忘记开$long~long$ 3. 有些只在函数里用的STL就尽量开在函数里,容易忘记清空 4. 数字之间 异或 的时候有可能会 超过原本的值域范围 5. 需要维护区间和的线段树中,凡是和线段树的点值有关的变量都要开$long~long$ 6. 在离散化的时候,不要把 阅读全文
posted @ 2018-09-28 16:05 xunzhen 阅读(281) 评论(0) 推荐(0) 编辑