09 2019 档案
摘要:POJ3417 Network (闇の連鎖) 树上差分 lca "POJ3417" "闇の連鎖" 奇奇妙妙的树上差分 主要边是树的结构 附加边让树的结构出现环 手画可以发现 设$xy$为附加边,假如第一次切断了$xy$通过树边相连的路径 也就是破坏了环 那么第二次就必定要切断$xy$ 那么就可以通过
阅读全文
摘要:Luogu_P1099 树网的核 树的直径 "题目链接" ~~题面好长,都不想看~~ 又是明明显显的树的直径的题 可以有很多种答案更新方法: 方法一 可以$O(n^2)$的枚举核的一端$p$得出$p+s$和离他们的最远的点 方法二 可以二分偏心距,$O(nlogsum)$ 方法三 求出最长链,然后分
阅读全文
摘要:Luogu P3629 [APIO2010]巡逻 树的直径 "题面链接" 看题就知道应该是连树的直径,也就是最长链 $ans=2(n 1) l1+1$ 但是$k\le2$ 当他是$2$的时候怎么处理??? 只好再跑一遍求树的直径 我们先把之前求出的$l1$的所有边变为$ 1$ 之后再求 $ans=2
阅读全文
摘要:Luogu_P2886 [USACO07NOV]牛继电器Cow Relays 图论 矩阵快速幂 "题目链接" "POJ3613" 题意就是求经过k条边的从st到ed的最短路 我们假设$a[i][j]$为经过一条边的最短路 $a2[i][j]$为经过两条边的。 那么$a2[i][j]=min(a[i]
阅读全文
摘要:Luogu_P3302 [SDOI2013]森林 主席树,启发式合并,lca "luogu题面" 求树上路径的第k大,树之间还有合并。 明显是主席树再加合并。 先说链上第k大,其实就是$Tx+Ty Tlca Tlcafa$ $T$表示权值线段树。 主席树维护的是从根节点到当前节点的前缀和。 ask的
阅读全文
摘要:CF1167D Bicolored RBS 短码贪心 "题目链接(洛谷)" 贪心题。 遇见左括号分入深度浅的颜色 遇见右括号分入深度深的颜色 ~~代码真的短~~ 代码如下: cpp{.line numbers} include using namespace std; const int maxn=
阅读全文
摘要:题面:https://www.luogu.org/problem/P4766 非常容易就想到以时间为区间来DP。 但是时间比较大,需要离散化。 转移方程就是: 这样转移的原因是有一些区间是没有外星人的,这些区间都是0。 所以不能直接memset所有的决策点。 就需要找一下这个区间是不是有外星人,最大
阅读全文
摘要:题面:https://www.luogu.org/problem/P2161 可以用set水。 先把 l , r 存在结构体里面。 重定义小于号。 让右端点小于左端点。就是没有交。 那么find找的时候就是找a.l<b.r && b.l<a.r 。 也就是相交的。 代码如下:
阅读全文
摘要:题面:https://www.luogu.org/problem/P2519 题面真简单。 设这个人的名次为他前面的人数加1。 那么我们可以知道n-bi-ai就是并列的人数。 设l为ai+1设r为n-bi。 那么并列人数就是r-l+1。 那么自然就是求若干的不相交的段,使他们的价值和最大。 设fi为
阅读全文
摘要:Luogu题目:https://www.luogu.com.cn/problem/CF600E 值域线段树加合并。 基本上就是裸的。 代码如下:
阅读全文
摘要:题面:https://www.luogu.com.cn/problem/P4556 对于在一条(x,y)路径上将z加1。 就可以树上差分。 x和y都是加1。lca是减1,lca的father也是减1。 但是由于又有很多种不一样的种类。 还需要每个点维护一个线段树。 合并的时候求哪个种类是max。 最
阅读全文
摘要:题面:https://www.luogu.org/problem/CF242E 因为XOR的lazy tag不可以叠加。 所以就弄得比较麻烦。 需要把每个数二进制拆分。 也把lazy tag二进制拆分。 0异或一个数还是那个数,1异或一个数就是取反。 所以遇见tag的第i位为1的时候就用总数减去现在
阅读全文
摘要:题面:http://codeforces.com/contest/311/problem/B Luogu题面:https://www.luogu.com.cn/problem/CF311B 斜率优化DP 我们设t[i]=小猫结束时间-从1到它所在的地点的距离和。 也就是从什么时候开始出发可以让猫不等
阅读全文
摘要:题面:http://codeforces.com/contest/1156/problem/E Luogu翻译:https://www.luogu.com.cn/problem/CF1156E 话说Luogu要改域名了。 大意:给定一个长度为n的排列p,求有多少区间[l,r]满足,p[l]+p[r]
阅读全文
摘要:题面:http://poj.org/problem?id=1187 很自然想到设f[i][j][k][d]为i个小括号,j个中括号,k个大括号,深度小于等于d的解。 那么答案自然就是f[i][j][k][d] - f[i][j][k][d-1] 。 但是最关键的不是在这里,而是如何转移。 我们可以假
阅读全文
摘要:题面:https://www.luogu.org/problem/P1436 设f[k][i][j][x][y]为切了k次从(i,j)到(x,y)矩形的最大解。 那么DP方程就很好写出来了。 虽然有一点点长,但是还是很好理解。 就是把当前的分为两半。 一半切k-1刀,另外一半是这1刀。 这样就合并成
阅读全文
摘要:题面:https://www.luogu.org/problem/UVA12983 求数列有多少个长度为m的严格上升子序列。 暴力很好打,牛客网竟然过了。 f[i][j]表示到第j位匹配了长度为i的严格上升子序列。 代码如下: 果然过不了n2m的复杂度很尴尬。 那么尝试用数据结构优化。 发现,其实每
阅读全文
摘要:题面:https://www.luogu.org/problem/P4644 和上一篇题解背景基本一样,就是改成了求最小的花费。 本来应该是通过DP和数据结构优化的。 但是最小花费好像可以用最短路。 将每个时间段用自己的价值连边。 再把每个时间向前一个时间连为0的边。 这样可以保证最多可以跑N个时间
阅读全文
摘要:题面:http://poj.org/problem?id=2376 和luogu的题面有不同,并不是询问最小的代价。 而是询问最小点数。 那么就可以用贪心解决了。 代码如下:
阅读全文
摘要:题目链接:https://www.luogu.org/problem/P2704 蓝书状压DP例题。 读入时把山全部改为1,平地0。 还是先考虑预处理。 把所有单行合法的点记录下来,也就是1的左右两格都是0。 设f[i][j][k],表示在i行从i-1的j转移到k的最多的炮兵数。 那么肯定j和k所代
阅读全文
摘要:题目链接:http://poj.org/problem?id=2411 把每一行当作一个二进制状态。 1表示是一个竖着的1*2的方格。 0表示其他状态。 那么显然当i-1的状态k能转移到i的j: 1.j 和 k 的按位与为0。(有1必须要0,0也可以有1) 2.j 和 k 按位或每一段0都有偶数个。
阅读全文
摘要:题目链接:https://www.luogu.org/problem/P1502 其实一眼看不出扫描线。 我们可以把每一个点都变成一个长宽为w和h的矩形。 左边的边是+w,右边的边是-w。 线段树维护区间max和lazy tag。 然后扫描线求max。 代码如下:
阅读全文
摘要:模板题:https://www.luogu.org/problem/P5490 这个是用于求面积并的扫描线。 显然只有矩形的两边会使答案发生变化。 所以对每一个边做出一个四元组(x,yl,yh,1/-1) x就是x坐标 yl,yh是这条线的纵坐标,1为左端点,-1为右端点。 然后就可以用线段树模拟线
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/1033/B 再次吐槽CH 区间gcd再加区间修改。 一般求gcd的时候辗转相除法。 gcd(x,y)=gcd(x,y-x) 那么可以把这个公式推到3个项。 gcd(x,y,z)=gcd(x,y-x,z-y) 可以看出
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/1032/A (话说CH挂了,可以在牛客上面交) 因为x是按顺序的,那么就是求一个逆序对。 考虑树状数组求逆序对。 两个数组,lt[ ],rt[ ]。 lt[i]表示 a[i] 前面有几个数比它小。 rt[i]表示 a
阅读全文
摘要:题面:https://www.luogu.org/problem/P1892 朋友就是普通并查集,普通合并。 敌人的敌人就是朋友怎么实现。 设a和b是敌人 那么将a和b+n合并,a+n和b合并。 这样的话就可以实现敌人的敌人就是朋友了。 设b和c是敌人。 c和b+n合并之后,就相当于和a合并到一个集
阅读全文
摘要:题面:https://www.luogu.org/problem/P2461 拿到题面,矩阵快速幂裸题。 开始推矩阵。 推出的矩阵是这个样子: 右边是ans矩阵,左边是base矩阵。具体的可以看代码。 就可以开心的快速幂了! 但是由于求的是m到n之间的。 需要两次。 而且注意判断是不是小于K。 但是
阅读全文
摘要:题面:https://www.luogu.org/problem/P2243 建边。 对角线有相连路的边权为0,没有的为1。 然后双端队列bfs求最短路。 将边权为0的到的点从队头入队。 边权为1到的点从队尾入队。 这样可以保证最优。 代码如下:
阅读全文
摘要:题面:https://www.luogu.org/problem/P2962 标签有高斯消元。 但是并没有发现怎么用。 于是搜索。 2的35次方必然不可以接受。 双向搜索。 但是这个题不是从起始和终点搜。 而是起始和中点 有点怪 这样就可以降低复杂度了。 代码和注释如下:
阅读全文
摘要:题面:https://www.luogu.org/problem/P2044 矩阵乘法裸题。 关键在于base和ans矩阵。 经过计算待定系数可以得到。 ans = { (x0,1) , (0,0) } base = { (a,0) , (c,1) } 如代码所示。 然后就可以快乐的矩阵乘法了! 但
阅读全文
摘要:题目链接: Luogu:https://www.luogu.org/problem/P2054 bzoj:https://www.lydsy.com/JudgeOnline/problem.php?id=1965 找到规律: 上一次在x位置,下一次就会在 x*2%(n+1) 位置 那么就是要求: x
阅读全文
摘要:题目链接:https://www.luogu.org/problem/P1516 由题目可以得出: x+k*m=y+k*n(mod l) 将mod l放入公式: (x-y)=(n-m)*k+l*t 设n-m为w 设x-y为c 则 k*w + l*t = c 那么就可以用exgcd来求解了。 先解出
阅读全文
摘要:题目链接: CF:http://codeforces.com/contest/161/problem/D Luogu:https://www.luogu.org/problem/CF161D 点分治的裸题。 点分治关键在于如何更新答案。 找根和分治的步骤很简单。 这道题要求树上路径刚好为K的个数。
阅读全文

浙公网安备 33010602011771号