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

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

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

【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++

前言

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

A - 查找

来源:洛谷P2249 【深基13.例1】查找
【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++解题思路
本题用暴力搜索是过不了的,因为序列是有序的,所以在对每次需要进行查询的数用二分查找即可。

AC代码

#include<iostream>
using namespace std;
const int N=1000005;
int n,m,q,a[N];
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	for(int i=1;i<=m;i++){
		int l=1,r=n;
		scanf("%d",&q);
		while(l<r){
			int mid=(l+r)/2;
			if(a[mid]>=q)
				r=mid;
			else
				l=mid+1;
		}
		if(a[l]==q)
			printf("%d ",l);
		else
			printf("-1 ");
	}
}

B - 地毯

来源:洛谷P3397 地毯
【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++
【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++
【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++
解题思路
这题数据不是很强,暴力也能过,所以我就暴力啦…

AC代码

#include<iostream>
using namespace std;
int n,m,x1,x2,y1,y2;
int s[1005][1005]={0};
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
		for(int j=x1;j<=x2;j++)
			for(int k=y1;k<=y2;k++)
				s[j][k]++;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			printf("%d ",s[i][j]);
		cout<<endl;
	} 
}

C - 数楼梯

来源:洛谷P1255 数楼梯
【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++
解题思路
本题需要使用到高精度以及数学知识斐波那契(想必大家都知道哈,默认知道哈哈)。因为每次只能走一步或者两步,那么当前所在阶梯的方案数=上一阶梯方案数+上上一阶梯方案数,即s[i]=s[i−1]+s[i−2].。但是因为本题数据较大,所以直接一维数组的话不够用,这样用的是二维来储存。
AC代码

#include<bits/stdc++.h>
using namespace std;
int n,s[5005][5005],length;
void find(int x){
	for(int i=1;i<=length;i++)
		s[x][i]=s[x-1][i]+s[x-2][i];
	for(int i=1;i<=length;i++){
		if(s[x][i]>=10){
			s[x][i+1]+=s[x][i]/10;
			s[x][i]%=10;
			if(s[x][length+1]>0)
				length++;
		}
	}
}
int main(){
	cin>>n;
	length=1;
	s[1][1]=1;
	s[2][1]=2;
	for(int i=3;i<=n;i++)
		find(i);
	//注意逆序输出哈 
	for(int i=length;i>=1;i--)
		cout<<s[n][i];
} 

D - 宇宙总统

来源:洛谷P1781 宇宙总统
【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++
解题思路
本题也是道高精度的题,用字符串就好了

AC代码

#include<iostream>
using namespace std;
int n,win;
string s1,s2="";
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s1;
		int t1=s1.size();
		int t2=s2.size();
		if(t1>t2||(t1==t2&&s1>s2)){
			s2=s1;
			win=i;
		}
	}
	cout<<win<<endl<<s2;
}

E - 高低位交换

来源:洛谷P1100 高低位交换
【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++
解题思路
本题主要运用到的位运算,直接左移16位和右移16位就OK
AC代码

#include<iostream>
using namespace std;
unsigned long long n;//无符号类型
int main(){
	scanf("%u",&n);
	printf("%u",(n>>16)+(n<<16));
}

F - Worms

来源:CodeForces-474B. Worms
【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++
【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++
翻译:
【ACM】—蓝桥杯大一暑期集训Day1,ACM,ACM,蓝桥杯,算法,c++
解题思路
本题用前缀和以及二分查找即可求解
AC代码:

#include<iostream>
using namespace std;
const int N=100005;
int n,a[N],b[N];
int m,label;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=2;i<=n;i++)//前缀和
		a[i]+=a[i-1];
	cin>>m;
	for(int i=1;i<=m;i++){
		cin>>label;
		int l=1,r=n,mid=(l+r)/2;//二分查找
		while(l<r){
			if(label<=a[mid]){
				r=mid-1;
			}else{
				l=mid;
				cout<<l<<endl;
			}		
		}
	}
}

总结

Day1的题主要考察的是一些基础的算法。
算法:二分查找、前缀和、数学、位运算、高精度、暴力搜索
感悟:这些算法算是比较基础的,只需多加练习就能熟练掌握
总结:算法的运用还是比较灵活的,能极大的减小时间复杂度文章来源地址https://www.toymoban.com/news/detail-559707.html

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

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

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

相关文章

  • [LOJ 6030]「雅礼集训 2017 Day1」矩阵 题解

    首先不难想到一个贪心,就是先填出一个全黑的行,然后再用其填黑列。 而且在其中“填出一个全黑的行步数”我们应该最小化。 这个贪心的正确性证明如下: 必要性 :填黑列的必要条件为有一个全黑的行。 充分性 :“填黑列的步数”就是“非全黑列的数量”。 显然,如

    2024年02月12日
    浏览(45)
  • [LOJ 6029]「雅礼集训 2017 Day1」市场 题解

    这道题恶心之处在于区间向下取整。 这里给出两种思路: 如果最大值和最小值向下取整后相等,则对此区间进行区间覆盖。 我考场写的是这个,但是码错了,加上习惯不好, 100 → 64 100to64 100 → 64 ,再加上烦了弱智错误, 64 → 9 64to9 64 → 9 ,不给出代码。 注意到相邻两数的

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

      目录 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日
    浏览(46)
  • 算法竞赛备赛之经典数据结构训练提升,暑期集训营培训

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

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

    目录 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)
  • 蓝桥杯·3月份刷题集训Day03

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

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

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

    2023年04月09日
    浏览(39)
  • 蓝桥杯打卡Day1

        文章目录 全排列 八皇后 本题思路: 本题是一道经典的全排列问题,深度优先搜索即可解决。 利用STL库中的next_permutation函数来求全排列问题: 本题思路: 利用dfs的方式找出92组解,判定该点是否可以放皇后时,用了三个bool类型的数组col[N], dg[N], udg[N]来储存某列,某正对角

    2024年02月10日
    浏览(40)
  • 算法笔记day1小结

    最近在通过胡凡的算法笔记一书学习算法,准备开个帖子记录下每日学习进展,话不多说那就开始吧! 定义:内存地址称为指针 , 指针变量即存储地址的变量。(虽然有点绕口,但可以理解为指针就是一个地址,对应着内存中的一个存储单元。unsigned类型的整数)。 指针的

    2024年02月19日
    浏览(47)
  • 数据结构与算法学习(day1)

    (1)我是一个大三的学生(准确来说应该是准大三,因为明天才报名哈哈哈)。 (2)最近就想每天闲着没事也刷些C语言习题来锻炼下编程水平,也一直在思考企业对应届大学生能力的要求,所以经常会想到关于面试的事情。由于我也没实习过,所以我对面试没有一个具象化

    2024年02月10日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包