自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 洛谷 P1496 火烧赤壁(离散化

P1496 火烧赤壁世界上只有一种英雄主义,就是认清了生活的本质后依然爱他。----罗曼罗兰通往成功的道路上有很多挫折,这正是成功的意义所在。----yxr记今天下午上机退化成海淀区小学二年级水平。线性表不会,连简单的矩阵乘法也不会。-.-----------------------------正文--------------------------------题意很好理解,求火烧过的长度。简单的做法是开一个很大很大的数组,有火为1,否则为0,数有多少个1就可以了。显然,会爆。既然RE

2020-09-25 20:47:40 393

原创 洛谷 P3124 [USACO15OPEN]Trapped in the Haybales S(分别向左右枚举,窗口边界问题,双变量。。

洛谷 P3124先给大家表演一波错误的思路:从初始位置出发向左右两边分别破障,取最小值。错误的思路加上理解题意错误,题意只能增加一捆稻草。导致浪费时间+自闭自闭自闭具体代码如下:#include <iostream>#include <algorithm>#include <cstring>#include <math.h>#include <stdlib.h>#include <functional>#incl

2020-09-23 18:11:26 221

原创 洛谷 P4086 [USACO17DEC]My Cow Ate My Homework S(前缀和

洛谷 P4086简单的前缀和大水题emmmm题意:给出n个数,删除前面的k个数,求剩下n-k个数中删除最小值后的平均值。要求求出平均值最大时的k值,如果有多个,要求从小到大输出。显然地,如果删除k个数后,剩下的n-k个数一定大于等于2。(因为如果只有一个数,删去之后就没了,平均分为0。。同时,k也必须大于0。思路:既然是从前往后删,那么不妨从后往前记录数字和以及到目前为止的最小值。从而可以求出平均值,记录最大值。最后从后往前输出平均值等于最大值的k值。简单的前缀和处理就能解决了。注意边

2020-09-22 19:55:48 330

原创 洛谷 P2882 [USACO07MAR]Face The Right Way G(差分

洛谷 P2882题意:N头牛排成一列1<=N<=5000。每头牛或者向前或者向后。为了让所有牛都 面向前方,农夫每次可以将K头连续的牛转向1<=K<=N,求操作的最少 次数M和对应的最小K。思路:想要将所有的牛全部朝向一个方向。试想:如果不从头开始考虑,那么如果头部有牛牛朝后,那么要对头部的牛牛调整的时候必将会使已经调好方向的牛牛变动方向。为了表示方便,我们用0、1表示朝后、朝前。那么对于每一个确定的k(k头连续的牛),我们就从前往后,遇见一个0,就使从其开始的k头牛变

2020-09-22 18:28:07 195

原创 洛谷 P1419 寻找段落(单调队列,二分

P1419 寻找段落题意:在n个元素中找l<=size<=r的最大连续段落平均值。思路1:先求前缀和,双重循环暴力找最大平均值。代码如下:#include <iostream>#include <algorithm>#include <cstring>#include <math.h>#include <functional>#include <string>#include <vector&g

2020-09-20 18:52:19 230

原创 洛谷 P1638 逛画展(队列,窗口移动

P1638 逛画展思路:这道题我的想法是模拟一个窗口,从左到右移动。如果这个窗口里面已经包含了所有画师的画作,那么就记录minn,并且将队首元素pop出去,直到窗口不包含所有画师的画作为止。(这句话好像有歧义。。就是没有包含所有画师的画作时就可以退出循环了之后将窗口后面一位的画push进队列。还有一点需要注意的是用一个整型数据记录窗口中有多少个画师的画作。完整代码:#include <iostream>#include <algorithm>#include &

2020-09-19 21:49:26 345

原创 洛谷 P3143 [USACO16OPEN]Diamond Collector S(队列,枚举

P3143题意:要在排好序的数列中找出两段长度和最大的不重合的区间,并使两个区间中的最大值与最小值的差不大于k。思路:先排序利用队列的性质,将以每一个元素为开始的可以放在同一层的钻石的数量记录下来。该元素分别为每一层放的第一个钻石的标号。枚举,最后在n个元素中找到两个元素,使两层放的钻石数量和最大,且不包含重复的钻石。输入 #17 31051129514输出 #15数组Valuek10 5 1 12 9 5 14k1 5 5 9 10 1

2020-09-18 20:28:09 422

原创 洛谷 P1950 长方形(单调栈

P1950 长方形题意:在一组点中找出全部的矩形,输出他们的数量。测试数据:输入6 4….***.….**…*.***输出38Q1.要如何才能做到不漏不重呢?统计每一行,以其作为底边所能组成矩形的个数。总和为方案数。在测试数据中,每一行的矩形个数分别为:10264106总和为38。Q2.如何统计每一行,以其作为底边的矩形数?定义 hi 为当前行第 i 列可向上延伸多少(即有多少为图画的块,如果当前块被图画那么值为0)使用单调栈算出 li 和

2020-09-17 16:37:27 447

原创 洛谷 P1440 求m区间内的最小值(单调队列,deque

P1440 求m区间内的最小值题意:要求找出每一个元素前m个元素中的最小值。简要分析:如果遍历n个元素,再对每一个元素往前搜索前m个元素,时间复杂度为O(N*M);说明/提示对于 100% 的数据,保证 1≤m≤n≤2×10^6。1≤ai​≤3×10^7。第一种方法写一定会TLE。第二种方法:既然要找前m个元素的最小值,考虑用队列把数据按从小到大的顺序存下来。单调队列单调队列,就是单调的队列。答案(最优解)存在队首,队尾就是最后入队的元素。如何判断这个数是不是在m区间之间呢?ty

2020-09-16 15:44:58 297

原创 洛谷 P1719 最大加权矩形(前缀和,最大子序列和,矩阵压缩

P1719 最大加权矩形这道题和P1115 最大子段和思路类似。只是将一维升到二维。很重要的解决思路,矩阵压缩。如果能把二维降到一维,那就好处理了。假设有一个矩阵:-5 6 41 -2 62 1 -3想得到其中任意一个矩阵,我们不妨先确定列。很明显用两个循环嵌套可以解决。假设我们取2,3列6 4-1 61 -3列取好之后那么每一行的和值就是确定的了。注意:用前缀和可以优化时间。105-2接下来我们再在这个一维数组中求最大子序列的和。就和P1115的做法一

2020-09-13 13:38:45 234

原创 洛谷 P3406 海底高铁(差分

P3406 海底高铁基本思路:对于其中一小段,我们要么全部买纸票,要么全部刷卡。所以我们只需要统计每一小段经过的总次数。如果你暴力模拟统计的话,估计(一定会tle。接下来来看一组例子:六个数:0 0 0 0 0 0如果想让它从第二个到第四个数全部+1,则为0 1 1 1 1 0如果这样模拟+1,所用的时间复杂度为O(N)如果记为0 1 0 0 0 -1所用时间复杂度为O(1)每一位的值就是其前缀和0 1 1 1 1 0这是一维空间内的差分,对于二维空间的差分。P3397 地

2020-09-12 12:57:19 266

原创 洛谷 P2671 求和(vector,数论

P2671 求和##20分做法看完这题,第一想法当然是无脑暴力啦…直接枚举x,y,z,看是否满足条件即可。算法复杂度为O(N^3)这样就可得20分了。当然,如果你想用更高级的算法不开long long也是可以的。##40分做法可以直接枚举x,z的值,通过条件(1)求出y。再看是否满足条件。算法复杂度为O(N^2)##40~50分做法仍然是枚举x,z的值,但可以先分析x+z=2*y的奇偶性,因为xyz是整数,因此2y是2的倍数,因此x,z必然都为偶数或奇数,因此可以分奇偶性进行枚举,此时这个三元

2020-09-11 19:37:03 292

原创 洛谷 P1825 [USACO11OPEN]Corn Maze S(bfs,特判一下传送门

洛谷 P1825震惊!这题居然是绿题!!题目大意是说要找到从A到B的最短路(走的步数最少很容易想到用bfs。搜路径的过程中注意几点:越界玉米(墙)走不过每个点只用搜一次传送门要特判,找到它对应的位置找到终点为了代码简单,我们可以写一个结构体,包含了x,y坐标和搜到这个点为止的时间。另外开一个数组记录是否搜过该点。int tu[305][305];int n,m;//范围int x,y;//起始位置int flag[305][305];typedef struct{

2020-09-09 15:42:32 245

原创 洛谷 P1032 字串变换(bfs,最少步骤,kmp

P1032 字串变换这题题目说了最多6个选项若在10步(包含10步)以内给了几个选项就一个一个试呗。蒟蒻首先想到dfs,但是一条路搜到黑时间复杂度太高,或者根本搜不到。。(dalao们设计搜索深度AC一般的,求解的个数用深搜,求最优解用广搜。取出队首元素,找字串,更改,放入队列字符串匹配的时候用STL可以大大提高敲代码效率。开两个数组记录串的转换关系,然后以a串(原串)为起点开始搜索,搜索目标是b串。需要一个map记录某个串是不是被搜到过,如果已经搜过了就不再继续搜 。我们枚举

2020-09-08 18:47:44 125

原创 洛谷 P1596 [USACO10OCT]Lake Counting S(dfs,搜就完事儿了

洛谷 P1596 题目大意:找一块儿地中水池的个数。基本思路:找到一个水池块时,将所有与他相连的水池块全部标记。且不越过旱地块儿。减枝操作:如果这个水池块儿搜过,那么就不用再搜了。什么时候更新最大值?当主函数中的循环,搜到新的水池块儿时,也是第一次搜到这个点,ans++。预处理:for(i=0;i<n;i++){ for(j=0;j<m;j++) { cin>>c; if(c=='W') k[i][

2020-09-07 14:22:10 304

原创 洛谷 P2404 自然数的拆分问题(dfs,用数组存结果

洛谷 P2404 题目要求将n按从小到大差分简单的回溯,但是题目要求将每一种方案都输出。那么想到(深思熟虑之后可以开一个数组,用来存组成这个数字的数。在深搜函数中写一个循环就能从小到大拆分数字。当剩下的数字是0时,说明数字已经差分完毕,输出数组所有的数。void dfs(int x,int y,int p){//剩下的数字,数组里面最后一个数字,数组位置 if(x==0&&y!=n) { int i; cout<<num[0

2020-09-07 12:56:09 158

原创 洛谷 P1101 单词方阵(dfs,全局与局部

传送门:洛谷 P1101 单词方阵【写在前面】很久没有写博客了,从2020年8月10日开始到成都,重庆旅游。回来后每天无所事事,一直玩到今天,良心过不去才来做题and写博客QAQ写博客的目的是自己监督自己学习,继续努力吧少年!^ - ^new month,new day!——————分界线————————一道简单的深搜题,退出搜索条件:1.超出边界2.搜过了,重复节点3.当前节点不匹配搜到了最后一个节点时,要将所有搜到的节点记录下来。为此我开了一个二维数组记录)全局变量:i

2020-09-01 13:28:07 145

空空如也

空空如也

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

TA关注的人

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