
蓝桥杯进击!!
主要用于收录ACwing里面的有关蓝桥杯的经典题型
永夜天
小呆呆
展开
-
二分 | 思想 | 题解
二分步骤:1. 先写一个 check 函数2. 判定在 check 的情况下(true和false的情况下),如何更新区间。3. 在 check(m) == true 的分支下是:4. l = mid的情况,中间点的更新方式是m = (l+r+1) / 25. r = mid的情况,中间点的更新方式是m = (l+r) / 2这种方法保证了:1. 最后的 l == r2. 搜索到达的答案是闭区间的,即a[ l ]是满足 check() 条件的。例题 1题目描述给定一个按照升.原创 2022-02-28 00:15:00 · 147 阅读 · 1 评论 -
蓝桥杯省赛C++B组真题——翻硬币(递推)
题目:小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相邻的两个硬币叫做一步操作。输入格式两行等长的字符串,分别表示初始状态和要达到的目标状态。输出格式.原创 2021-12-25 20:29:46 · 447 阅读 · 1 评论 -
带分数——第四届蓝桥杯省赛C++B/C组(递归进阶)
学完前面三节基础的三种递归枚举。接下来就是有点难的进阶题了。请看题目:100可以表示为带分数的形式:100=3+69258/714还可以表示为:100=82+3546/197注意特征:带分数中,数字1∼9分别出现且只出现一次(不包含00)。类似这样的带分数,100 有11种表示法。输入格式一个正整数。输出格式输出输入数字用数码1∼9不重复不遗漏地组成带分数表示的全部种数。数据范围1≤N<10^6输入样例1:...原创 2021-12-23 20:55:48 · 579 阅读 · 0 评论 -
递归实现组合型枚举 AcWing 93. 题解
题目:从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输出样例:...原创 2021-12-22 20:36:34 · 137 阅读 · 0 评论 -
递归实现排列型枚举 AcWing 94.题解
#include <iostream>#include <cstdio>using namespace std;const int N = 10;int n;int st[N]; //挖坑,存储数据的坑int zt[N]; //ture代表这个数已经放了,false代表还没放进去void dfs(int u){ while(u > n) // 到了边界,输出 { for(int i = 1; i <= n; i++).原创 2021-12-22 19:29:52 · 295 阅读 · 0 评论 -
简单斐波那契 717. ACwing
以下数列0 1 1 2 3 5 8 13 21 ...被称为斐波纳契数列。这个数列从第33项开始,每一项都等于前两项之和。输入一个整数NN,请你输出这个序列的前NN项。输入格式一个整数NN。输出格式在一行中输出斐波那契数列的前NN项,数字之间用空格隔开。数据范围0<N<460<N<46输入样例:5输出样例:0 1 1 2 3这题用一个简单的递推就可以完成。#include <io...原创 2021-12-21 15:51:18 · 202 阅读 · 0 评论 -
递归实现指数型枚举--ACwing 92.题解
题目:从1∼n这nn个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数nn。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤15输入样例:3输出样例:322 311 31 21 2 3很明显这是递归三大类型之一:指数型枚举所以我们可以有递归搜...原创 2021-12-21 15:35:17 · 160 阅读 · 0 评论