01 2023 档案
摘要:AcWing 133. 蚯蚓 思考 朴素版的暴力写法就是全部遍历,每次操作后再排序。 而聪明一点的人就用单调队列,但是m的范围是七百万,这是非用线性算法不可(堆每次维护是$O(n log n)$。 但是突破口在哪里?其实你用优先队列的时候已经想到了。 既然题目说除了切开的蚯蚓,其他蚯蚓每过一秒长q的
阅读全文
摘要:> [题目](https://www.acwing.com/problem/content/110/) ### 思考 看了很久才发现有一个很大的错误观点:空格不代表任何数,既非0也非9。 因为这个问题调了很久。 看到奇数码游戏这个话题,我们就先把它转换为**还原问题**; 那么我们空开空格这个问题,
阅读全文
摘要:### 思考? 样例太弱了,需要自己出样例。分析后就会发现这道题是找最优解的题目,也就是贪心。 先保证完成的任务更多,再保证收入更多。当然实现的时候是同时(考虑)进行的 权值考虑:由于任务的用时对收入的影响更大,那么按任务用时从大到小排序,当用时相同时再考虑任务难度大小。 为了保证遍历机器时更快,机
阅读全文
摘要:题面 总记 刚入手这道题似乎有些手足无措,是深搜求全排列,还是二分? 题意就是国王是个小气鬼。先分析样例,易得最佳序列如下: 1 1 2 3 4 6 7 4 通过样例会发现,只要$a$越小,$b$越大,那么国王付出的奖赏就越少,即便是奖赏最多的大臣奖赏也是所有情况中最少的。 但是$a,b$的关系很矛
阅读全文
摘要:题目 算法1 栈 括号配对通常用栈,如果发现后括号和栈顶的元素相匹配,那么将其推出。 如果所有元素都是合法(这里的合法是题目定义的),且按顺序入栈(不管是前括号还是后括号都要入栈,只有配对了才弹出),那么最后栈应该是空的;这个问题就是讨论某一括号序列是否合法。 现在给一组括号序列,需要求出最长的合法
阅读全文
摘要:纸牌均分问题 此题与七夕祭和货舱选址相似,所以在此不对纸牌均分问题做解释了。 只是有一个小小的注意点: 因为y最后会变为相同值,并要求移动次数最小,那么只需要记录每一个士兵的y坐标值,然后即可转换为货舱选址问题。 但因为x是不一样的,并且最后是有序连接排列的,所以我们用一个小技巧:用货舱选址的方法带
阅读全文
摘要:### 推导 本题有一个重要的性质:**如果 $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$
阅读全文
摘要:> [题目](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()
阅读全文
摘要:## 深度优先搜索,剪枝(贪心) 题目希望我们找出最小的长度$len$,使得木棒能够粘成$n$个$len$的木棍。 首先遍历长度(范围小),但是请不要用二分,因为$len$不存在单调性和两段性。 暴力$dfs$一定是过不了的,那么我们先从拼接入手: 从一堆长度不等的木棒中,拼出已知长度的木棍,很容易
阅读全文
摘要:### 差分,推导 > 计数类的区间修改一定要考虑用差分 给定一个长度为 $n$ 的数列 $a1,a2,…,an$,每次可以选择一个区间 $[l,r]$,使下标在这个区间内的数都加一或者都减一。 首先确定差分的方法,然后你会发现:当数组中所有元素相等时,$b_2 = b_3 = ... = b_n$
阅读全文
摘要:### 递推,位运算 本题的限制较多,所以爆搜加上剪枝是可以过的; 这里采用枚举操作的方法,可以大大提高运行效率。 首先给你一副$5*5$的$0,1$地图,要求你用十字变换的方法使地图全部变成$1$,并且操作数小于6次。 这里按行来看,如果你改变了第$i$行的$j$号灯,那么$j$号灯上下两行的$j
阅读全文
摘要:### 数论,推导,分治 $O(M*log(x)*L)$ > 实数域的分治,多使用折半的方法,这一点在图论上也是一样的 先入暴力,dfs所有约数,发现时间复杂度太高了 $^_^$。 其实约数之和不用遍历约数,因为$A,B$都是合数,可以得出: $$ A^B = (P_1^{k_1} * p_2^{k
阅读全文