搜索
究极无敌暴龙战神
无限进步
展开
-
洛谷 二分搜索算法官方题单 个人题解 持续更新
第一题 查找#include<bits/stdc++.h>using namespace std;const int N=1e6+10;int a[N];int main(){ int n,m; cin >> n >> m; for(int i=0;i<n;i++){ cin >> a[i]; } while(m--){ int q; cin >>原创 2021-11-23 20:47:15 · 909 阅读 · 0 评论 -
苹果
有 3030 个篮子,每个篮子里有若干个苹果,篮子里的苹果数序列已经给出。现在要把苹果分给小朋友们,每个小朋友要么从一个篮子里拿三个苹果,要么从相邻的三个篮子里各拿一个苹果。苹果可以剩余,而且不同的拿法会导致不同的答案。比如对于序列3 1 3 ,可以分给两个小朋友变成0 1 0;也可以分给一个小朋友变成2 0 2,此时不能继续再分了。所以答案是 2 。求问对于以下序列,最多分给几个小朋友?这题正解是dp,但俺不会,因为学会了dp再说吧,这里给出大佬暴力的代码(连暴力我也没想到qaq)int ans转载 2021-04-15 21:35:09 · 114 阅读 · 0 评论 -
地宫取宝dp
地宫取宝题目提交记录讨论题解视频讲解X 国王有一个地宫宝库,是 n×m 个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是 k 件,则这些宝贝就可以送给小明。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这 k 件宝贝。输入格式.原创 2021-04-13 09:20:13 · 130 阅读 · 0 评论 -
地宫取宝 搜索 dp
地宫取宝题目提交记录讨论题解视频讲解X 国王有一个地宫宝库,是 n×m 个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是 k 件,则这些宝贝就可以送给小明。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这 k 件宝贝。输入格式.转载 2021-04-13 09:18:13 · 64 阅读 · 0 评论 -
八数码
八数码题目提交记录讨论题解视频讲解在一个 3×3 的网格中,1∼8 这 8 个数字和一个 x 恰好不重不漏地分布在这 3×3 的网格中。例如:1 2 3x 4 67 5 8在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 x例如,示例中图形就可以通过让 x 先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下:1 2 3 1 2 3 .转载 2021-04-10 22:35:44 · 340 阅读 · 0 评论 -
蓝桥杯 剪邮票
剪邮票如【图1.jpg】, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。**思路;先用dfs枚举1-12全排列,注意只向前枚举防止发生12345,21345类似的重复情况,然后对于枚举的每种情况在bfs一下看是否满足题意,这nt原创 2021-04-09 11:27:07 · 92 阅读 · 0 评论 -
飞行员兄弟 dfs
飞行员兄弟题目提交记录讨论题解视频讲解“飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱。已知每个把手可以处于以下两种状态之一:打开或关闭。只有当所有把手都打开时,冰箱才会打开。把手可以表示为一个 4×4 的矩阵,您可以改变任何一个位置 [i,j] 上把手的状态。但是,这也会使得第 i 行和第 j 列上的所有把手的状态也随着改变。请你求出打开冰箱所需的切换把手的次数最小值是多少。输入格式输入一共包含四行,每行包含四个把手的初始状态。符号 + 表示把手处于闭.转载 2021-03-27 22:51:44 · 160 阅读 · 0 评论 -
递推 贪心 翻硬币
小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:oo*oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相邻的两个硬币叫做一步操作。输入格式两行等长的字符串,分别表示初始状态和要达到的目标状态。输出格式一个整数,表示最小操作步数数据范围输入转载 2021-03-25 19:37:01 · 101 阅读 · 0 评论 -
递归实现组合枚举 dfs基础 1
从 1∼n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。输入格式两个整数 n,m ,在同一行用空格隔开。输出格式按照从小到大的顺序输出所有方案,每行 1 个。首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如 1 3 5 7 排在 1 3 6 8 前面)。数据范围n>0 ,0≤m≤n ,n+(n−m)≤25输入样例:5 3输出样例:1 2 31 2 41 2 51 3 41 3原创 2021-03-25 08:54:01 · 73 阅读 · 0 评论 -
递归实现指数型枚举 dfs vector数组存路径
从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数 n。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好 1 个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤15输入样例:3输出样例:322 311 31 21 2 3#include<bits/stdc++.h>using namespace std;const in原创 2021-03-24 17:28:41 · 93 阅读 · 0 评论 -
带分数 dfs全排列
100 可以表示为带分数的形式:100=3+69258714还可以表示为:100=82+3546197注意特征:带分数中,数字 1∼9 分别出现且只出现一次(不包含 0)。类似这样的带分数,100 有 11 种表示法。输入格式一个正整数。输出格式输出输入数字用数码 1∼9 不重复不遗漏地组成带分数表示的全部种数。数据范围1≤N<106输入样例1:100输出样例1:11输入样例2:105输出样例2:6#include <iostream>using n原创 2021-03-24 16:37:31 · 121 阅读 · 0 评论 -
方格分割 dfs &&思维
6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图:#include<iostream>#include<cstring>using namespace std;#define maxn 7bool vis[maxn][maxn];int dir[4][2] = { {0,1},{0,-1},{1,0},{-1,0} };int ans = 0;void dfs(int x, int y) { if (x == 0 || x == 6 ||原创 2021-03-17 22:31:13 · 69 阅读 · 0 评论 -
非常可乐(bfs)
大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。聪明的ACMER你们说他们能平分吗?如果能请输出倒可乐的最少的次数,如果不能输出"NO"转载 2021-03-11 21:29:46 · 288 阅读 · 0 评论 -
bfs 青蛙跳
X 星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。X 星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。*WWWBBB其中,W 字母表示白色青蛙,B 字母表示黑色青蛙,* 表示空杯子。X 星的青蛙很有些癖好,它们只做 3 个动作之一:跳到相邻的空杯子里。隔着 1 只其它的青蛙(随便什么颜色)跳到空杯子里。隔着 2 只其它的青蛙(随便什么颜色)跳到空杯子里。对于上图的局面,只要 1 步,就可跳成下图局面:原创 2021-03-10 16:08:21 · 121 阅读 · 0 评论 -
bfs+路径输出
定义一个二维数组:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。Input一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。Output左上角到右下角的最短路径,格式如样例所示。Sample Input0原创 2021-03-10 15:24:54 · 208 阅读 · 0 评论