![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
洛谷
1
dream丶梦落
这个作者很懒,什么都没留下…
展开
-
洛谷-P5019 [NOIP2018 提高组] 铺设道路
P5019 [NOIP2018 提高组] 铺设道路它就是一个贪心。题目里给的样例是4,3,2,5,3,5;可以选择一个区间进行“填坑”操作;所以我们的贪心策略是:若a[i]>a[i-1],计数器sum+=a[i]-a[i-1];那么为什么这样贪心是对的呢?贪心证明假设现在有一个坑,但旁边又有一个坑。你肯定会选择把两个同时减1;那么小的坑肯定会被大的坑“带着”填掉。大的坑也会减少a[i]-a[i-1]的深度,可以说是“免费的”;所以这样贪心是对的;注:由于第一个坑左边没有坑原创 2021-11-16 17:35:39 · 440 阅读 · 0 评论 -
洛谷-P1219 [USACO1.5]八皇后 Checker Challenge
题目链接#include<bits/stdc++.h>using namespace std;const int N = 40;int a[N],b[N],c[N],d[N];int n,flag;void dfs(int i){ if(i>n) { if(flag<=2) { for(int i=1;i<=n;i++) cout<<a[i]<<" "; cout<<endl; }原创 2021-11-16 17:26:09 · 218 阅读 · 0 评论 -
洛谷-P1332 血色先锋队(多元bfs)
题目链接在入队的时候,将所有的起点都入队然后统一搜索#include<iostream>#include<queue>#include<cstring>using namespace std;const int N = 510;int mapp[N][N],flag[N][N];int dx[] = {1,-1,0,0},dy[] = {0,0,1,-1} ;int cnt[100000][2];int n,m;struct node{ in原创 2021-11-16 17:19:46 · 453 阅读 · 0 评论 -
洛谷-P1443 马的遍历 P1434 [SHOI2002]滑雪(记忆化搜索)
题目链接本题关键字:记忆化搜索。首先,这题为什么会想到记忆化?在dfs每种情况是,可能这个点之前已经搜过了,没必要再去搜索了,因此不如存储记住,就没必要再去dfs了。我们可以利用一个数组存入从起点到每一个点所需的最短路径(mapp[next.x][next.y] = mapp[now.x][now.y] + 1;),如果直接用常规的bfs会TLE。#include<bits/stdc++.h>using namespace std;const int N = 400;int原创 2021-11-16 17:16:44 · 281 阅读 · 0 评论 -
洛谷-P2372 yyy2015c01挑战算周长
题目链接t题目是一个简单的DFS,但是他让计算的是周长,而不是面积,所以我们在找到#include<bits/stdc++.h>using namespace std;const int N = 30;char mapp[N][N];int flag[N][N];int n,m;int dx[8]={-1,0,0,1,-1,-1,1,1},dy[8]={0,-1,1,0,-1,1,-1,1}; int step;int move(int x1,int y1){ i原创 2021-11-16 16:47:36 · 757 阅读 · 0 评论 -
洛谷-P1162 填涂颜色
题目链接题目大意:给定地图,然后把地图中被1围起来的0变为2解题思路:给点的地图为n * n,我们先将地图四周扩大为n+1*n+1填充0,然后我们从(1,1)出发用dfs遇见1停止,遇见0标记,地图中被1围起来的0我们用dfs进不去所以未标记,最后如果!flag[i][j]&&mapp[i][j]==0 我们输出2,否者就输出mapp[i][j]注:将地图四周扩大为n+1*n+1填充0,是为了防止边缘都是1的情况。#include<iostream>#include&l原创 2021-11-14 13:05:46 · 310 阅读 · 0 评论 -
洛谷-01迷宫
题目链接题目大意:有一个迷宫他只有0 和 1,你每次只可以从0走到1或者1走到0,不能走0 0 或者 1 1,给定地图和某点坐标求最多可以走多少个格子。只需要用DFS找到所有的联通块,联通块内所有的格子的答案都是这个联通块的格子数目。题目中n≤1000,m≤100000如果每个一个点的坐标就遍历一次会TLE,由于是求联通块的格子数目,所以在一个联通块内的可以走过的格子数目应该是一样的,所以我们可以开一个cnt[200010]数组来记录。我们将同一连通块内的flag数组定义为t,下一个连通块t++,最后原创 2021-11-14 12:47:13 · 333 阅读 · 0 评论 -
洛谷——P1451 求细胞数量
题目链接求联通块有多少个由于题目的输入是一串字符,用scanf读入整数的时候可以控制读入的位数,比如scanf("%1d",&mapp[i][j]);#include<iostream>using namespace std;const int N = 110;int mapp[N][N],flag[N][N];int n,m,cnt;int dx[] = {1,-1,0,0};int dy[] = {0,0,1,-1};void dfs(int x,int原创 2021-11-14 12:10:45 · 283 阅读 · 0 评论