自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 贪心算法经典例题分析

贪心经典例题一、区间覆盖问题例题:洛谷P1803这是一个非常简单的区间覆盖问题。针对此类问题,最佳的贪心算法应为将每一个区间的结束时间从小到大排序。令所选的第 i 个区间的结束时间为 e[i] ,只需从后面找到一个区间 j 使得 j 的开始时间 b[j] >= e[i] 即可(因为已经排好序了)。这样的贪心策略也很好证明,越早结束就能有更多的时间选取更多的区间。实现代码如下#include<bits/stdc++.h>using namespace std;#defin

2021-09-06 20:34:32 1054

原创 树形DP例题讲解

T1分析:我们可以很清晰的发现,这是一道树形dp的问题,找最短链的方法很简单,就是数叶节点的个数,然后就可以考虑如何去DP了。我们先从下面这张图来分析:我们可以定义一个 mini[u] 来表示当前点的编译代价总值,dp[i][j]表示第i个点,j为特征值,表示的是第i号点的儿子的编译代价的总值。所以可以得到一个方程:(1) mini[u] = min ( mini[u] , dp[...

2019-08-03 11:27:25 246

原创 2019暑期第一届何山杯题解

Day1分析:贪心即可,从最高位开始扫,找1/*对于2进制,越高位有1,则数字越大。 算法思想: 此题本质就是统计序列中每一个2进制位上是1的数的个数是否大于2个,若大于2个则意味着 最终该位&的结果,其该位上一定是1.那么按照从高位到低位来依次处理就可以解决。 算法步骤: 从最高位到最低位(i = 30 ~ 0)依次枚举判断:1、判断当前第 i 位上是 1 的数并统...

2019-08-01 21:31:09 179

原创 差分约束

差分约束是一种特殊的N元一次不等式,它包含N个变量X1~Xn以及M个约束条件,每个约束条件都是由两个变量作差构成的,形如Xi-Xj≤Ck,其中Ck是常数(正负均可),1≤i,j≤N,1≤k≤M。我们要解决的问题就是,求一组解X1=a1,X2=a2······Xn=an,使所有的约束条件得到满足。

2019-07-25 20:20:38 1774

翻译 如何用CSDN-markdown编辑器写博客

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2019-07-24 11:25:27 127

原创 洛谷P4513解题报告

【题目描述】(题目链接)在小新家附近有一条“公园路”,路的一边从南到北依次排着nn个公园,小白早就看花了眼,自己也不清楚该去哪些公园玩了。一开始,小白就根据公园的风景给每个公园打了分-.-。小新为了省事,每次遛狗的时候都会事先规定一个范围,小白只可以选择第aa个和第bb个公园之间(包括aa、bb两个公园)选择连续的一些公园玩。小白当然希望选出的公园的分数总和尽量高咯。同时,由于一些公园的景观会...

2019-07-23 19:27:39 140

原创 并查集

并查集如下图所示所以我们就可以想一个办法,如何找到自家的老大。先令每个人的老大就是自己,然后当遇到另一个和自己有关系的人的时候,便去问候一下对方的老大,比如今天某席大侠和某陈大仙女走进同一家面馆吃面,信竞中人,一言不合就要开始【哔~】,但当他们要开始【哔】之前,自然要问候一下对方的老大。我们可以用一个pre数组来存每一个人的老大然后他们就委托自己的上级去找老大。int find(in...

2019-07-21 19:43:23 124

原创 BZOJ 2457双端队列题解

我们之前学习了如何使用STL中的队列现在我们来看一道与队列有关的神奇的题(看似队列而非为队列)————双端队列分析:如果现在有一段序列 Ai,Ai+1,Ai+2,······,Aj-1,Aj 满足该双端队列的要求,即满足:Aj-1<…Ai+1<Ai<Ai+2…<Aj 即如一个二次函数一般的图所以这道题的本质就在于,找有多少个谷底!!可以直接处理原始数据,也可以...

2019-07-18 16:22:09 242

原创 STL 中的队列使用

一、队列(queue)众所周知,队列是一个神奇的数据结构(具体神奇在哪里,请自行体会),但手写的队列,你需要维护一个head和tail,还要战战兢兢地时刻注意这个head有没有被tail追到,但是—————————————————————————————————————— 在有了STL库后,就省事多了。声明:需用头文件#include < queue >,然后queue &l...

2019-07-17 20:34:36 789

原创 list的用法

list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。list的实现大概是这样的:list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。前驱元素指针域保存了前驱元素的首地址;数据域则是本节点的数据;...

2019-07-13 20:44:53 475

原创 单向链表

链表:通过一组任意的存储单元来存储线性表中的数据元素,由一个个结点构成。链表之所以让初学者难以理解,是因为要回溯到上一个结点,并利用这个结点,很多人的思维一直都是往下面追溯,所以才会觉得难以理解,多动手画画图会容易理解许多。结点:结点类型如下:typedef struct lnode{datatype data; //数据域struct lnode *next; //指针域}LNo...

2019-07-13 11:57:58 115

原创 输入与输出

普通读入:#include<iostream>#include<cstdio>#include<ctime>using namespace std;const int maxn=10000000;int numbers[maxn];void cin_read_nosync();void scanf_read();int main(){ fr...

2019-06-22 16:06:33 92

原创 图的割点算法

割点:若删除该点,图不连通,则该点为割点桥:若删除该边,图不连通,则该边为桥如何求割点:Tarjan算法,一次dfs遍历:对每个点,记录dfs序为dfn[],low值为low[](low初始值与dfn相同)回溯时,如果回溯点的low值小于当前点low值,更新当前点low值对于根节点,需要特判,其子节点>=2为割点我们可以发现,low值记录的是:该点所在的强连通 能达到的最上高度...

2019-06-22 15:37:07 590

原创 双向队列的使用

一道特别水的模板题牛线#include<iostream>#include<cstdio>#include<deque>using namespace std;int s,e=1;deque <int> dq;int main(){ cin>>s; for(int i=1;i<=s;i++) { char ...

2019-06-16 16:19:47 324

原创 背包问题详解

说起背包,可能大部分人都能立马反应到动规,而且背包一般都是九讲,但在我看来,实际上的背包问题只有01背包,分组背包和背包方案三种,接下来,我就针对这三种背包问题做一个详解。一、01背包问题描述:有N件物品和一个容量为V的背包。第i件物品的体积是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。算法分析:为什么会想到dp而不是贪心或者搜索之类的呢?1、dp的证明:很明显贪...

2019-03-03 15:39:29 643

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除