自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

C20200521的博客

我的QQ:2716776569

  • 博客(58)
  • 收藏
  • 关注

原创 C++剑指offer:解题报告之DP优化学习记 (二) ——浅论DP斜率优化 (Print Article 【HDU - 3507】 )

链接:https://share.weiyun.com/5LzbzAc目录前言斜率优化前期准备1.从状态转移方程出发2.推理状态转移方程对结论的进一步推导干货!综合结论判断斜率大小的方法:叉乘正片开始:代码部分后记前言之前我们对DP优化已经有了很多的了解,比如:单调队列优化DP,四边形优化DP。今天,我们要讲的是传说中的斜率优化。它与四边形优化...

2019-01-10 14:04:49 445

原创 C++剑指offer:四边形不等式优化动态规划(一)——区间DP 线性的合并石子的优化合并石子的变形【HDU-3506】MonkeyParty的题解

前言DP的平行四边形优化,是一个难点,它非常难懂(关于平行四变形的理论基础及证明,有兴趣的同学可以看看这个大佬的博客,虽然我从来不会无聊到看证明),而且我在上课时并没有听太懂,都是看了别人的题解才看懂的。那么,要怎么才能学会平行四边形等式呢,先看看下面这个理论知识,为我们之后的具体优化提供基础。平行四边形优化是什么在日常的做动态规划的题时,我们经常会遇见以下这个状态转移方程(或类似),...

2018-12-31 20:26:33 295

原创 C++剑指offer:[USACO13NOV]POGO的牛Pogo-Cow(弹簧高跷)——通过修改循环的顺序来巧妙地实现对动态规划的优化

前言此题在网上的题解大都解释的比较.......怎么说呢,并不是很容易看懂,所以我觉得还是有必要写一篇比较详细的题解的。此题为一道动态规划的优化题。普遍的做法时间复杂度是,但可以通过修改循环的顺序来巧妙地实现的算法。(此题还有单调队列的做法,具体的做法我还在研究,有空也会发出来)。题目描述洛谷P3089在草场上有一条直线,直线上有若干个目标点。每个目标点都有一个分值和一个坐标。现...

2018-12-28 14:11:37 360

原创 C++剑指offer:单调队列入门讲解及个人学习心得与总结 例题:[USACO NOV 2013银组]拥挤的奶牛 and 滑动窗口 ——求一定长度的区间内的最大值和最小值及其变式的单调队列优化

目录前言题解滑动窗口拥挤的奶牛后记前言我相信你是被我优秀的标题吸引,或是想认真地学习一下单调队列的态度进来的。不管怎样,我都不会让你们失望。先来简单介绍一下单调队列:单调队列,从字面意思来看,即单调的队列。单调指的是这个对列的性质,那什么是单调呢?举个例子:一个序列:5 4 3 2 1我们就可以说它是单调递减的,1 2 3 4 5也是一个单调序列,不过它是单调...

2018-12-25 13:32:44 373 1

原创 C++解题报告:最大矩形面积(Largest Rectangle in Histogram)———单调栈

