【ACM】—蓝桥杯大一暑期集训Day3 我不是女神ヾ 2024-04-17 10:12 73阅读 0赞 > ?欢迎来到本文? > ?个人简介:[陈童学哦][Link 1],目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 > ?系列专栏:[陈童学的日记][Link 2] > ?其他专栏:[C++STL][C_STL],感兴趣的小伙伴可以看看。 > ?希望各位→点赞? + 收藏⭐️ + 留言? > ⛱️学习应使你快乐!望与诸君共勉!?♂️ ![在这里插入图片描述][0392fe98af544665a7a1d2aefd8a4113.png] #### Day3集训 #### * 前言 * A - Subtraction Game * * 解题思路 * 示例代码 * B - 全排列 * * 解题思路 * 示例代码 * C - 健康的奶牛 * * 解题思路 * 示例代码 * D - New Year Transportation * * 解题思路 * 示例代码 * 总结 ## 前言 ## > 因参加了我校的ACM暑期集训为之后的xcpc等赛事做准备,所以就有了此文哈哈。本文主要复盘做题的过程以及一些感悟,便于复习巩固。辣么现在废话也不多说啦,直接往下看吧哈哈。 ## A - Subtraction Game ## **来源:**[CodeForces - 1844A. Subtraction Game][] ![在这里插入图片描述][d7c6e8cd7c164f4fbfe047a0db8bf05f.png] ![在这里插入图片描述][d42139d254b54e13938da7af8326b5f5.png] **题意:** 两个人先后从一堆石子中取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 全排列问题][P1706] ![在这里插入图片描述][cb7a555492404272b222d1dfb705c153.png] ### 解题思路 ### 本题用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][P1460 _USACO2.1_ _ Healthy Holsteins] ![在这里插入图片描述][69f7ba75eec64952be9e08e1b015ed70.png] ![在这里插入图片描述][52b7155e28b24777bb693cc9accf7d3b.png] ### 解题思路 ### 这道题用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][] ![在这里插入图片描述][13e8c2680a4d4f728a9be1428f9535de.png] ![在这里插入图片描述][47eb46b685454c7ab66d754bc8fc1ba0.png] ![在这里插入图片描述][065a3394b2bd4b499537744985d9a0e0.png] ### 解题思路 ### 这题用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等算法的使用还需多加做题才能深入理解 总结:每个算法都有其巧妙处,搜索算法更是巧妙 [Link 1]: https://blog.csdn.net/H1727548?type=blog [Link 2]: https://blog.csdn.net/h1727548/category_12342877.html?spm=1001.2014.3001.5482 [C_STL]: https://blog.csdn.net/h1727548/category_12319887.html?spm=1001.2014.3001.5482 [0392fe98af544665a7a1d2aefd8a4113.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/15/a16296f8808b46f79f200e437e8eafff.png [CodeForces - 1844A. Subtraction Game]: https://codeforces.com/problemset/problem/1844/A [d7c6e8cd7c164f4fbfe047a0db8bf05f.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/15/0101cbcf2ca9439893d9679ffda884a6.png [d42139d254b54e13938da7af8326b5f5.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/15/b8de9e0d7a5440faaa22b585e8099296.png [P1706]: https://www.luogu.com.cn/problem/P1706 [cb7a555492404272b222d1dfb705c153.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/15/091cac49352f4ed3af5717123596da39.png [P1460 _USACO2.1_ _ Healthy Holsteins]: https://www.luogu.com.cn/problem/P1460 [69f7ba75eec64952be9e08e1b015ed70.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/15/5ee8462c1ded430d8941f4558a5bdab4.png [52b7155e28b24777bb693cc9accf7d3b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/15/2b06dfbf4f984a3d9023c89676e5e44a.png [CodeForces - 500A. New Year Transportation]: https://codeforces.com/problemset/problem/500/A [13e8c2680a4d4f728a9be1428f9535de.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/15/da0513f9f4cd4568adf0d0282d3c0da1.png [47eb46b685454c7ab66d754bc8fc1ba0.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/15/2156f48b7e5549e7b90aa3b01d15145f.png [065a3394b2bd4b499537744985d9a0e0.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/15/759d9d14b5ae4a13a8f6c4c9ecc88830.png
相关 蓝桥杯真题3 \[蓝桥杯 2015 省 B\] 移动距离 题目描述 X 星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为 $1,2,3, \\cdots $ 。 迷南。/ 2024年03月24日 10:58/ 0 赞/ 84 阅读
相关 【蓝桥杯】蓝桥杯入门训练+蓝桥杯基础训练 BEGIN-1 A+B问题 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输入A、B,输出A+B。 输入格式 输入的第一行包括两个 野性酷女/ 2022年12月03日 01:59/ 0 赞/ 468 阅读
相关 蓝桥杯练习题(一) 以下的题目是第九届蓝桥杯的部分省赛题目。 PS:工程下载:[https://download.csdn.net/download/weixin\_41918712/10762 比眉伴天荒/ 2022年04月22日 09:21/ 0 赞/ 218 阅读
还没有评论,来说两句吧...