摘要: 题意: 二维平面上给出$n$个点,然后对每个点进行染色:红色和蓝色,要求位于同一行或同一列的点中,红色点和蓝色点的个数相差不超过1 分析: 正解是求欧拉路径,在 "这篇博客" 中看到一个巧妙的思路: 对于同一行中的点,进行两两分组,每组的两个点之间连一条边(可能会剩下孤立点)。 同样地,同一列中的点 阅读全文
posted @ 2017-12-07 21:03 AOQNRMGYXLMV 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出$n$个字符串$s_i$和$q$个询问: $l,r,k$:$\sum\limits_{i=l}^{r}count(i, k)$,其中$count(i,j)$表示$s_j$作为子串在$s_i$中出现的次数 分析: 先不考虑查询中$l,r$的限制,考虑该字符串$s_k$在一个字符串集合中出现 阅读全文
posted @ 2017-12-06 19:14 AOQNRMGYXLMV 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 忘了当时怎么做的了,先把代码贴上,保存一下后缀数组模板。 阅读全文
posted @ 2017-12-05 20:42 AOQNRMGYXLMV 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 题意: 维护一个序列,支持如下几种操作: ADD x y D:将区间$[x,y]$的数加上$D$ REVERSE x y:翻转区间$[x,y]$ REVOLVE x y T:将区间$[x,y]$向右循环平移$T$个长度 INSERT x P:在第$x$个元素后插入$P$ DELETE x:删除第$x 阅读全文
posted @ 2017-12-05 13:11 AOQNRMGYXLMV 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题意 将一个长度为$n$的数组重复$m$遍得到一个长度为$n \times m$的新序列,然后消掉新序列中连续$k$个相同的元素,不断重复这一过程,求最后剩下的序列的长度 分析 首先可以明确一件事就是消除的顺序是任意的,最终得到的序列是相同的 消除的块有两种情况: 1. 块在序列内部 2. 块在序列 阅读全文
posted @ 2017-10-28 23:09 AOQNRMGYXLMV 阅读(621) 评论(0) 推荐(1) 编辑
摘要: 题意 给出一个归并排序的算法$mergesort$,如果对于当前区间$[l, r)$是有序的,则函数直接返回。 否则会分别调用$mergesort(l, mid)$和$mergesort(mid, r)$,其中$mid = \left \lfloor \frac{l+r}{2} \right \rf 阅读全文
posted @ 2017-10-14 23:08 AOQNRMGYXLMV 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一棵$n$个节点的树和$m$条链,每条链有一个权值。 从中选出若干条链,两两不相交,并且使得权值之和最大。 分析: "题解" cpp include include include include include include include include using namespa 阅读全文
posted @ 2017-06-06 23:38 AOQNRMGYXLMV 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一个长度为$n$的数列$A_i$,定义$f(k)$为所有长度大于等于$k$的子区间中前$k$大数之和的和。 求$\sum_{k=1}^{n}f(k) \; mod \; 10^9+7$。 分析: 从某个长度为$k$的子区间对答案的贡献来看: 它的长度大于等于$k$,所以区间中每个都加到答 阅读全文
posted @ 2017-06-05 17:04 AOQNRMGYXLMV 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一个序列$A$,有若干询问。 每次询问某个区间中值相等且距离最短的两个数,输出该距离,没有则输出 1. 分析: 令$pre_i = max\{j| A_j = A_i, j include include include include include include include u 阅读全文
posted @ 2017-06-05 16:38 AOQNRMGYXLMV 阅读(231) 评论(1) 推荐(0) 编辑
摘要: 题意: 给出一个森林,有若干询问$u, v$: 从$u, v$中所在子树中随机各选一个点连起来,构成一棵新树,求新树直径的期望。 分析: 回顾一下和树的直径有关的东西: 求树的直径 从树的任意一点出发搜到最远的一点$x$,再从$x$出发搜到距$x$最远的一点$y$,那么$d(x,y)$就是树的直径。 阅读全文
posted @ 2017-05-08 11:10 AOQNRMGYXLMV 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 题意: 有$n(1 \leq n \leq 10^5)$个点,$q(1 \leq q \leq 10^5)$条路和起点$s$ 路有三种类型: 从点$v$到点$u$需要花费$w$ 从点$v$到区间$[l,r]$中的点花费为$w$ 从区间$[l,r]$中的点到点$v$花费为$w$ 求起点到各个点的最少花 阅读全文
posted @ 2017-04-12 19:56 AOQNRMGYXLMV 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 题意: 有一个无向连通图,没有重边没有自环,并给出顶点的权值和边的权值 定义一条路径$difficulty$值为该路径上最大的点权乘上最大的边权 定义函数$d(i,j)$为$i,j$之间的所有中路径最小的$difficulty$值 求$\sum_{i PII; const int maxn = 30 阅读全文
posted @ 2017-03-25 00:35 AOQNRMGYXLMV 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 题意: "题目链接" 给出$n$个字符串,求有多少对$(i,j),i \neq j$使得$s_i$与$s_j$拼起来是回文串 分析: 设$s_i,s_j$的长度分别为$L_i, L_j$,一共有如下三种情况: $L_i=L_j$,那么有$s_i$等于$s_j$的反串,$s_i,s_j$构成回文串,注 阅读全文
posted @ 2017-03-24 21:21 AOQNRMGYXLMV 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题意: 一个由大写字母组成的长度为$n(n \leq 75)$的字符串,每次操作可以交换相邻位置的两个字母,求最少操作多少次使字符串中不出现子串 分析: VK之外的字母具体是什么,我们并不关心,所以可以统一设它们为X 设$d(v,k,x,t)$表示,已经确定前$v$个 ,前$k$个 和前$x$个 为 阅读全文
posted @ 2017-03-20 23:03 AOQNRMGYXLMV 阅读(719) 评论(0) 推荐(0) 编辑
摘要: 题意: 有一个房间的形状是多边形,而且每条边都平行于坐标轴,按顺时针给出多边形的顶点坐标 还有一个正方形的扫地机器人,机器人只可以上下左右移动,不可以旋转 问机器人移动的区域能不能覆盖整个房间 分析: "官方题解" 阅读全文
posted @ 2017-03-20 18:50 AOQNRMGYXLMV 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一棵树,一个人可以在树上跳,每次最多跳$k(1 \leq k \leq 5)$个点 定义$f(s,t)$为从顶点$s$跳到顶点$t$最少需要跳多少次 求$\sum\limits_{s<t}f(s,t)$ 分析: 注意到$k$很小,为了方便转移,定义: $sz(u,i)$为$u$的子树中* 阅读全文
posted @ 2017-03-19 12:46 AOQNRMGYXLMV 阅读(904) 评论(4) 推荐(0) 编辑
摘要: 题意: 有两个$n \times m$的矩阵$A,B$,都是由$1 \times 2$的砖块铺成,代表初始状态和结束状态 有一种操作可以把两个砖块拼成的$2 \times 2$的矩形旋转$90^{\circ}$ 问如何操作才能使初始状态转化为结束状态,无解输出$ 1$ 分析: 不妨假设$m$为偶数, 阅读全文
posted @ 2017-03-18 18:53 AOQNRMGYXLMV 阅读(538) 评论(0) 推荐(0) 编辑
摘要: 题意: 有一个$1 \sim n$的排列$A$,有$q$个询问: 交换任意两个元素的位置,求交换之后排列的逆序数 分析: 像这种不太容易用线段树,树状数组维护的可以考虑分块 每$\sqrt{n}$个元素划分为一块,然后两端的块可以直接扫出逆序数的变化,中间的块可以用二分计算逆序数 在更新块的时候,可 阅读全文
posted @ 2017-03-18 16:09 AOQNRMGYXLMV 阅读(494) 评论(0) 推荐(0) 编辑
摘要: 题意: 定义一种合法的括号序列为:长度为正偶数,前半部分括号为左括号,后半部分括号为右括号 给出一个括号序列$s$,求其合法子序列的个数 分析: 枚举合法子序列中最右的左括号$s_i$,设$s_i$左边(包括$s_i$)有$L$个左括号,$s_i$右边有$R$个右括号 这样的合法子序列的个数为$\s 阅读全文
posted @ 2017-03-18 00:20 AOQNRMGYXLMV 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 题意: 有一个谷仓容量为$n$,谷仓第一天是满的,然后每天都发生这两件事: 1. 往谷仓中放$m$个谷子,多出来的忽略掉 2. 第$i$天来$i$只麻雀,吃掉$i$个谷子 求多少天后谷仓会空 分析: 分类讨论: 1. $n \leq m$ 每天都会把谷仓放满,所以第$n$后会变空 2. $n m$ 阅读全文
posted @ 2017-03-17 23:53 AOQNRMGYXLMV 阅读(255) 评论(0) 推荐(0) 编辑