04 2021 档案
摘要:CSDN 只要我们不停下来,道路就会不断延伸。
阅读全文
摘要:https://blog.csdn.net/numb_ac/article/details/107438437
阅读全文
摘要:一、树的直径 树的直径有两种求法,分别是两次dfs和树形dp,而 Acwing350巡逻 恰好都用到了这两种方法,详见个人的csdn博客 https://blog.csdn.net/zhangzhang232/article/details/116202867 二、树上状态划分 树上DP其实就是将一
阅读全文
摘要:一、用二进制存状态 最短Hamilton路径 https://www.acwing.com/problem/content/93/ 从算法分析上来看,就是一道简单的最短路线性DP,但是既然要不重不漏地走,就需要保存已经走过的路径。此时容易想到用dfs求解(解法略)。但是对于最优化问题,无非就是要求不
阅读全文
摘要:一、解题基本步骤 状态机问题解题的第一步是画出正确的转移模型,其通常用一个状态机的图来进行表示。 可以从一道简单的题来开始认识状态机模型的画法。大盗阿福 https://www.acwing.com/problem/content/1051/ 第二步是根据转移模型,写状态转移方程,还要注意变量的初始
阅读全文
摘要:一、万恶之源——最长上升子序列 https://www.acwing.com/problem/content/1019/ 1.经典DP解法 设置f数组,以子序列的最后一个数i划分DP区间,求得最优解。注意最后要for循环扫一下。 代码略 2.二分查找 1 #include<iostream> 2 #
阅读全文
摘要:一、从简单题开始 1.运筹学都学过的逆推求线性DP P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles https://www.luogu.com.cn/problem/P1216 1 #include<cstdio> 2 #include<algorit
阅读全文
摘要:一、算法分析 基本思路就是枚举,还有利用vector的一些小技巧。注意的点是,最后的枚举方式要有一个小优化,不能外层对k进行枚举,如果那样会超时,因为两层循环都是n。而是应该开一个res数组,以组为单位去维护res数组。 二、代码及注释 1 #include<iostream> 2 #include
阅读全文
摘要:1.使用STL的vector容器时,对于一个未申请的空间,不要用赋值号为之加值,那样虽然不会报错但是会很慢!正确方式应该是用push_back()
阅读全文
摘要:一、思想 刚开始拿到这道题有点懵,但是很快确定了基本的解题方向:r,b,d三个参数,通过其中两个来确定另一个的合理范围,从而确定另一个是否合法。 然后开始造了几个数据,以 2 7 3 为例,可以考虑把2拆成一个一个的,则每个最大可以配一个4(因为1 + 3 == 4),所以对于这个样例,b的最大取值
阅读全文
摘要:一、算法分析1.首先深搜找一次直径。具体方法是先从1点(随便一个点都行)把树拎起来,然后找一条最长路p,再以p把树拎起来,找一条最长路q,最后p和q之间的最短路就是直径(第一次找的时候,最关键的是要记录下来路径上对应的边的id)(用vis数组保存起来,但是注意这个vis后面不会全部都赋值为-1)2.
阅读全文