摘要: 题目 算法1 栈 括号配对通常用栈,如果发现后括号和栈顶的元素相匹配,那么将其推出。 如果所有元素都是合法(这里的合法是题目定义的),且按顺序入栈(不管是前括号还是后括号都要入栈,只有配对了才弹出),那么最后栈应该是空的;这个问题就是讨论某一括号序列是否合法。 现在给一组括号序列,需要求出最长的合法 阅读全文
posted @ 2023-01-27 12:42 Sankano 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 纸牌均分问题 此题与七夕祭和货舱选址相似,所以在此不对纸牌均分问题做解释了。 只是有一个小小的注意点: 因为y最后会变为相同值,并要求移动次数最小,那么只需要记录每一个士兵的y坐标值,然后即可转换为货舱选址问题。 但因为x是不一样的,并且最后是有序连接排列的,所以我们用一个小技巧:用货舱选址的方法带 阅读全文
posted @ 2023-01-27 00:01 Sankano 阅读(6) 评论(0) 推荐(0) 编辑
摘要: ### 推导 本题有一个重要的性质:**如果 $0 (a-c)^2+(b-d)^2$** 证明: 设不等式两端为1,2式; 则$(a-d)^2+(b-c)^2 = a^2+b^2+c^2+d^2-2ad-2bc$,$(a-c)^2+(b-d)^2 = a^2+b^2+c^2+d^2-2ac-2bd$ 阅读全文
posted @ 2023-01-26 23:34 Sankano 阅读(26) 评论(0) 推荐(0) 编辑
摘要: > [题目](https://www.acwing.com/problem/content/128/) ### 算法1 前缀和,$O(n^4)$ ``` #include using namespace std; const int N = 110; int s[N][N]; int main() 阅读全文
posted @ 2023-01-26 13:16 Sankano 阅读(12) 评论(0) 推荐(0) 编辑
摘要: ## 深度优先搜索,剪枝(贪心) 题目希望我们找出最小的长度$len$,使得木棒能够粘成$n$个$len$的木棍。 首先遍历长度(范围小),但是请不要用二分,因为$len$不存在单调性和两段性。 暴力$dfs$一定是过不了的,那么我们先从拼接入手: 从一堆长度不等的木棒中,拼出已知长度的木棍,很容易 阅读全文
posted @ 2023-01-23 17:09 Sankano 阅读(31) 评论(0) 推荐(0) 编辑
摘要: ### 差分,推导 > 计数类的区间修改一定要考虑用差分 给定一个长度为 $n$ 的数列 $a1,a2,…,an$,每次可以选择一个区间 $[l,r]$,使下标在这个区间内的数都加一或者都减一。 首先确定差分的方法,然后你会发现:当数组中所有元素相等时,$b_2 = b_3 = ... = b_n$ 阅读全文
posted @ 2023-01-21 13:02 Sankano 阅读(17) 评论(0) 推荐(0) 编辑
摘要: ### 递推,位运算 本题的限制较多,所以爆搜加上剪枝是可以过的; 这里采用枚举操作的方法,可以大大提高运行效率。 首先给你一副$5*5$的$0,1$地图,要求你用十字变换的方法使地图全部变成$1$,并且操作数小于6次。 这里按行来看,如果你改变了第$i$行的$j$号灯,那么$j$号灯上下两行的$j 阅读全文
posted @ 2023-01-21 12:17 Sankano 阅读(23) 评论(0) 推荐(0) 编辑
摘要: ### 数论,推导,分治 $O(M*log(x)*L)$ > 实数域的分治,多使用折半的方法,这一点在图论上也是一样的 先入暴力,dfs所有约数,发现时间复杂度太高了 $^_^$。 其实约数之和不用遍历约数,因为$A,B$都是合数,可以得出: $$ A^B = (P_1^{k_1} * p_2^{k 阅读全文
posted @ 2023-01-15 12:59 Sankano 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 枚举 $O(n^7)$ 非哈希做法 题目数据$50$,可以暴力枚举每一个位置某种边长的情况是否成立; 边长$len$从大到小遍历,一旦找到直接退出。 由于最坏情况$n^7$会超时,则通过“剪枝”将匹配的过程缩减; 最终的时间复杂度约为$n^5$。 AC code #include <iostream 阅读全文
posted @ 2022-10-06 09:54 Sankano 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 经典染色法判二分图1 因为需要把仇视的人分成两组,并且每组内的人员不得相互仇视; 所以这道题并非匹配,而是要我们判断给出的关系是否满足二分图。 名字用$RBT$存,每次查询 $log n$。 时间复杂度:$O( mlogn + 2*n )$ #include <iostream> #include 阅读全文
posted @ 2022-08-28 09:35 Sankano 阅读(27) 评论(0) 推荐(0) 编辑