目录目录题目描述初步探究定义正文代码总结 前言此篇博客是我在CSDN发表的第一篇博客,现在看来文笔比现在差了许多。果然写博客确实提高了我的能力。单调栈是一个非常重要的数据结构,在我们的DP学到后期时,许多题目都需要用他来优化,他常常可以将的算法优化为(甚至更少)。但这里我要讲的不是单调队列优化DP,而是对另一种算法的优化。(如果你想看看单调队列优化DP,你可...

2018-12-11 13:20:51 3776 4

原创 让我们一起来赞美毒瘤CCF吧~~~

2019-11-19 13:04:08 228

原创 1024程序员节

1024程序员节是中国广大程序员的共同节日。1024是2的十次方,二进制计数的基本计量单位之一。部分互联网机构一直密切关注程序员健康,针对程序员经常周末加班与工作日熬夜的情况,倡议每年的10月24日为1024程序员节,在这一天建议程序员拒绝加班。程序员就像是一个个1024,以最低调、踏实、核心的功能模块搭建起这个科技世界。1G=1024M,而1G与1级谐音,也有一级棒的意思。2019年10月2...

2019-10-24 12:49:28 253

原创 修剪草坪 —— 单调队列优化DP基础

最近正在复习DP,于是便来写一发单调队列优化DP。其实单调队列优化DP的方法我的博客写得有但我自己已经忘光了所以才是复习是吧。题目描述在一年前赢得了小镇的最佳草坪比赛后,Farm John变得很懒,再也没有修剪过草坪。现在,新一轮的最佳草坪比赛又开始了,Farm John希望能够再次夺冠。然而,Farm John的草坪非常脏乱,因此,Farm John只能够让他的奶牛来完成这项工作。F...

2019-07-21 10:23:58 264

原创 OI:校内模拟赛 T2:Tavan —— 字符操作,k进制转换

模拟赛的题,内容主要考察的是字符串操作,字典序,和类似于k进制的转换,有兴趣的同学可以来看看。题目真的是又臭又长。#3369. Tavan内存限制:32 MiB时间限制:1000 ms标准输入输出题目类型:传统评测方式:文本比较上传者: cqbzgm题目描述小 Zeljko 一直在阁楼里读他奶奶的旧信,并且发现了一个长度为 N 的单词。 不幸的是,由于溢出的墨水,他不知道单词...

2019-07-12 19:05:18 337

原创 C++集合set的用法

众所周知STL是C++中十分实用的容器,set便是其中之一。最近做的题都接触到了set(集合),正好学习了一下,将自己的成果写一写。没有接触过的人也可以看看,表示set非常的好用。(话说最近好久都没有写过博客了)定义首先我们需要一个头文件来使用set#include <set>set的定义类似vector(动态数组):set<int> S1;//定义了一个in...

2019-07-10 09:06:54 2989

原创 C++ [poj 1699] Best Sequence : DFS+字符串处理+减枝

最近在做 关于 搜索 的练习。AC了这道题 就来 写题解了。首先,我们可以 用一个dis的 二维数组 来储存 每一对 字符串 中首尾相同 的 字符串 的个数。(对于测试样例,dis[3][2]=2,而dis[2][3]=0。)(字符串的 预处理 这里 我搞了 一段时间,建议 读者也去 实践一下)。处理出来 dis数组后 剩下的 就很好办了,可以 纯枚举深搜。以每一个 字符串 为起点,将...

2019-05-16 17:17:53 510

原创 C++Cleaning Robot (BFS+DFS=AC)

直接上题吧,话说 好久都没写博客了,都在编Scratch。。。首先可以使用BFS来 把每个点’o’和点’*'的最短距离给求出来,顺便便可以求出有没有无解的情况。之后使用dfs,以点’o’为起点搜出最短路径。加一个小剪枝就可以Ac了、#include <cstring>#include <cmath>#include <iostream>#inclu...

2019-05-15 14:17:48 362

原创 关于 C++ 中的 各种位运算 的使用方法 以及 实际程序上的 运用

位运算,简单 来说就是在二进制 的基础上 使用 C++规定 的符号进行 的运算。在实际 的程序 中,位运算 往往比加减乘除 要 快得多(计算机的 基础运算 就是二进制,所以在二进制上进行的 位运算 要快)。所以在 算法竞赛中 常常 都被用来优化 时间 复杂度。虽然 已经做了 很多题,算是对 C++ 语言 有了些了解,但位运算 从来都没有 接触过。正好 最近 学到的一个算法 正好需要用到,于是 ...

2019-05-14 13:44:59 692

原创 C++二分图匹配基础:zoj1002 FireNet 火力网

直接给出题目吧。。。问题 D(1988): 【高级算法】火力网时间限制: 1 Sec 内存限制: 128 MB题目描述给出一个N*N的网格,用’.'表示空地,用’X’表示墙。在网格上放碉堡,可以控制所在的行和列,但不能穿过墙。问:最多能放多少个碉堡?输入第1行:一个整数N(N<=20)接下来N行,每行N个字符输出第1行:1个整数,表示最多可放碉堡数。样例输入4....

2019-04-26 13:42:16 549

原创 IDA* :[UVa11212]骑士精神

题目此题根据题目可知是迭代加深搜索。首先应该枚举空格的位置,让空格像一个马一样移动。但迭代加深搜索之后时间复杂度还是非常的高,根本过不了题。感觉也想不出什么减枝,于是便要用到了乐观估计函数(Optimistic Estimation Function)以3种颜色的格子来表示原棋盘:如果我们要从一个状态抵达到原棋盘,那么需要的步数绝对是小于当前状态与原棋盘不同的格子的数量、那么我们...

2019-04-25 17:28:55 167

原创 C++解题报告 : 迭代加深搜索之 ZOJ 1937 Addition Chains

此题不难,主要思路便是IDDFS(迭代加深搜索),关键在于优化。一个IDDFS的简单介绍,没有了解的同学可以看看:https://www.cnblogs.com/MisakaMKT/articles/10767945.html我们可以这么想,设当前规定长度为M,题目要求得出的数为N。在搜索中,当前的步数为step,当前的数列为 数组a。首先来确定思路,便是在以得出的数列a中枚举每两个数...

2019-04-25 14:00:05 243

原创 高级搜索之迭代加深算法详解

可能很多初学者看到了迭代加深搜索这个名字就感觉“哇,好高级啊,学起来一定很复杂。”但是事实却不是这样,只要你有过BFS和DFS的基础,理解起来其实是非常容易的。为了形象地解释迭代加深搜索(IDDFS,Iterative Deepening Depth-first Search。网上找了一下,发现并没有这个全称。)从图中可以看出,从起点开始搜索。使用DFS,搜到的第一个解便是X3。而使用BF...

2019-04-25 13:35:10 2534 3

原创 MarkDown 详细教程

众所周知MarkDown是一个十分重要的文本编辑器。它的用途范围很广,包括你将要看到的这篇博客也是使用Markdown来编辑的。下面我就将为大家详细地介绍一下MarkDown及其用法。会用的也不要走哦,看看总是会有帮助的!

2019-04-25 12:43:48 5887 2

原创 关于一个叫做二次探测定理的证明

二次探测定理的主要运用便是Miller-Rabin的素数测试上,其他貌似就没有什么卵用了。关于二次探测定理,如果有p为素数,则关于同余方程的解x2≡1(mod&MediumSpace;p)x^{2}\equiv 1 (mod \: p)x2≡1(modp)有且仅有1和p-1这两个解,也就是说x只能等于1和p-1。它的证明很简单,∵x2≡1(mod&MediumSpace;p)\...

2019-04-19 22:28:02 1383

原创 C++题解:P1894 [USACO4.2]完美的牛栏The Perfect Stall —— 求二分图的最大匹配算法其一:匈牙利算法 (增广路,匹配,最大匹配)

在看这道题之前,我们先来了解一下什么是二分图及与二分图匹配的相关概念及基础知识。基础知识故名思义,二分图本质上还是由点和边构成的数据结构,与之不同的是,二分图相当于把一张图分成了两个部分,也就是两个部。部与部之间的点没有边相连,以下的几个图都可以算作二分图:(图中的箭头无意义,并不代表有向边)现在来简单说一下匹配和最大匹配(因为只涉及匈牙利算法,所以不讲其他杂七杂八的东西。最小点覆盖什么的...

2019-04-18 13:45:58 480

原创 C++题解:Matrix Power Series ——矩阵套矩阵的矩阵加速

Matrix Power Seriesr时间限制: 1 Sec 内存限制: 512 MB题目描述给定矩阵A,求矩阵S=A1+A2+……+A^k,输出矩阵,S矩阵中每个元都要模m。数据范围: n (n ≤ 30) , k (k ≤ 109) ,m (m < 104)输入输入三个正整数n,k,m输出输出矩阵S mod m样例输入2 2 40 11 1样例输出1 ...

2019-04-16 13:42:26 205

原创 C++矩阵加速经典题目:Warcraft III 守望者的烦恼 [vijos 1067]

Warcraft III 守望者的烦恼背景守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫“闪烁”,这个技能可以把她传送到后面的监狱内查看,她比较懒,一般不查看完所有的监狱,只是从入口进入,然后再从出口出来就算完成任务了。描述头脑并不发达的warden最近在思考一个问题,她的闪烁技能是可以升级的,k级的闪烁技能最...

2019-04-11 13:21:58 660 1

原创 C++数论板题(弹药科技):Lengendre定理和欧拉函数

弹药科技时间限制: 1 Sec 内存限制: 128 MB题目描述经过精灵族全力抵挡,精灵终于坚持到了联络系统的重建,于是精灵向人类求助,大魔法师伊扎洛决定弓}用博士的最新科技来抗敌。 伊扎洛:“博士,还没好吗?” 博士:“只差一步了!只需要在正确的位置装上弹药就可以了!”博士的最新科技是全新的炸弹,但是现在还需要一步装弹药的操作。博士的炸弹有N!个位置可以装弹药(>.<...

2019-04-10 13:33:45 251

原创 C++入门小程序:给班级的每个组算平均分并排序

此程序仅供参考当我们在学校时,经常要对每个组的平均分进行排序。于是这个程序便诞生了,主要目的就是算平均分并进行排序。(作为一个C++初级程序,程序员们可以进来学习并进行参考一下。优化的地方可以评论)//此程序还未完工,学号部分未初始化,请谨慎使用#include<iostream>#include<cstdio>#include<cstring>#i...

2019-04-09 13:23:54 1406

原创 无穷个2的相幂(2^2^2^2^2^2^2...无穷个^2...^2)%p的结果居然是一个定值!?利用欧拉定理巧妙降幂求出正解 [LYDSY3884]上帝与集合的正确用法

[LYDSY3884]上帝与集合的正确用法时间限制:2 Sec内存限制:128 MB题目描述根据一些书上的记载,上帝的一次失败的创世经历是这样的:第一天, 上帝创造了一个世界的基本元素,称做“元”。第二天, 上帝创造了一个新的元素,称作“α”。“α”被定义为“元”构成的集合。容易发现,一共有两种不同的“α”。第三天, 上帝又创造了一个新的元素,称作“β”。“β...

2019-04-05 17:18:31 742

原创 C++TR的数列 : 矩阵加速基础

问题 D(3795): TR的数列(矩阵加速)时间限制:1 Sec内存限制:512 MB题目描述TR非常喜欢数学,经常一个人拿出草稿纸研究奇奇怪怪的数学问题,最近,他突然对数列产生了兴趣,他找到一个数列,类似于斐波拉契,即:Tn=1*f1+2*f2+3*f3+……+n*fn (fn为斐波拉契的第n项值)现在TR想请你帮忙求Tn%m的值输入两个用空格隔开的整数...

2019-04-05 16:26:02 511

原创 浅谈欧拉函数及其各种在数学上的用法(欧拉定理,拓展)与其C++上实现的方式

先来简单说下欧拉函数在实际应用上涉及到的各个方面:首先,欧拉函数在同余上面可以派上大用场,涉及了同余的题基本上都能扯到欧拉函数。然后,它在求逆元上也可以说有那么一点关系。。。。。。。欧拉函数的应用远不止于此。所以,欧拉函数在信息竞赛上以及数论上都是一个非常重要的内容,需要整体,系统地学习。笔者在初学的时候也不是很认真,所以写这篇博客的目的其实也是为了复习一遍,巩固一下基础。...

2019-04-02 14:07:22 1043

原创 浅谈矩阵加速——以时间复杂度为O(log n)的算法实现裴波那契数列第n项及前n之和使用矩阵加速法的优化求法

首先请连矩阵乘法乘法都还没有了解的同学简单看一下这篇博客:https://blog.csdn.net/weixin_44049566/article/details/88945949首先直接暴力求使用O(n)的时间复杂度肯定是不行的,所以我们应该使用更优的时间复杂度。设f(n)为裴波那契数列第n项。让我们来构造两个矩阵:和.现在我们不妨将两个矩阵相乘,化简过后可以得到:,...

2019-04-01 14:11:02 686 2

原创 C++信息竞赛NOIP各种必备实用模板(逆元,费马小定理,扩展欧几里得,快速幂,卡常,欧拉函数,组合数。。。。。。)

为什么会有此博客? 此博客是为了博主复习时方便地背模板。博主在代码部分都是默写的,所以可能会有点小错误,见谅。前半部分重点关注于数论。如果觉得很好的朋友可以收藏了慢慢看卡常必备!快速读入int read() { int s=0,f=1;char a=getchar(); while(a<'0' || a>'9') { if(a=='-') f...

2019-03-28 12:49:40 690

原创 剑指offer:详细推导拓展中国剩余定理(CRTpro)及具体实现C++模板题Strange Way to Express Integers

前言中国剩余定理和拓展中国剩余定理其实没有一点儿关系。尽管他们求解的内容十分相似:中国剩余定理:求的是模数互质的同余方程的解。中国剩余定理pro:求的是同余方程的解。可以看到两者中国剩余定理pro的适用范围更广,所以我推荐使用中国剩余定理pro,中国剩余定理可以了解一下。如果你还不知道下面的知识,请自行百度补习:1.拓展欧几里得算法求解如下不定方程及如何拓展到求此不定方程的...

2019-03-27 13:45:17 343

原创 剑指offer:C++[JSOI2015] 染色问题 容斥原理及二项式优化

问题 H(3789): 格子染色时间限制:1 Sec内存限制:128 MB题目描述 棋盘是一个n×m的矩形,分成n行m列共n*m个小方格。现在萌萌和南南有C种不同颜色的颜料,他们希望把棋盘用这些颜料染色,并满足以下规定:1. 棋盘的每一个小方格既可以染色(染成C种颜色中的一种) ,也可以不染色。2. 棋盘的每一行至少有一个小方格被染色。3. 棋盘的每一列...

2019-03-21 13:28:13 1171

原创 剑指offer:C++【UVA 1635】无关的元素 排列组合数的应用及唯一分解定理

问题 A(2716): 无关的元素时间限制:1 Sec内存限制:128 MB题目描述对于给定的n个数a1,a2,...,an,依次求出相邻两数之和,将得到一个新数列。重复上述操作,最后结果将变成一个数。问这个数除以m的余数与哪些数无关?例如n=3,m=2时,第一次求和得到a1+a2,a2+a3,再次求和得到a1+2a2+a3,它除以2的余数和a2无关。输入第1行:...

2019-03-20 14:15:26 203

原创 C++[POJ1849]铲雪车问题——树形DP求出树的直径

[POJ1849]铲雪车问题时间限制:1 Sec内存限制:128 MB题目描述大雪覆盖了整座城市,市政府要求冬季服务部门尽快将一些街道(列在一份清单中)的积雪清除掉以恢复交通。整个城市由许多交叉路口和街道构成,当然任意两个交叉路口都是直接或间接连通的。清单给出了最少的街道,使得这些街道的积雪清除后任意两个交叉路口之间有且仅有一条通路。冬季服务部门有2辆铲雪车和2名司机,这...

2019-03-15 14:14:14 904

原创 剑指offer:C++树形DP基础——二叉苹果树

问题 G(1375): 【基础算法】二叉苹果树时间限制:1 Sec内存限制:64 MB题目描述有一棵苹果树,如果树枝有分叉,一定是分 2 叉(就是说没有只有 1 个儿子的结点)。这棵树共有 N 个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是 1。 我们用一根树枝两端连接的结点的编号来描述一根树枝的位置。下面是一颗有 4 个树枝的树:现在这颗树枝条太多了,需要...

2019-03-14 14:01:42 440

原创 C++剑指offer:[POJ]2631 Roads in the North - 用树形DP的方式求出一棵树的直径

前言此题是道很简单的题(做法不单一,不仅只有树形DP的方法)做完了这道题才发现此题原来是一道求树的直径的题,也就是求树上两个节点的最大距离。题目问题 N(2692): [POJ2631]北极地区的路时间限制:1 Sec内存限制:128 MB题目描述寒冷、人烟稀少的北极地区修建与维护道路时非常昂贵的。因此,修路时只会在任意两个村子之间形成一条唯一的路径,并且中途...

2019-03-14 13:36:49 269

原创 C++剑指offer:树形DP——较简单的树形DP:重建道路

较简单的树形DP问题 M(1288): 【基础算法】重建道路时间限制:1 Sec内存限制:64 MB题目描述一场可怕的地震后,人们用N个牲口棚(1≤N≤150,编号1..N)重建了Farmer John的牧场。由于人们没有时间建设多余的道路,所以现在从一个牲口棚到另一个牲口棚的道路是惟一的。因此,牧场运输系统可以被构建成一棵树。John想要知道另一次地震会造成多严重的破...

2019-03-13 14:04:11 344

原创 剑指offer:C++树上的动态规划——树形DP之背包 LG[P1270]:访问艺术馆

前言此题难度:高难度偏简单。来说下为什么说这道题“高难度偏简单”。如果只看代码的实现以及DP的思路及转移,其实这道题的难道并不是很高。但是这道题的“坑”很多,输入数据的形式也非常变态,对代码实现能力不高的同学简直就是一场煎熬,而且有几个坑也不容易注意到,让我WA了好几次。此题的本质其实也是多重背包,实现起来十分经典,可供初学者参考。题目问题 L(1286): 【基础算...

2019-03-12 15:50:02 224

原创 剑指offer:C++树形背包——战略游戏

前言详见树形DP入门题:https://blog.csdn.net/weixin_44049566/article/details/86727140代码#include <iostream>#include <cstring>#include <cstdio>#include <vector>using namespace st...

2019-03-11 13:51:38 286

原创 剑指Offer:C++较复杂的树形背包问题(01背包)——有线电视网

前言此题是一道中上难度的树形背包问题。其实质其实就是01背包问题。难点在于状态的转移以及状态转移方程,不同于其他的树形背包题目。应该说很有特点吧,十分适合初学者练练手。没有了解过树形背包的读者可以看看我的这篇博客https://blog.csdn.net/weixin_44049566/article/details/88110155,这样看的时候才不会很困难。题目问题 J(...

2019-03-11 13:15:58 504

原创 C++剑指offer:树形DP——河流(riv):较复杂的树形DP 应用多叉树转二叉树的方法

前言先来讲讲我是怎么用四天的时间来做这道题的吧。第一天:看老师的课件,了解了思路,并得知了状态转移方程是如何得出的。第二天:上网查题解,决定不用多叉树转二叉树,用自己的代码打出来。第三天:真香,决定用多叉树转二叉树。第四天:放弃直接动态规划,使用记忆化搜索。这里简单阐述一下我为什么要用多叉树转二叉树与记忆化搜索。第一,如果不用多叉树转二叉树,此题真的会变得非常复杂,不信...

2019-03-07 17:30:33 309

空空如也

空空如也

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

TA关注的人

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