11 2018 档案
摘要:传送门 分析 不难想到如果这个图是一个DAG则答案就是图的最长路 于是我们考虑有环的情况 我们发现一个环上的所有点颜色一定不相同 于是我们发现答案就是缩点之后跑一遍点权最长路 点权就是这个强联通分量中的点的数量 注意求最长路的时候要用拓扑排序求 代码
阅读全文
摘要:传送门 分析 我们假设主视图的颜色为1 如果只有两种颜色,且能求出w[x][y]表示一列中放置x个1和y个2的方案数 则我们可用dp[i][j][k]表示考虑到第i列放j个1和k个2的方案数,这样的复杂度为$O(n^5)$ 我们可以把颜色2和颜色3统一看成颜色2,最后方案数乘上$C_{b+c}^b$
阅读全文
摘要:传送门 分析 我们考虑把网格图转换为一个对偶图 然后我们每次删一条边就是将对偶图上对应的两个点用并查集连接起来 每次查询看是否联通即可 代码
阅读全文
摘要:传送门 分析 设dp[i]为进行i轮的最小值 所以不难得出dp[i]=Min(dp[i],dp[j-1]+(i-j+1)*dij(j,i)+k) dij(L,R)表示在[L,R]这几天的最小值 处理这几天哪些点不能走然后求最短路即可 注意dp[0]=-k 代码
阅读全文
摘要:传送门 分析 https://www.luogu.org/problemnew/solution/P3980 代码
阅读全文
摘要:传送门 分析 我们知道无论往左走还是往右走一定都是往不低于这个点的地方走 于是我们可以考虑用倍增来维护一个点向左和向右走$2^i$最远分别能走到哪里 我们可以先用单调栈求出直走一步的情况,之后再处理倍增数组 值得注意的是有可能一直往左走不是最优情况,而先向右再想左会使答案更优 于是le[x][i]=
阅读全文
摘要:传送门 分析 我们考虑把每个A[i]考虑为山峰的高度,每次的B考虑为海平面 于是我们知道对于A[i]和A[i-1],如果A[i-1]<A[i]则在A[i-1]<B<=A[i]时会使陆地总数加一 于是树状数组维护即可 代码
阅读全文
摘要:传送门 分析 自然想到二分 我们二分一个长度,之后考虑如何线性判断是否合法 我们可以维护一个单调队列表示从i开始的长度为d的区间和的最大值 每次用一段区间和减去它包含的长度为d的区间最大值即可 但是我们发现这个数据范围有那么一点点会t的征兆 于是我们考虑消除掉二分的log 于是我们继续用单调队列维护
阅读全文
摘要:传送门 分析 由于我不知道壶里到底有多少水,那么显然我第一次 分别向两个杯子分别到 L/2 +1 和 L/2 才是最优的.(这样既维护了两个人的差值不超1,又正好倒了L的水).那么接下来如果壶里还有水的话,我每次像水少的那个杯子里倒2就好了(这也是为什么维护一开始二者差为1的原因),那么就是 (r
阅读全文
摘要:传送门 分析 我们考虑用所有的情况减去不合法的情况 不难想出所有情况为$C_n^3$ 于是我们考虑不合法的情况 我们知道对于一个不合法的三元组$(a,b,c)$一定是修改后$a<b,b>c$ 于是我们可以离散化后用线段树维护每个点被覆盖了几次 所以每次对于一个点$i$,比它大的点的个数即为在它前面修
阅读全文
摘要:传送门 分析 首先我们发现$k$位数实际就是一位的情况的$k$次方 考虑一开始的总方案数是$2^{nm}$ 我们每一次枚举其中有$i$行$j$列 对于这种情况的容斥系数为$(-1)^{i+j}$ 方案数为$C_n^i*C_m^j*2^{(n-i)(m-j)}$ 表示$n$行选$i$行,$m$列选$j
阅读全文
摘要:传送门 分析 每次拿a中最大的去匹配b中最小的 至于原因画个图感性思考一下就可以啦 代码
阅读全文
摘要:传送门 分析 经典的树型DP 我们记录dp[i][0/1]表示i的子树中到i的长度分别为偶数和奇数的长度和 dp2[i][0/1]则表示不在i的子树中的点到i的长度分别为偶数和奇数的长度和 然后根据边的长度情况转移一下就可以了 代码
阅读全文
摘要:传送门 分析 在经过若干次操作之后一定会产生一堆环 而我们又发现从一个点到另一个点实际可以经过所有环 于是问题就转换成了$k_1s_1 + k_2s_2 + ... + len = t$ 其中$s_i$为每个环的长度,$len$为两点间距离 于是每次gcd求一下就行了 注意两点间距离不用求LCA,用
阅读全文
摘要:传送门 分析 先用AC自动机将所有字符串存起来,之后我们从根节点跑一遍dfs 判断时我们只需要判断这个环有没有任意一个字符串的结尾就可以判断是否安全了 注意一个节点的信息需要累加上它fail指针所指位置的信息 代码
阅读全文
摘要:传送门 分析 01trie树好题! 我们先考虑将序列变为前缀和形式,在从1到n遍历每一个i 对于每一个i,我们把pre[i]插入trie中,在求出pre[i]与之前数的最大异或值 于是我们就可以得到dp[i]表示前i个数中是最大异或值 转移为dp[i]=Max{dp[i-1],q(pre[i])}
阅读全文
摘要:传送门 分析 我们可以对一个数列求前缀和,如果pre[l]=pre[r]则我们可以知道区间[l,r]一定不合法 于是我们就要让不合法的区间尽量少 我们知道对于一个数$x$,他只受x和$(2^k-1)$^$k$有关 而根据小学奥数所学,当这两个数字的数量最接近是答案最优 详见代码 代码
阅读全文
摘要:传送门 分析 首先一个很重要的性质是每个数至少出现一次 所以只有一个数会出现两次 我们只需要求出n+1个数选k个数的方案数再减去重复的部分即可 重复部分于两个相同数中间的距离有关,详见代码 代码
阅读全文
摘要:传送门 分析 记录区间最大值,线段树上二分找比这个点大的最靠前位置即可 代码
阅读全文
摘要:传送门 分析 居然卡哈希数,万恶的出题人...... 感觉我这个方法似乎比较呆,我的代码成功成为了全网最慢的代码qwq 应该是可以直接哈希的 但由于我哈希学的不好又想练练线段树维护哈希,于是就写了个线段树维护了一下哈希值 详见代码 代码
阅读全文
摘要:传送门 分析 一道有意思的小题... 我们发现如果$(1,1)$为白色,则将其变为白色需要偶数次操作,而如果为黑色则需要奇数次操作 我们知道要让A赢需要奇数次操作,所以我们只需要判断$(1,1)$的颜色即可qwq 代码
阅读全文
摘要:传送门 分析 首先我们不难想到我们一定可以将每一个点分开算,然后看这个点被几个矩形包含 于是对于位置为$(i,j)$的点它被包含的次数为$i * (n-i+1) * j * (m-j+1)$ 这个式子的意义为,对于在第$i$行的点,它上面可以选$0$~$(i-1)$行,它下面可以选$0$~$(n-i
阅读全文
摘要:传送门 分析 我们首先想到的自然是根据大小关系建图,在这之后我们跑一遍拓扑排序 但是由于l和r的限制关系我们需要对传统的拓扑排序做一些改变 我们考虑将所有入度为0且现在的拓扑序号已经大于等于l的点放入一个优先队列,这个优先队列以r为关键字从小到大排序,这样我们就可以保证r小的点被排在前面 但是我们发
阅读全文

浙公网安备 33010602011771号