【ACM】—蓝桥杯大一暑期集训Day3

这篇具有很好参考价值的文章主要介绍了【ACM】—蓝桥杯大一暑期集训Day3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🚀欢迎来到本文🚀
🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。
🏀系列专栏:陈童学的日记
💡其他专栏:C++STL,感兴趣的小伙伴可以看看。
🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​
⛱️学习应使你快乐!望与诸君共勉!🏄‍♂️

【ACM】—蓝桥杯大一暑期集训Day3,ACM,ACM,蓝桥杯,算法,c++,深度优先

前言

因参加了我校的ACM暑期集训为之后的xcpc等赛事做准备,所以就有了此文哈哈。本文主要复盘做题的过程以及一些感悟,便于复习巩固。辣么现在废话也不多说啦,直接往下看吧哈哈。

A - Subtraction Game

来源:CodeForces - 1844A. Subtraction Game
【ACM】—蓝桥杯大一暑期集训Day3,ACM,ACM,蓝桥杯,算法,c++,深度优先
【ACM】—蓝桥杯大一暑期集训Day3,ACM,ACM,蓝桥杯,算法,c++,深度优先
题意: 两个人先后从一堆石子中取a或b个石子,最先无法取得石子的人就输了,输入给出a和b,要求输出的n使得先手开局必输。

解题思路

这道题其实是雷声大雨点小啦,就是谁先把石子取完让另一个人无法再取的话就赢了,那么只要后手的那个人取石子的时候能够全部取完让先手的无法取得即可求解,题目所给样例可能有点迷惑性哈。

示例代码

#include <bits/stdc++.h>
using namespace std;
int main() {
    int t,a,b;
    cin>>t;
    while (t--) {
        cin>>a>>b;
        cout<<a+b<<endl;
    }
    return 0;
}

B - 全排列

来源:洛谷P1706 全排列问题
【ACM】—蓝桥杯大一暑期集训Day3,ACM,ACM,蓝桥杯,算法,c++,深度优先

解题思路

本题用dfs深搜回溯再剪枝把所有情况罗列出来即可

示例代码

#include<bits/stdc++.h>
using namespace std;
int n,g[105],s[105];
void print(){
	for(int i=1;i<=n;i++)
		printf("%5d",s[i]);
	printf("\n");
}
void dfs(int x){
	if(x==n){
		print();
		return;
	}
	for(int i=1;i<=n;i++){
		if(!g[i]){
			g[i]=1;
			s[x+1]=i;
			dfs(x+1);
			g[i]=0;
		}
	}
}
int main(){
	cin>>n;
	dfs(0);
}

C - 健康的奶牛

来源:洛谷P1460 [USACO2.1] 健康的荷斯坦奶牛 Healthy Holsteins
【ACM】—蓝桥杯大一暑期集训Day3,ACM,ACM,蓝桥杯,算法,c++,深度优先
【ACM】—蓝桥杯大一暑期集训Day3,ACM,ACM,蓝桥杯,算法,c++,深度优先

解题思路

这道题用dfs深搜不需要剪枝,本蒟蒻没有做出来,看了某位神犇的哇

示例代码

#include<bits/stdc++.h>
using namespace std;
int co[1001];
int a[1001];
int b[1001][1001];
int c[1001];
int n,m,minn=0x3f3f3f3f;
bool judge(int x){
	for(int i=1;i<=n;i++){
		int sum=0;
		for(int j=1;j<=x;j++)
			sum+=b[c[j]][i];
	if(sum<a[i])
		return false;		
	}
	return true;
}

void dfs(int t,int s){
	if(t>m){
		if(judge(s)){
			if(s<minn){
				minn=s;
				for(int i=1;i<=minn;i++)
					co[i]=c[i];
			}
		}
		return;
	}
	c[s+1]=t;
	dfs(t+1,s+1);
	c[s+1]=0;
	dfs(t+1,s);

}

int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	cin>>m;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++)
			cin>>b[i][j];
	}
	dfs(1,0);
	cout<<minn<<' ';
	for(int i=1;i<=minn;i++)
		cout<<co[i]<<' ';
}

D - New Year Transportation

来源:CodeForces - 500A. New Year Transportation

【ACM】—蓝桥杯大一暑期集训Day3,ACM,ACM,蓝桥杯,算法,c++,深度优先
【ACM】—蓝桥杯大一暑期集训Day3,ACM,ACM,蓝桥杯,算法,c++,深度优先

【ACM】—蓝桥杯大一暑期集训Day3,ACM,ACM,蓝桥杯,算法,c++,深度优先

解题思路

这题用for循环递推一下,理清思路即可。

示例代码

#include<iostream>
using namespace std;
int main()
{
	int a[30005];
	int n,t,i;
	cin>>n>>t;
	for(i=1;i<n;i++)
		cin>>a[i];
	for(i=1;i<t;i+=a[i]); //递推
	if(i==t)
		cout<<"YES"<<endl;
	else
		cout<<"NO"<<endl;
}

