OJ-atcoder
pocket_legend
这个作者很懒,什么都没留下…
展开
-
AGC 021D Reversed LCS [dp]
Descripion: 给定一个字符串,可以更改其中的kkk个字符,要求最大化该字符串与其翻转字符串的LCSLCSLCS长度,求该长度。Solution: dpi,j,kdpi,j,kdp_{i,j,k}表示区间[i,j][i,j][i,j]修改了kkk个字符最长的LCSLCSLCS。很明显如果没有修改最长的LCSLCSLCS为最长回文子序列,那么每次考虑两端字符是否匹配或者修改或者不...原创 2018-03-08 17:57:32 · 231 阅读 · 0 评论 -
ARC076F Exhausted? [Hall定理]
Description: nnn个人,每个人可以选[1,li][1,li][1,l_i]和[ri,m][ri,m][r_i,m]的位置坐下,问最少有多少个人没有位置。Solution: 根据HallHallHall定理,我们有最大匹配=n−|S−Λx|=n−|S−Λx|=n-|S-\Lambda{x}| 所以最少人数即为|S−Λx||S−Λx||S-\Lambda{x}|,枚举右端点...原创 2018-04-04 19:58:26 · 236 阅读 · 0 评论 -
ARC063F Snuke's Coloring 2 [单调栈+线段树]
Description: 二维平面上有一些点,我们可以把过这个点且平行于坐标轴的直线和边框夹成的区域涂黑。问最后剩下白色区域的最大周长(显然是一个矩形)。Solution: 我们可以发现这个矩形肯定经过x=w2或者y=h2x=w2或者y=h2x=\frac{w}{2}或者y=\frac{h}{2}。那么我们可以考虑枚举上下边界,这样可以做到O(n2)O(n2)O(n^2)。然后考虑优化...原创 2018-04-04 19:51:25 · 579 阅读 · 0 评论 -
AGC017D Game on Tree [博弈论]
Description: 树上删边游戏。Solution: 具体见程序。#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;int n;int sg[maxn];vector<int> G[maxn]; void dfs(int u, int last) {...原创 2018-04-11 17:58:19 · 208 阅读 · 0 评论 -
AGC002D Stamp Rally [整体二分]
Description: 一张无向联通图,给两个顶点xixix_i,yiyiy_i,问需要最大边的编号最小使得和两个点联通的点数>=zi>=zi>=z_i。Solution: 整体二分,并查集维护连通块大小。#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;...原创 2018-04-11 17:10:45 · 203 阅读 · 0 评论 -
ARC068E Snuke Line [树状数组]
Description: mmm个区间,对于每个ddd,每ddd个位置插一个点,问每个ddd被多少个区间覆盖。Solution: 按照区间长度排序,小于间隔的最多覆盖一个点,那么树状数组差分解决,大于的肯定覆盖。#include <bits/stdc++.h>using namespace std;const int maxn = 3e5 + 5;int n,...原创 2018-04-11 06:58:23 · 151 阅读 · 0 评论 -
AGC014E Blue and Red Tree [启发式合并]
Description: 一棵树的边全部是蓝色的,每次可以选择一条全是蓝色边的链,删除其中一条边并用红边连接链的端点。问是否可以变成另一棵树。Solution: 倒着考虑这个过程,发现每次相当于连接两个同时在两棵树都有边的两个点,然后缩成一个连通块。那么用并查集维护连通块,setsetset维护相邻的点,启发式合并就行了。#include <bits/stdc++.h...原创 2018-04-10 15:37:47 · 140 阅读 · 0 评论 -
AGC001E BBQ Hard [dp]
Description: 求∑ni=1∑nj=1,j!=iC(ai+aj+bi+bj,ai+aj)∑i=1n∑j=1,j!=inC(ai+aj+bi+bj,ai+aj)\sum_{i=1}^{n}\sum_{j=1,j!=i}^{n}{C(a_i+a_j+b_i+b_j, a_i+a_j)}Solution: 这个式子很像网格图中的路径方案数,等于从(−ai,−bi)(−ai,−bi)...原创 2018-03-31 11:01:43 · 279 阅读 · 0 评论 -
ARC 066E Addition and Subtraction Hard [dp]
Description: 给一个序列和符号,求添加括号使和最大。Solution: 由于括号最多两层,并且只可能在符号前面添加括号,所以设计dp[i][0/1/2]dp[i][0/1/2]dp[i][0/1/2]表示当前前面剩余几个括号未匹配的最大值,转移考虑加不加括号以及正负号即可。#include <cstdio>#include <cstring>...原创 2018-03-09 22:33:54 · 285 阅读 · 0 评论 -
AGC001F Wide Swap [线段树+拓扑排序]
Description: 给出一个排列ppp,两个元素可以交换当且仅当|pi−pj|=1|pi−pj|=1|p_i-p_j|=1且|i−j|>=k|i−j|>=k|i-j|>=k,求ppp的最小字典序。Solution: 转换一下,构造序列qqq,qpi=iqpi=iq_{p_i}=i,等价于求qqq的最小字典序。 那么现在考虑相对位置不变的两个数。对于一对<i,j...原创 2018-04-12 20:30:54 · 367 阅读 · 0 评论