04 2020 档案

摘要:发现还是不简单。。。想要得满分的话还是很困难的 。。。但是看了一下第一题不是很难,第二题通过动态规划,还是能得到80分,如果没有分析好的话搜索好像也能得30分还是40分。。第三题做不来就只考虑k=0的情况,也有20分,所以运气好的话能得到200分,不好100分吧~ 但是如果真让我来做,,,,算了吧, 阅读全文
posted @ 2020-04-27 20:43 sumoier 阅读(250) 评论(0) 推荐(0)
摘要:1、最大跳跃( jump.cpp ) hdu 1087 这个题目其实就是一个最长不下降子序列的题目,但是不同的是需要知道最大的序列和,比较基础 1、最大跳跃( jump.cpp ) hdu 1087 【问题描述】 最近有一个跳跃游戏十分受欢迎。 这个游戏可以由两个或两个以上的玩家玩。它由一个棋盘和一 阅读全文
posted @ 2020-04-14 10:18 sumoier 阅读(192) 评论(0) 推荐(0)
摘要:树型动态规划就是在“树”的数据结构上的动态规划。 从一个例题开始吧: hdu 1520 一棵有根树上,每个结点有一个权值。相邻的父结点和子结点只能选择一个,问如何选择,使得总权值之和最大。(邀请员工参加宴会,为了避免员工和直属上司发生尴尬,规定员工和直属上司不能同时出席。) 定义状态: dp[i][ 阅读全文
posted @ 2020-04-09 18:39 sumoier 阅读(466) 评论(0) 推荐(1)
摘要:区间DP 两个难点: 1、枚举所有可能的区间 2、状态转移方程 经典问题1:石子合并 1274:【例9.18】合并石子 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 5121 通过数: 3243 【题目描述】 在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定 阅读全文
posted @ 2020-04-06 20:16 sumoier 阅读(316) 评论(0) 推荐(1)
摘要:LIS:(最长上升子序列) LIS:一个序列,求它的最长上升子序列的最大长度。 ***关于LIS,一般有三种做法,先写下两种吧,一种就是O(n2)的DP算法;一种就是O(nlogn)的二分+贪心算法;还有一种也是O(nlogn)的树状数组的办法,先写一写前两种,以后再补吧。**** 解法一:经典做法 阅读全文
posted @ 2020-04-05 19:38 sumoier 阅读(219) 评论(0) 推荐(1)
摘要:1、搭配购买 一道并查集加上01背包的题目,通过并查集的方式将属于一个集合的物品封装成一个物品,然后就跟01背包做法相似。 【问题描述】 Joe 觉得云朵很美,决定去山上的商店买一些云朵。商店里有 n 朵云,云朵被编 号为 1,2,…...,n,并且每朵云都有一个价值。但是商店老板跟他说,一些云 朵 阅读全文
posted @ 2020-04-04 14:32 sumoier 阅读(203) 评论(0) 推荐(1)
摘要:一天好多杂事啊,好不容易做完了 来看一下今天添加个什么内容 还是先把心情写了来 想往后面学着走 但是自己的时间有点短 我学东西也很慢 事情太多了 哎。。 慢慢来吧 看什么时候能把前面的补完 感觉要放清明了 把清明的事情做完吧 阅读全文
posted @ 2020-04-03 16:42 sumoier 阅读(144) 评论(0) 推荐(1)
摘要:基本概念: 二叉搜索树又被称为二叉排序树,那么它本身也是一棵二叉树,那么满足以下性质的二叉树就是二叉搜索树: 1、若左子树不为空,则左子树上左右节点的值都小于根节点的值 2、若它的右子树不为空,则它的右子树上所有的节点的值都大于根节点的值 3、它的左右子树也要分别是二叉搜索树 例如:输入8 20 3 阅读全文
posted @ 2020-04-02 21:51 sumoier 阅读(334) 评论(0) 推荐(1)
摘要:什么是同构树: 给定两颗树T1和T2,如果T1可以通过若干次左右孩子交换变成T2,我们就称两棵树是同构的。 将整个过程拆分来看一下,增加一些二叉树的操作: 首先是二叉树的建立: struct tnode{ char data; int right,left; }; void buildtree(tn 阅读全文
posted @ 2020-04-02 21:33 sumoier 阅读(774) 评论(0) 推荐(1)
摘要:现在才发现这个感觉很好用, 一直都想把自己做过的题,总结的东西保存下来, 一直都没实现,导致前面做了很多东西都没有记录下来 现在一个一个来补上好麻烦啊 但是还是要做的得做 可能要补很多了一个一个来吧争取除开自己每天做的争取每天补一个板块的知识 555 加油吧争取把自己的这个过程给记录下来 今天补了一 阅读全文
posted @ 2020-04-02 19:16 sumoier 阅读(110) 评论(0) 推荐(0)
摘要:1、合并石子 https://www.cnblogs.com/Renyi-Fan/p/7392649.html(讲得很好)方法其实有很多种的 思路:现将石子的前缀和计算出来,状态为 f[i][j] 表示为合并 i 到 j 的最小值。 f[i][j]=min(f[i][j],f[i][k]+f[k+1 阅读全文
posted @ 2020-04-02 19:02 sumoier 阅读(1289) 评论(0) 推荐(1)
摘要:方格取数 Description 设有N×N的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示: 某人从图中的左上角A出发,可以向下行走,也可以向右行走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。 此人从A点到B点共走了两 阅读全文
posted @ 2020-04-02 15:25 sumoier 阅读(557) 评论(0) 推荐(0)
摘要:最近一直在做背包问题,就把以前的动态规划要也来总结一下下 1、数字金字塔(类似。摘花生等) 数字金字塔 Description 观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。 在上面的样例中,从13到 阅读全文
posted @ 2020-04-02 13:30 sumoier 阅读(285) 评论(0) 推荐(0)
摘要:一、01背包 对物品i只有两种选择:装入或者不装入 空间优化:要从后往前递减顺序遍历,f[j]=max(f[j],f[j-w[i]]+c[i]) 模板: #include <bits/stdc++.h> using namespace std; const int N=2005; int w[N], 阅读全文
posted @ 2020-04-02 12:10 sumoier 阅读(402) 评论(0) 推荐(0)