模板题,注意a数组和b数组的区别就行了
solution-code3192
把图上的每个点拆成两个点,按照老套路连边,把交换的连边流量无穷、代价为1,其余的边流量为1、代价为0,如果满流就输出代价
注意num1和num2数组的值,这里的id不能重复!
solution-code4845
KD树模板题,注意细节(mn和mx等)
Insert的时候,可以使用In和Out函数使得程序更简洁、美观
[luogu1174]打砖块
注意:子弹没有的时候不能打有奖励的砖块,打有奖励的砖块可以抽象成借子弹w1[i][j]
代表在能借子弹的情况下第i列用了j颗子弹能够达到的最高分数,w2代表不能借子弹的最高分数f1[i][j]
代表能借子弹的情况下从左往右打了i列用了j颗子弹能够达到的最高分数,f2代表不借子弹的最高分数
solution-code1901
注意优先级!!!‘!’的优先级比&的优先级高,要打括号
solution-code2023
此题有三个类似的插入操作,可以用一个函数简化代码量
solution-code2131
使用4-hash节省判重时间
判断就是从字符串两端搜索C和W,然后确认中间元素是否匹配target
暴力找COW后重新组合直接递归搜索
solution-code1132
没什么好说的,$O(n)$的简单DP
solution-code3734
环形序列:拆环为链,取maxx和sum-minn(刨去中间一块的剩余的链)的最大值
不能是整个序列的和:如果结果是序列的和,那么减去序列最小值
注意细节!
solution-code2728
一道很麻烦的线段树模板题
由于要进行翻转,0和1的数量、左边最长、右边最长以及区间答案都需要处理
询问操作就对需要的区间进行合并,用类似pushup的方法将TreeNode传递给上一层
注意:
- 翻转的时候tag标记也要做相应的改变(如果没有打标签就不能修改!)
- tag标签和rev标签会冲突,由于rev标签会修改tag标签的值,那么必须先处理rev标签才能处理tag标签
- Lmax和Rmax的含义,不是子树的左儿子或右儿子的最长连续值,而是子树全部的最长连续值
- 在线段树操作中,修改操作直接修改单层,pushdown操作修改其儿子