蓝桥杯训练
唐火
开始人工智能之路了!!!
展开
-
洛谷 P2853 [USACO06DEC]Cow Picnic S-dfs
输入:2 4 4231 21 42 33 4输出:2代码如下:#include <iostream>#include <vector>#include <cstring>using namespace std;const int N = 1010;bool vis[N];vector<int>v[N];int r[N];int mk[N];void dfs(int u) { mk[u]++; for (int原创 2021-04-14 00:34:06 · 131 阅读 · 0 评论 -
dptcpp 题目 2352: [信息学奥赛一本通-T1440]数的划分-dp
题目描述将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。{1,1,5};{1,5,1};{5,1,1};问有多少种不同的分法。 输出一个整数,即不同的分法。输入两个整数n,k(6<n≤200,2≤k≤6),中间用单个空格隔开。输出一个整数,即不同的分法。样例输入7 3样例输出4提示四种分法为:{1,1,5};{1,2,4};{1,3,3};{2,2,3}。代码如下:#include <iostre原创 2021-04-13 22:06:45 · 187 阅读 · 0 评论 -
数字和为sum的方法数-01背包计数问题
给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。输入描述:输入为两行:第一行为两个正整数n(1 ≤ n ≤ 1000),sum(1 ≤ sum ≤ 1000)第二行为n个正整数Ai,以空格隔开。输出描述:输出所求的方案数示例1输入5 15 5 5 10 2 3输出4#include <iostream>using namespace std;const int原创 2021-04-13 20:33:11 · 164 阅读 · 0 评论 -
洛谷 P1294 高手去散步-邻接矩阵+dfs-求无向图的一条最长路径
输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60输出:150代码如下:#include <iostream>using namespace std;int ans = -1;const int N = 25;int mp[N][N];bool vis[N];int n, m;void dfs(int u, int sum) { ans = max(ans, sum); for (int i = 1; i <原创 2021-04-13 13:39:16 · 510 阅读 · 0 评论 -
洛谷 P1958 上学路线-dfs
输入:5 432 22 34 2输出:5注意点:这题目输入的时候先输入列,再输入行,这点要注意,然后这个图跟我们二维数组是反过来的,所以题目说得向北走要变成向南走,注意一下细节就好了。代码如下:#include <iostream>using namespace std;const int N = 20;int dx[] = {0, 1};bool vis[N][N];int mp[N][N];int dy[] = {1, 0};int ans;原创 2021-04-13 00:37:16 · 317 阅读 · 3 评论 -
洛谷 P1122 最大子树和-求树的最大子树权值和
输入:7-1 -1 -1 1 1 1 01 42 53 64 75 76 7输出:3代码如下:#include <iostream>#include <vector>using namespace std;const int N = 100010;typedef long long LL;LL ans;vector<LL>t[N];LL w[N];void dfs(int root, int fa) { for (int.原创 2021-04-12 23:08:55 · 151 阅读 · 0 评论 -
洛谷 P1162 填涂颜色-dfs染色法
输入:60 0 0 0 0 00 0 1 1 1 10 1 1 0 0 11 1 0 0 0 11 0 0 0 0 11 1 1 1 1 1输出:0 0 0 0 0 00 0 1 1 1 10 1 1 2 2 11 1 2 2 2 11 2 2 2 2 11 1 1 1 1 1代码如下:#include <iostream>using namespace std;const int N = 40;int mp[N][N], mps[N][N];i.原创 2021-04-12 18:55:04 · 195 阅读 · 0 评论 -
洛谷 P1506 拯救oibh总部-dfs染色法
题目背景oibh总部突然被水淹没了!现在需要你的救援……题目描述oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用号表示,而一个封闭的号区域洪水是进不去的……现在给出oibh的围墙建设图,问oibh总部没被淹到的重要区域(由"0"表示)有多少。输入格式第一行是两个数,x和y(x,y<=500)第二行及以下是一个由和0组成的xy的图。输出格式输出没被水淹没的oibh总部的“0”的数量。样例输入14 50000000*000*0*000原创 2021-04-12 13:37:56 · 264 阅读 · 1 评论 -
洛谷 P1596 [USACO10OCT]Lake Counting S-dfs
题目描述Due to recent rains, water has pooled in various places in Farmer John’s field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water (‘W’) or dry land (’.’). Farmer John wou原创 2021-04-03 22:34:59 · 564 阅读 · 0 评论 -
洛谷T172100 商店-贪心
解题思路:贪心代码如下:#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int a[N], w[N];int ans;int main() { int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i..原创 2021-03-28 18:23:54 · 160 阅读 · 2 评论 -
洛谷T172098 子串-substr
代码如下:#include <iostream>#include <cstring>using namespace std;int main() { int cnt; cin >> cnt; string a, b; while (cnt--) { int n, m; cin >> n >> m; cin >> a; cin >> b; int ans = 0 ; for (in..原创 2021-03-28 18:21:01 · 164 阅读 · 0 评论 -
dotcpp1115 DNA-打印图案
题目描述小强从小就喜欢生命科学,他总是好奇花草鸟兽从哪里来的。终于, 小强上中学了,接触到了神圣的名词–DNA.它有一个双螺旋的结构。这让一根筋的小强抓破头皮,“要是能画出来就好了” 小强喊道。现在就请你帮助他吧输入输入包含多组测试数据。第一个整数N(N<=15),N表示组数,每组数据包含两个整数a,b。a表示一个单位的DNA串的行数,a为奇数且 3<=a<=39。b表示重复度(1<=b<=20)。输出输出DNA的形状,每组输出间有一空行。样例输入23 15原创 2021-03-28 14:48:05 · 136 阅读 · 0 评论 -
吃鸡蛋-优先队列
题目描述小林养了一只母鸡,一连 n 天,每天都可以生下若干个鸡蛋。在第 i 天,母鸡会生下 eggs[i] 个鸡蛋,这些鸡蛋将会在days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,母鸡不会生下新的鸡蛋,此时用 eggs[i] = 0 且 days[i] = 0 表示。你打算每天最多吃一个鸡蛋来保证营养均衡。注意,你可以在这 n 天之后继续吃鸡蛋。给你两个长度为 n 的整数数组 eggs 和 days ,返回你可以吃掉的鸡蛋的最大数目。输入格式第一行原创 2021-03-25 10:05:39 · 193 阅读 · 0 评论 -
7的序列-数论
题目背景墨家机关城即将被攻陷,墨家家主无意间发现了一道逃生密道,但这道密道需要密码,机智的你决定参与密码的破译。题目描述密码门上有两行数字序列,数字均为非负整数,根据门上的古语,你需要求出满足以下关系的所有等式的数量。(ai−bj)%7=0(a_i-b_j)\%7=0(ai−bj)%7=0其中a为第一行数字序列,b为第二行数字序列,i代表第一行数字序列中的第i个,j代表第二行数字序列中的第j个。输入格式第一行两个整数n和m,代表第一行数字序列有n个数,第二行数字数列有m个数。第二行输入n原创 2021-03-24 17:21:46 · 217 阅读 · 0 评论 -
上元节的灯会(灭)-区间dp
题目背景上元节的庙会上,牛宝靠自己的聪明才智成功破解了花灯阵,点亮了在场所有花灯,但他没料到的是这个游戏包含AB两个项目,A项目就是点亮所有花灯,而B项目则是熄灭所有花灯。不过点亮的是花灯阵,熄灭的则是花灯环。题目描述熄灭花灯环的规则如下:在一个环形的花灯圈中,每隔一段距离摆放着一个花灯堆,每个花灯堆都由一定数量的花灯组成,共有n个花灯堆(n<= 100),现要将花灯全部熄灭,需要消耗牛宝体力值为10。不过在熄灭花灯之前,必须先将所有花灯堆聚集到一起才行。牛宝体力有限,每次只能将相邻的两个花灯原创 2021-03-24 14:25:38 · 149 阅读 · 0 评论 -
洛谷 P1706 P1036 -小试牛刀
题目描述输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。输入格式一个整数 n。输出格式由 1∼n1∼n1∼n 组成的所有不重复的数字序列,每行一个序列。每个数字保留 5 个场宽。输入输出样例输入3输出1 2 31 3 22 1 32 3 13 1 23 2 1说明/提示1≤n≤91≤n≤91≤n≤9代码如下:#include<bi原创 2021-03-22 20:18:46 · 243 阅读 · 0 评论 -
搭积木-贪心
代码如下:#include <iostream>using namespace std;const int N = 110;struct huan { int w; int l; int r;};huan node[N];int ans;int main() { int n; int cnt; cin >> n; cnt = n; for (int i = 1; i <= n; i++) { int x; cin >>原创 2021-03-22 09:11:32 · 206 阅读 · 2 评论 -
科学家的假想-substr的妙用
代码如下:#include <iostream>#include <cstring>using namespace std;int main() { string s; cin >> s; int ans = 0; string b = "ATGC"; for (int i = 0; i < s.length(); i++) { if (s.substr(i, 4) == b) ans++; } if (ans >= 2)原创 2021-03-21 21:18:49 · 84 阅读 · 0 评论 -
走迷宫-双向bfs解法
双向bfs适用于知道起点和终点的状态下使用,从起点和终点两个方向开始进行搜索,可以非常大的提高单个bfs的搜索效率同样,实现也是通过队列的方式,可以设置两个队列,一个队列保存从起点开始搜索的状态,另一个队列用来保存从终点开始搜索的状态,如果某一个状态下出现相交的情况,那么就出现了答案用一张图来进行说明当两种颜色相遇的时候,说明两个方向的搜索树遇到一起,这个时候就搜到了答案。例题1:走迷宫问题描述:一个迷宫由 R R R行 C C C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以.原创 2021-03-18 23:42:30 · 419 阅读 · 0 评论 -
瓷砖铺放-dfs
题目描述有一长度为N(1< =N< =10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?例如,长度为4的地面一共有如下5种铺法:4=1+1+1+14=2+1+14=1+2+14=1+1+24=2+2编程用递归的方法求解上述问题。输入只有一个数N,代表地板的长度输出输出一个数,代表所有不同的瓷砖铺放方法的总数样例输入4样例输出5水题!!!!!代码如下:#include <iostr原创 2021-03-17 14:54:39 · 231 阅读 · 1 评论 -
C++ stringstream输入方式
在题目中,我们有时候会遇到不知道要输入多少个元素,这个时候我们要怎么读取呢?采用stringstream输入方式,头文件为< sstream >代码如下:#include <iostream>#include <cstring>#include <sstream>using namespace std;const int N = 1010;int a[N];int main() { string line; getline(cin, l原创 2021-03-17 13:13:29 · 502 阅读 · 3 评论 -
上元节的灯会(亮)-dfs
题目背景上元佳节,庙会里举办着各式各样的庆典活动,牛宝也兴奋地参与其中。突然,他被一个新颖的点灯游戏所吸引,游戏要求最终点亮所有在场的花灯,每盏灯都有开关两种状态,每一次点击在场的一盏任意状态的花灯,其自身和四周的的花灯都会改变其开关状态。例如3*3的花灯阵0 1 11 0 01 0 1点一下最中间的灯【2,2】就变成了0 0 10 1 11 1 1再点一下左上角的灯【1,1】就变成了1 1 11 1 11 1 1最终输出点亮花灯的序号(从左上角到右下角序号依次为1-9),答案原创 2021-03-15 08:40:51 · 176 阅读 · 0 评论 -
洛谷 P2040 打开所有的灯-dfs
题目背景pmshz在玩一个益(ruo)智(zhi)的小游戏,目的是打开九盏灯所有的灯,这样的游戏难倒了pmshz。。。题目描述这个灯很奇(fan)怪(ren),点一下就会将这个灯和其周围四盏灯的开关状态全部改变。现在你的任务就是就是告诉pmshz要全部打开这些灯。例如0 1 11 0 01 0 1点一下最中间的灯【2,2】就变成了0 0 10 1 11 1 1再点一下左上角的灯【1,1】就变成了1 1 11 1 11 1 1达成目标。最少需原创 2021-03-15 00:04:34 · 411 阅读 · 0 评论 -
统计二进制数-dp
题目描述输入一个正整数m,请输出从0到m中每一个数字二进制数中含有1的个数的总和,由于数值较大结果需要模100000.输入格式一个m输出格式二进制数中含有1的个数的总和s输入输出样例输入2输出2输入5输出7说明/提示样例说明20%的数据 m<=50050%的数据 m<=100070%的数据 m<=50000000100%的数据 m<=100000000内存限制500MB解题思路:这种解法效率最高,有几个1就执行几次。把一个整数减去1,在原创 2021-03-15 00:03:59 · 2074 阅读 · 14 评论 -
密电破译-dp
题目背景墨家家主召集弟子的原因是因为截获了密电并破获了重大情报,“公主薨,国王失踪,墨家即将面临灭顶之灾”。题目描述密电是由大小写字母组成字符串,密电之所以能破译是因为墨家掌握了破解方法,密钥是一个整数t,代表按字母表循环顺位t个字母。比如:密电:Abccz密钥:1破译结果:Bcdda但是,敌人其实加密方法早就已经升级了,凡是元音字母均不替换。比如:密电:Abccz密钥:1破译结果:Acdda现在定义信息相似度为两个字符串的最大公共子串的长度。 最大公共子串就是,两个字符串的所有子原创 2021-03-15 00:03:34 · 735 阅读 · 0 评论 -
数码管
题目背景小明的单片机上面的LED显示屏坏掉了,于是他请你来为他修显示屏。 屏幕上可以显示0~9的数字,其中每个数字由7个小二极管组成,各个数字对应的表示方式如图所示:题目描述为了排除电路故障,现在你需要计算,将数字A变为数字B需要经过多少次变换? 注意:现在将其中每段小二极管的开和关都定义为一次变换。例如数字1变为2是5次操作。输入格式第一行为一个正整数L,表示数码的长度。 接下来两行是两个长度为L的数字A和B,表示要把数字A变成数字B(数字可以以0开头)。输出格式一行一个整数,表示这些小二原创 2021-03-15 00:03:11 · 219 阅读 · 0 评论 -
最长公共子串-dp
题目:给定两个字符串,求出它们之间最长的相同子字符串的长度。公共子串和公共子序列不同,公共子序列不要求连续,但公共子串必须是连续的。如:A = “helloworld”B = “loop”A和B的最长公共子序列是"loo",但最长公共子串是"lo"解题思路:代码如下:#include <iostream>using namespace std;string a, b;const int N = 1010;int dp[N][N];int maxs = -1;int原创 2021-03-15 00:02:48 · 178 阅读 · 0 评论 -
最长公共子序列-dp
一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。解题思路:代码如下:#include <iostream>#include <cstring>using namespace std;string a, b;cons.原创 2021-03-14 00:14:45 · 143 阅读 · 0 评论 -
[NOIP2008 提高组] 笨小猴-map容器用来标记
题目描述笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。输入格式一个单词,其中只可能出现小写字母,并且长度小于100100。输出格式共两行,第一行是一个字符串,假设输入的的单词是Luc原创 2021-03-11 19:28:49 · 290 阅读 · 2 评论 -
[召集令]-Dijkstra的单源最短路径算法
题目背景墨家家主发出召集令,所有弟子得迅速到指定地点集合。题目描述给定一张地图,含有n个地点(n<=10000),地点从1开始编号,地图上还含有m条单向路(m<=100000)连接着这些地点,墨家家主在1号位置,其余n-1个地点都有一个墨家弟子,通过一条路,从一个地点到另外一个地点需要花费一定的金钱, 第i条路需要花费wiw_iwi(wiw_iwi<=10000)问:所有弟子到墨家家主所在位置至少需要花费多少金钱。输入格式第一行,两个整数,分别是n和m,代表n个地点和m条单原创 2021-03-11 00:08:22 · 151 阅读 · 2 评论 -
不同路径 II-dp
题目背景一个机器人位于一个 n x m 网格的左上角 机器人每次只能向下或者向右移动一步。它试图达到网格的右下角题目描述现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 网格中的障碍物和空位置分别用 1 和 0 来表示。输入格式第一行两个数n,m,第二行到n+1行为网格输出格式路径总数输入输出样例输入3 3000010000输出2说明/提示1 <= m, n <= 100网格里只有 0 或 1另: 对于样例,3x3 网格的正中间有一个原创 2021-03-10 00:16:01 · 131 阅读 · 3 评论 -
旧键盘
题目背景小明的键盘使用年限长,输入时键盘的按键时不时会有粘滞。出现粘滞情况时,上一个被按下的按键会被长按,而字符可能被输入一次或多次。题目描述给出小明将要输入的字符串s,和小明实际输入的字符串t,请你判断小明实际输入的字符串t是否对应s,即使出现键盘粘滞情况。输入格式第一行输入字符串s,第二行输入字符串t。输出格式如果t对应s(t中某些字符被长按)输出yes,否则输出no。说明/提示对于样例1,l和i被长按。对于样例2,b被少按了一次。对于样例3,t没有被长按s.length &l原创 2021-03-09 00:07:56 · 184 阅读 · 0 评论