总结

Day3的题主要考察搜索,这类算法通常较难,需多加理解递归思想。
算法:dfs、bfs、回溯、递归、递推
感悟:dfs、bfs等算法的使用还需多加做题才能深入理解
总结:每个算法都有其巧妙处,搜索算法更是巧妙文章来源地址https://www.toymoban.com/news/detail-569698.html

到了这里,关于【ACM】—蓝桥杯大一暑期集训Day3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习DAY3:神经网络训练常见算法概述

    这是最常见的神经网络训练方法之一。它通过计算损失函数对权重的梯度,并沿着梯度的反方向更新权重,从而逐步减小损失函数的值。梯度下降有多个变种,包括随机梯度下降(SGD)和小批量梯度下降。 反向传播是一种基于链式法则的方法,用于计算神经网络中每个神经元

    2024年02月07日
    浏览(44)
  • 算法竞赛备赛之经典基础算法训练提升,暑期集训营培训

      目录 1.排序 1.1.快速排序 1.2.归并排序 2.二分 2.1.整数 2.2.浮点数 3.高精度 3.1.高精度加法 3.2.高精度减法 3.3.高精度乘法 3.4.高精度除法 4.前缀和 5.差分 6.双指针算法 7.位运算 8.离散化 8.1.unique函数实现 9.区间合并 快速排序的基本思想来自于分治。 首先,确定分界点的方法:

    2024年02月15日
    浏览(48)
  • 算法竞赛备赛之经典数据结构训练提升,暑期集训营培训

    我们将结构体和指针结合来实现链表 我们算法主要是用数组来模拟链表,这样效率会高一些。 数组模拟单链表 邻接表:存储图和树 实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数 删除第k个插入的数后面的数 在第k个前面插入一个数 数组模拟双链表的

    2024年02月16日
    浏览(53)
  • 算法竞赛备赛之搜索与图论训练提升,暑期集训营培训

    目录 1.DFS和BFS 1.1.DFS深度优先搜索 1.2.BFS广度优先搜索 2.树与图的遍历:拓扑排序 3.最短路  3.1.迪杰斯特拉算法 3.2.贝尔曼算法 3.3.SPFA算法 3.4.多源汇最短路Floy算法 4.最小生成树 4.1.普利姆算法 4.2.克鲁斯卡尔算法 5.二分图:染色法,匈牙利算法 5.1.染色法 5.2.匈牙利算法 深度优

    2024年02月13日
    浏览(34)
  • 蓝桥杯打卡Day3

    文章目录 吃糖果 递推数列 本题思路: 本题题意就是斐波那契数列! 本题思路: 按照题意递推即可!

    2024年02月09日
    浏览(42)
  • 蓝桥杯·3月份刷题集训Day07

    本篇博客旨在记录自已打卡蓝桥杯3月份刷题集训,同时会有自己的思路及代码解答希望可以给小伙伴一些帮助。本人也是算法小白,水平有限,如果文章中有什么错误之处,希望小伙伴们可以在评论区指出来,共勉💪。 A1、约数个数 题目 : 本题为填空题,只需要算出结果

    2023年04月09日
    浏览(40)
  • 蓝桥杯·3月份刷题集训Day03

    本篇博客旨在记录自已打卡蓝桥杯3月份刷题集训,同时会有自己的思路及代码解答希望可以给小伙伴一些帮助。本人也是算法小白,水平有限,如果文章中有什么错误之处,希望小伙伴们可以在评论区指出来,共勉💪。 A1、扫雷 题目 :在一个 n 行 m 列的方格图上有一些位置

    2023年04月09日
    浏览(35)
  • 蓝桥杯算法竞赛系列第五章——拔高篇之深度优先搜索(DFS)

    欢迎回到:遇见蓝桥遇见你,不负代码不负卿!  目录 一、引入:深度优先搜索(DFS)  二、经典例题 例题1.二叉搜索树的范围和 题目描述 题解 代码执行 例题2.岛屿数量  题目描述 题解 代码执行 例题3.背包问题 题目描述 题解 代码执行 三、思考题 四、蓝桥结语:遇见蓝

    2023年04月09日
    浏览(47)
  • 蓝桥杯省赛7日集训-简单数论 Day1-Day2

    这是一个比较简单的质因数分解问题,可以使用试除法求解。具体实现过程如下: 从标准输入中读取正整数 n。 从 2 开始依次尝试将 n 进行除法运算,如果 n 能够被当前的数整除,则说明当前数是 n 的一个质因数,将 n 除以当前数,然后继续尝试除以当前数,直到 n 不能被当

    2023年04月08日
    浏览(32)
  • 蓝桥杯 题库 简单 每日十题 day3

    题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 1200000 有多少个约数(只计算正约数)。 解题思路 枚举,从1开始一直到1200000本身都作为1200000的除数,如果可以整除,则是它的约数 题目描述 本题为填空题,只需要算出结果后,在

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包