鹿我所录的博客

记录我在学习C#中的点点滴滴,记录下以备后来人借鉴。

 

2020年11月1日

洛谷P1091题解

摘要: 原题: 思路: 让求个序列 还得是中间高两头低的 还得是最长的 你说要是让我求个最长增还行 最长减也可以,毕竟就是反向最长增 你要我求这个玩意?? 不对,仔细一看,这不就是最长增和最长减拼在一起 从1-n求个最长增,再n-1求个最长增 再枚举“拼接点”,计算即可 代码: #include <bits 阅读全文

posted @ 2020-11-01 14:38 鹿我所录 阅读(85) 评论(0) 推荐(0) 编辑

洛谷P1033题解

摘要: 原题: 思路: 有那么一瞬间,我以为我在做数学题 思考一下,我们会发现这样一个问题 根据题目的描述,我们可以知道,小车从某个时间开始接球,到某个时间不再接球 这期间所有的球都可以接到(因为是匀速的) 那么我们只要找出那个开始和结束的时间点,算出有效距离,求出个数即可 代码: #include <bi 阅读全文

posted @ 2020-11-01 10:19 鹿我所录 阅读(92) 评论(0) 推荐(0) 编辑

洛谷P1031均分纸牌

摘要: 原题: 思路: 左右两方向的处理 事实上这类题全部都是可以转换为“从左向右”的处理的 再回来考虑这道题 我们发现它要求我们让每堆纸牌都变成平均数 那我们可以先把它算出来,因为肯定要用 其次,由于牌堆数目参差不齐,所以我们为了将它们捋平,要对每一个数i做一个差分diffi 然后根据这个diffi,我们 阅读全文

posted @ 2020-11-01 09:23 鹿我所录 阅读(94) 评论(0) 推荐(0) 编辑

2020年10月25日

洛谷P3984题解

摘要: 原题: 思路: 事实上,这道题给定的是区间定长以及区间的左端点。 思路的话,接近于“一维扫描线” 从第一个端点开始,向下一个端点跳跃,并计算跳过了多少距离 如果是左端点,压栈 右端点,出栈 仅在栈不为空时计算距离 阅读全文

posted @ 2020-10-25 15:00 鹿我所录 阅读(65) 评论(0) 推荐(0) 编辑

洛谷P3916题解

摘要: 原题: 思路: emmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 这玩意儿不就是一个深搜解决? 一看难度,绿的 行吧看来我把它想简单了 而且深搜确实有些问题 就题面来看,如果进行深搜,就意味着我们要不断地访问同一个点 浪费时间啊 能不能一次求出呢? 思考过后我们发现,显 阅读全文

posted @ 2020-10-25 14:43 鹿我所录 阅读(129) 评论(0) 推荐(0) 编辑

洛谷P3817题解

摘要: 原题: 思路: 似乎并没有专门解决这类问题的高效算法,一看规模就更加确定做法是偏向暴力的了 看这道题,实际上就是给一个数列,然后要求数列内每两个相邻的数相加不大于x,问要减去多少 实际上,我们可以看到,每一个数都能影响两个相邻的组合,它前面的和它后面的(除了第一个和最后一个) 既然如此,这个处理就很 阅读全文

posted @ 2020-10-25 14:16 鹿我所录 阅读(106) 评论(0) 推荐(0) 编辑

洛谷P3811题解

