随笔分类 - 题解
摘要:题面: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://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次方必然不可以接受。 双向搜索。 但是这个题不是从起始和终点搜。 而是起始和中点 有点怪 这样就可以降低复杂度了。 代码和注释如下:
阅读全文

浙公网安备 33010602011771号