摘要: 原题: 思路: 没啥思路 已经把思路贴我脸上了 求逆元 这玩意是很重要的东西,一旦涉及到除法取模,就要用逆元转化成乘法来取模 原因是: (a+b) mod c=((a mod c)+(b mod c))mod c (a-b) mod c=((a mod c)-(b mod c))mod c (a*b 阅读全文

posted @ 2020-10-25 09:52 鹿我所录 阅读(63) 评论(0) 推荐(0) 编辑

洛谷P3353在你窗外闪耀的星星-题解

摘要: 原题: 思路: 这是我一辈子达不到的文采 好现在思路来了 实际上这个题的意思就是: 求一段固定长度的区间使得总和最大 区间和,没有修改,一看数据还可以,那当然是前缀和啦 在输入数据的时候,在代表天空的数组的对应位置+亮度 然后处理前缀和 再然后遍历区间右端其实无所谓根据W永远是奇数你甚至可以遍历区间 阅读全文

posted @ 2020-10-25 09:27 鹿我所录 阅读(75) 评论(0) 推荐(0) 编辑

2020年10月18日

洛谷P1057传球游戏-题解

摘要: 题目: 思路: 一看,计数的 先考虑一下DP 计数的转移,难度高的一般要经过思考才能得出来 但是难度低的(诸如此道)一般已经在题目中说出来了 重点就在于: 每个同学可以把球传给自己左右的两个同学中的一个(左右任意) 这句话上。 左和右,换成数学表示就是 i-1,i+1 由于题目说是一个环,所以特判一 阅读全文

posted @ 2020-10-18 21:43 鹿我所录 阅读(116) 评论(0) 推荐(0) 编辑

洛谷P1049装箱问题-题解

摘要: 题目: 思路: 经典的背包题目 不过比较特殊的是,体积即是价值 求出最大值来之后减去背包容积即可 代码: 没有,太简单了 阅读全文

posted @ 2020-10-18 21:21 鹿我所录 阅读(84) 评论(0) 推荐(0) 编辑

洛谷P1048采药-题解

摘要: 题目: 思路: 背包没跑了。 典型的背包题 借此来讲讲背包 最优化的一维背包采用剩余体积作为划分的依据 同时运用滚动数组反向遍历来实现 重要的几个标志: 价值,体积,最值 代码: #include <bits/stdc++.h> using namespace std; int f[1005]; i 阅读全文

posted @ 2020-10-18 21:06 鹿我所录 阅读(123) 评论(0) 推荐(0) 编辑

洛谷P1044栈-题解

摘要: 题目: 思路: 我们考虑一下,这道题有哪几个因素能够确定一个状态? ——栈外元素数与栈内元素数 为什么? ——我们考虑一下 栈内元素个数是容易想到的 那么为什么第二维是栈外元素个数? 实际上,在这道题中如果不用它也可以,例如换成栈顶元素 但是这会导致转移极其麻烦 而在使用栈外元素的情境下就变得十分简 阅读全文

posted @ 2020-10-18 18:14 鹿我所录 阅读(150) 评论(0) 推荐(0) 编辑

洛谷P1040加分二叉树-题解

摘要: 题目: 思路: 这题在一个细节上很奇怪,它给树是按中序遍历给的 而且只给了中序遍历 这意味着我们可以通过自己的方式来构造这棵树 我们回想一下—— 在中序遍历中,一个根节点的左儿子是? ——这个节点的左边所有 右儿子是? ——右半部分 如果用区间表示呢? ——[i.k-1],[k+1,j] 为什么没有 阅读全文

posted @ 2020-10-18 17:26 鹿我所录 阅读(164) 评论(0) 推荐(0) 编辑

洛谷P1005矩阵取数游戏-题解

摘要: 题目: 思路: 记住那两句话: 1.反向思维 2.区间动规的特点在于,大区间包含小区间,小区间推导出大区间 然后我们来看 首先我们可以发现各行是互不影响的,所以可以分开 其次,不管怎么操作,这个序列会变小,而且是连续的 虽然它是取数,但同时对区间造成了影响 于是我们就可以想想方程了 f作为某一行的和 阅读全文

posted @ 2020-10-18 17:13 鹿我所录 阅读(180) 评论(0) 推荐(0) 编辑

洛谷P1004方格取数-题解

摘要: 题目: 思路: 我拿过这题一看,方格,下&右 好又是这种,和过河卒差不多 不过这题有点特殊: 1.能走两遍,前一次的路对后一次有影响 2.与过河卒相比,它不是计数,而是求最大值 但是本质上都是一样的 对于第一点,我们可以用多线程的方式解决,也就是同时处理两条路径 对于第二点,无非就是将加法换成了求m 阅读全文

posted @ 2020-10-18 16:47 鹿我所录 阅读(98) 评论(0) 推荐(0) 编辑

洛谷P1002过河卒-题解

摘要: 原题: 思路: 显然是计数DP 又是在网格上,又是只能走下和右,思路是很显然的 想要到达这个点,只能由这个点上方和左方的点转移来 方程也很明显了: f[i][j]=f[i-1][j]+f[i][j+1]; 注意特判被马占的点就可以了 代码: #include <bits/stdc++.h> usin 阅读全文

posted @ 2020-10-18 16:30 鹿我所录 阅读(171) 评论(0) 推荐(0) 编辑

2020年10月2日

搜索

摘要: 因为这是十分基础的东西,所以反而有些忽略 写这篇博客,方便复习 搜索,最基础的算法 基础到无法再基础的算法 为了引出搜索,我们不得不说说什么叫做“遍历” 遍历,正如其名,是将所有的可能性全都看一遍 比如把书架上所有的书都看一遍 这就是遍历。 然而,这种单纯的遍历会导致一些问题无法解决 例如,找一条通 阅读全文

posted @ 2020-10-02 20:02 鹿我所录 阅读(160) 评论(0) 推荐(0) 编辑

2020年8月27日

洛谷P3901数列找不同-题解

摘要: 原题: 思路: 莫队 统计的是各个数字的个数 如果说加的时候,sum==1,则颜色种类数++ 减的时候,sum==0,则颜色种类数-- 但是要注意由于区间排了序,所以要用一种方法来保证顺序不出错。 很简单看代码吧 代码: #include <bits/stdc++.h> using namespac 阅读全文

posted @ 2020-08-27 19:44 鹿我所录 阅读(148) 评论(0) 推荐(0) 编辑

2020年8月24日

洛谷P3205合唱队-题解

摘要: 原题: 思路: 区间动规处理有一个十分明显但你他妈就没发现的特征:大区间包含小区间,大范围解包含小范围解 这个题符合这个特征,所以是区间动规 f[i][j][0]表示的是第i人从左边进来的方案数 f[i][j][1]表示的是第j人从右边进来的方案数 假设第三维是0,则前面那个一定比他高,前面的人就必 阅读全文

posted @ 2020-08-24 16:11 鹿我所录 阅读(127) 评论(0) 推荐(0) 编辑

2020年8月21日

洛谷P4170涂色-题解

摘要: 原题: 思路: 一说到区间操作的最少次数,我就想到了区间动规 首先,对于每个长度为1的区间,次数显然是1 第二,对于左右端点颜色相等的情况,显然只要要在之前涂色的时候一起涂上就行 第三,对于不相等的情况,就只能按照一般区间动规处理 这道题帮助我解决了带特判的动规姓“搜”还是姓“动”的问题解放了思想可 阅读全文

posted @ 2020-08-21 15:37 鹿我所录 阅读(204) 评论(0) 推荐(0) 编辑

2020年8月18日

洛谷P2704炮兵阵地-题解

摘要: 原题: 思路: 状压DP经典题目 对于每一个点是否可以放部队 只要考虑前两行有没有部队 这一行有没有两个部队距离在两格之内 这个点是不是山 即可 状态转移方程: dp[L][S][i]=max(dp[L][S][i],dp[FL][L][i-1]+Sum[S]); 搭配一些二进制处理 在输入地图的时 阅读全文

posted @ 2020-08-18 15:11 鹿我所录 阅读(145) 评论(0) 推荐(0) 编辑

2020年8月17日

模板-Bellman-Ford&SPFA

摘要: Bellman-Ford算法 求最短路的 这个算法基于一个叫做“松弛”的操作 松弛会试图往最短路中加边来缩短最短路 对于这样一个图 1到3的最短路显然是1→2→3而不是1→3绕远路就是最短的捷径 我们所进行的松弛操作就是这样的 松弛时枚举每一条边,并判断先走最短路到达这条边的u点,再经过这条边到达v 阅读全文

posted @ 2020-08-17 11:28 鹿我所录 阅读(160) 评论(0) 推荐(0) 编辑

2020年8月16日

洛谷P1020导弹拦截-题解

摘要: 原题: 思路: 经典DP题目 但这个题有个更快的做法 开一个数组d表示序列中的数 如果目前这个数与d中最后一位符合要求 就加入 如果不符合就找到d中第一个不符合要求的并替换 相当于一直在确定这个序列是多少 详见代码 代码: #include<bits/stdc++.h> using namespac 阅读全文

posted @ 2020-08-16 17:41 鹿我所录 阅读(151) 评论(0) 推荐(0) 编辑

洛谷P1854花店橱窗布置-题解

摘要: 原题: 思路: 考虑DP 设f[i][j]为考虑前i行,第i行选第j个的最大值 则f[i][j]=max(f[i-1][j])+d[i][j] 这道题由于有枚举成分在,如果用DFS就会超时 代码: #include <bits/stdc++.h> using namespace std; int n 阅读全文

posted @ 2020-08-16 09:55 鹿我所录 阅读(156) 评论(0) 推荐(0) 编辑

2020年8月14日

洛谷P3183食物链-题解

摘要: 原题: 思路: 可以采取类似于树形DP的做法 计算出从各个儿子到达目标点的方法 然后加起来,就是这个点的方法 就像是反向的计数DP 代码: #include <bits/stdc++.h> using namespace std; struct node { int u,w,nxt; }e[2000 阅读全文

posted @ 2020-08-14 17:10 鹿我所录 阅读(178) 评论(0) 推荐(0) 编辑

2020年8月12日

洛谷P1512伊甸园日历游戏-题解

摘要: 原题: 思路: 考虑搜索,显然有必胜策略 对于能转移到必胜状态的,必输,因为它把必胜状态给了对方 由此可以用搜索解决 但是DFS麻烦,于是我们换一种策略 类似动规 代码: #include <bits/stdc++.h> using namespace std; int n; int f[2010] 阅读全文

posted @ 2020-08-12 17:21 鹿我所录 阅读(238) 评论(0) 推荐(0) 编辑

2020年8月9日

洛谷P1352没有上司的舞会-题解

摘要: 原题: 思路: 经典树形DP 借此题讲解一下树形DP 顾名思义,树形DP以「子树」作为单位进行DP 由于这个性质,DFS成了实现的最好选择 先DFS求出子问题,随后得出当前规模答案。 详见代码 这个还可以用拓扑排序做 代码: #include <bits/stdc++.h> using namesp 阅读全文

posted @ 2020-08-09 17:33 鹿我所录 阅读(153) 评论(0) 推荐(0) 编辑

2020年8月8日

错误集合

摘要: 2020-08-08 搜索要真正的覆盖所有情况, https://www.cnblogs.com/lujin49/p/13453437.html是一个悲伤的故事 2020-08-27 莫队要注意顺序 阅读全文

posted @ 2020-08-08 20:42 鹿我所录 阅读(90) 评论(0) 推荐(0) 编辑

洛谷P1278单词游戏-题解

摘要: 原题: 1≤n≤16 思路: 一看规模,暴搜,这种题还不简单hahaha 既然要做题,我们就要想想更优解法 为什么不写一下记忆化呢? 首先我们想到的是,记忆以每一个单词开头能得到的最长长度 但是这个想法连样例都过不了 在这组样例中,以我们的想法,OIOOI显然能接的最长单词是IUUO 但以IUUO开 阅读全文

posted @ 2020-08-08 16:25 鹿我所录 阅读(296) 评论(0) 推荐(0) 编辑

2020年8月7日

洛谷P1434滑雪-题解

摘要: 原题: 思路: 首先考虑暴搜。 对于每一个点,我记录到这一格为止,走过了多少路。然后枚举四个方向继续递归。直到彻底走不动之后,就停下来更新答案。 但是有个问题——数据规模最大100行100列,如果我以一次递归4个方向来计算,第一层4种,第二层16种,第三层64种,第四层256种,而假设我们从整个地图 阅读全文

posted @ 2020-08-07 16:03 鹿我所录 阅读(249) 评论(0) 推荐(0) 编辑

洛谷P1219八皇后-题解

摘要: 原题: 思路: 显然是搜索 但问题在于要同时标记行、列、对角线 对角线有规律:从左上到右下,x-y是固定值,从左下到右上,x+y是固定值 由于x-y有可能是负的,所以要+n 代码: #include <iostream> using namespace std; int n,ans,book[233 阅读全文

posted @ 2020-08-07 10:18 鹿我所录 阅读(157) 评论(0) 推荐(0) 编辑

2020年8月6日

洛谷P1443马的遍历-题解

摘要: 原题: 思路: 广搜。 但队列除了记忆坐标,还要记忆步数。 在将一个点入队的时候,这个点的步数为这个点的父亲节点的步数+1,顺便把答案设了。 代码: #include<bits/stdc++.h> using namespace std; int n,m; int sx,sy; int a[405] 阅读全文

posted @ 2020-08-06 17:23 鹿我所录 阅读(162) 评论(0) 推荐(0) 编辑

洛谷P1135奇怪的电梯-题解

摘要: 原题: 思路: 对于每一个楼层,只有上和下两种情况 将上和下分别入队跑BFS即可 代码: #include<bits/stdc++.h> using namespace std; int n,a,b; int move_count[205]; bool arrived_floor[205]; boo 阅读全文

posted @ 2020-08-06 11:13 鹿我所录 阅读(188) 评论(0) 推荐(0) 编辑

经验集合

摘要: 2020-08-06 搜索与动态规划有一个共同特点,它要覆盖所有情况。其中记忆化搜索与动规又有同样的特点,在覆盖所有情况的同时有大量的重复计算。 在设计状态时(不论搜索还是动规)要保证覆盖所有状态(动规还要保证有重复) 2020-08-07 拓扑排序给出了动态规划的求解顺序,被取出的点是已知的,没有 阅读全文

posted @ 2020-08-06 09:26 鹿我所录 阅读(104) 评论(0) 推荐(0) 编辑

洛谷P1019单词接龙-题解

摘要: 原题: 思路: 数据范围很小(n<=20)所以考虑搜索。 最为朴素的想法——对于每一个单词,我考虑后面能接哪些单词,并分别尝试计算答案。 但是随之而来的就是一个问题——我要如何知道后面能接哪些单词? 解决方法很简单,只要匹配一下就好了。 但是,难道我每次递归,都要匹配一下吗?这肯定是不行的,时间复杂 阅读全文

posted @ 2020-08-06 09:17 鹿我所录 阅读(184) 评论(0) 推荐(0) 编辑

2019年2月20日

[C++] C语言及C++语言中包含的头文件名称,及作用

摘要: 头文件主目录include 头文件目录中总共有32个.h头文件。其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个。这些头文件各自的功能如下,具体的作用和所包含的信息请参见第14章。 <a.out.h>:a.out头文件,定义了a.out执行文件格式和一些宏 阅读全文

posted @ 2019-02-20 20:26 鹿我所录 阅读(3003) 评论(0) 推荐(0) 编辑

2018年12月15日

【C++】C++中int与string的相互转换

摘要: 一、int转string 1.c++11标准增加了全局函数std::to_string: string to_string (int val); string to_string (long val); string to_string (long long val); string to_stri 阅读全文

posted @ 2018-12-15 19:55 鹿我所录 阅读(10628) 评论(0) 推荐(0) 编辑

2018年11月19日

奥赛-欧几里得算法-最大公约数

摘要: Greatest Common Divisor(GCD) 欧几里得算法据说是最早的算法,用于计算最大公约数,也是数论的基础算法之一。 1.欧几里德算法的思想: 欧几里德算法的思想基于辗转相除法的原理,辗转相除法是欧几里德算法的核心思想,欧几里德算法说白了其实就是辗转相除法的计算机算法的实现而已。下面 阅读全文

posted @ 2018-11-19 14:08 鹿我所录 阅读(510) 评论(0) 推荐(0) 编辑

2018年10月29日

dbForge Studio for MySQL 中文乱码问题

摘要: 设置一下编码格式就好了 第一步:右键点击连接的数据库,选择第二个 第二步:选择第二个选项卡,设置编码格式,点击OK 第三步:确认保存并从新连接 最后你就发现能正常显示中文啦 阅读全文

posted @ 2018-10-29 14:26 鹿我所录 阅读(1173) 评论(0) 推荐(0) 编辑

2018年10月6日

【C++】纯C++实现http打开网页下载内容的功能

摘要: 这是一个函数,只要调用这个函数,就可以获取网页的内容 调用方法 阅读全文

posted @ 2018-10-06 07:50 鹿我所录 阅读(5277) 评论(0) 推荐(1) 编辑

导航