2020第十一届国赛B组题解

2020年数学建模国赛B题穿越沙漠 数学建模2020年B题穿越沙漠的模型准备 阅读详情

C.阶乘约数

在这里插入图片描述

解题思路

1.根据数学公式:
	任意一个正整数 X 都可以表示成若干个质数乘积的形式,即 X = p1^α1 ∗ p2@α2 …… ∗ pk^αk
    约数个数 = (a1 + 1)(a2 + 1)……(ak + 1)
2.用p[i]表示n中的素数约数i的a1次幂;

代码展示

#include<bits/stdc++.h>
using namespace std;

int p[200];//p
void init(){
	for(int i=2;i<=100;i++){
		int n=i;
		for(int j=2;j<=n/j;j++){//保证得到的结果是质数,因为 2~n/j都无法整除 
			while(n%j==0){
				n/=j;
				p[j]+=1;
			}	
		}
		if(n>1)p[n]+=1;
	}
}
int main(){
	init();
	long long ans=1;
	for(int i=2;i<=100;i++){
		if(p[i])ans*=(p[i]+1);
		cout<<ans<<endl;
	}
	cout<<ans<<endl;
   return 0;
   
}

总结

1.就是一个数学公式;
2.其实做题的时候并非毫无头绪,也想到肯定会与质因数有关,但不了解具体关系~~~

D.本质上升序列

在这里插入图片描述

解题思路

1.由于字符串有200位,DFS遍历不可行;
2.用dp处理,与LIS类似,num[i]记录以s[i]结尾的递增子串个数;
3.在LIS中,当s[i]>s[j]使,num[i]=max(num[i],num[j]+1)是为了求出最长的子串;类比可得动态规划方程 num[i]+=num[j];
4.当s[i]==s[j]时,num[i]-=num[j],下面画图解释;
(图待完善~~~)

在这里插入图片描述

代码展示

#include<bits/stdc++.h>
using namespace std;
/*

*/
string s;
int num[100];//以i结尾的递增子串个数 
int main(){
	string s;
	cin>>s;
	int l=s.size();
	int ans=0;
	for(int i=0;i<l;i++){
		num[i]=1;
		for(int j=0;j<i;j++){
			if(s[i]>s[j])
				num[i]+=num[j];
			else if(s[i]==s[j])
				num[i]-=num[j];
				//!!!
		}
		ans+=num[i];
	//	cout<<"num[] = "<<num[i]<<endl;
	}
	cout<<ans<<endl;
	return 0;
}

E.玩具蛇

在这里插入图片描述

解题思路

1.玩具蛇的起点A可以在1~16的任何一个位置;
2.从A所处的(x,y)出发,暴力搜素A~P的位置即可,因为A的位置不一样,所以不会重复;

代码展示

F.皮亚诺曲线

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解题思路

代码展示


H.答疑

解题思路

假设排序之后的每人的si,ai,ei;
那么就有每人答疑时间为:
	1   s1+a1
	2   s1+a1+e1 + s2+a2
	3	s1+a1+e1 + s2+a2+e2 + s3+a3
	4   ~~~~~
	n   ~~~~~
那么不难看出,前面的学生的用时总和出现次数很多,所以我们只要保证前面的学生的总用时尽可能小,那么总答疑时间就最小。

代码展示

就不展示了,简单的结构体排序~~

J.质数行者

解题思路

1.题目很简单,就是简单的搜索;
2.用BFS从(1,1,1)开始遍历,记录队列中(5,6,1)出现的次数,即为路径数
3.因为始终是向南、东、上走,不会回去,所以不需要判断节点是否访问。

代码展示

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
/*
思路:
5 6 1
3 4 1 1 2 1	

*/
struct node{
	int x,y,z;
};
bool G[1005][1005][1005];
bool Prim(int x){
	if(x<2)return false;
	for(int i=2;i*i<=x;i++){
		if(x%i==0)return false;
	}
	return true;
}
vector<int>prim;
int maxp;
void init(){
	for(int i=2;i<=maxp;i++){
		if(Prim(i))prim.push_back(i);
	}
}
int n,m,k;
ll BFS(){
	ll ans=0;
	queue<node>q;
	node temp;
	temp.x=1,temp.y=1,temp.z=1;
	q.push(temp);
	while(!q.empty()){
		temp=q.front();
		q.pop();
		if(temp.x==n&&temp.y==m&&temp.z==k){
			ans+=1;
			ans=ans%1000000007;
			continue;
		}
		for(int i=0;i<3;i++){
			for(int j=0;j<prim.size();j++){
				bool flag=0;
				node f;
				f.x=temp.x;f.y=temp.y;f.z=temp.z;
				if(i==0&&temp.x+prim[j]<=n){//x
					f.x=temp.x+prim[j];
					flag=1;
				}
				else if(i==1&&temp.y+prim[j]<=m){//y
					f.y=temp.y+prim[j];
					flag=1;
				}
				else if(i==2&&temp.z+prim[j]<=k){//y
					f.z=temp.z+prim[j];
					flag=1;
				}
				if(!G[f.x][f.y][f.z]&&flag){
						q.push(f);
				//cout<<f.x<<" "<<f.y<<" "<<f.z<<" "<<ans<<endl;
				}
				
			}
		}
	}
	return ans;
}
int main(){
	cin>>n>>m>>k;
	maxp=max(max(n,m),k);
	init();
	for(int i=0;i<2;i++){
		int a,b,c;
		cin>>a>>b>>c;
		G[a][b][c]=1;
	}
	ll ans=BFS();
	cout<<ans<<endl;
   return 0;
   
}

总结

2020国赛数学建模B题 穿越沙漠思路 赛题总体定位:运筹规划。 情景非常具体,数据需要少,需紧密结合情景具体建模,不要硬套模型。 编 程能力要求高一点。 三问都是优化模型,注意模型之间的关联。 注意点: 对游戏规则摸清楚,不要急着建模。 涉及到路线、事件的选择,使用 0-1 变量等定义模型。 最短路径基本可以数出来,考察的是最优路径以及路径前对资源的购买(收益最大)。 论文中多一点路线示意图,条件分析图。 代码需要跑出来,国赛会检查。 一些选择上可设置小心机。 第一问: 在第一关和第二关的探险过程中,运用初始的资金对于资源进行合理的分配,可 阅读详情

相关推荐

2020第十一届蓝桥杯C++国赛B组真题和题解 (11.14决赛)

目录试题A:美丽的2(5分)题解试题B:扩散(5分)题解试题C:阶乘约数(10分)题解试题E:玩具蛇(15分)题解试题G:游园安排(20分)题解 试题A:美丽的2(5分) 【问题描述】 小蓝特别喜欢 2, 今年是公元 2020 年, 他特别高兴。 他很好奇, 在公元 1 年到公元 2020 年(包含)中, 有多少个年份的数位中包含数字 2? 【答案提交】 这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。 题解 答案:563

Cinnamon_Roll的博客 6710

2020年国赛高教杯数学建模B题穿越沙漠解题全过程文档及程序

2020年国赛高教杯数学建模B题穿越沙漠解题全过程文档及程序

weixin_43292788的博客 1万+

2020第十一届蓝桥杯C++省赛B组真题和题解 (10月第二场)

第十一届蓝桥杯C++省赛B组真题和题解(更新中...)欢迎使用Markdown编辑器试题I: 平面切分题目思路:题解:新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用

Cinnamon_Roll的博客 2万+

2020数学建模国赛(B题)总结

简单说一下我们队的情况,一个电子,一个数学,我计算机,团队分工我是负责编程和画图部分,建模主要由两个队友负责,今年的建模题居然有一道很特别的题,这对于爱打游戏的我来说简直就像猫看见了毛球,哦不,是猫看见了老鼠,哎也不对,反正就是特别吸引我,于是在我们激烈的讨论下成功入坑了B题(穿越沙漠),不过奈何这游戏设置太过变态(一个人好好穿越沙漠害得去做苦力挖矿0.0),另一方面本人编程能力比较低,今年第一次参加国赛只得了国二,下面谈谈我建模的经历和感受吧。 赛前 刚接触到建模的时间大概在今年5月份,因为突如其来的疫情

k的博客 2万+

2020年第十一届C/C++ B组第二场蓝桥杯省赛真题

2020年第十一届C/C++ B组第二场蓝桥杯省赛真题真题第一题:门牌制作第二题:既约分数第三题:蛇形填数第四题:跑步锻炼第五题:七段码第六题:成绩统计第七题:回文日期第八题:子串分值和第九题:平面切分第十题:字串排序题解第一题:门牌制作第二题:既约分数第三题:蛇形填数第四题:跑步锻炼第五题:七段码第六题:成绩统计第七题:回文日期第八题:子串分值和第九题:平面切分第十题:字串排序 真题 第一题:门牌制作 题目描述 第二题:既约分数 题目描述 第三题:蛇形填数 题目描述 第四题:跑步锻炼 题目描述 第五题:七

qq_52134928的博客 8327

2020年第十一届蓝桥杯国赛Java大学B组真题及解析

你们可爱的呆毛又回来啦~~~这次给大家带来国赛的解析orz(瑟瑟发抖),请尽情食用吧!(各位看官看完以后如果觉得有帮助的话请不要吝惜手中的赞哦,大家的鼓励是我更新文章的最大动力) 目录 试题A:美丽的2 试题B:扩散 试题C:阶乘约数 试题D:本质上升序列 试题F:蓝肽子序列 试题G:皮亚诺曲线距离 试题H:画廊 试题I:补给 试题J:质数行者 试题A:美丽的2 解析:水题一道,直接枚举就行,从1枚举到2020,然后转换为字符串,判断是否有2,代码: public cla

imreal_的博客 7014

数学建模国赛 2020B-穿越沙漠 第一关 Lingo 和 C语言 动态规划求解

2020年数学建模国赛B题第一关求解

殇尘的博客 2万+

2020年数学建模国赛B题题目和解题思路

2020年数学建模国赛B题题目: 考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和食物(包括食品和其他日常用品),从起点出发,在沙漠中行走。途中会遇到不同的天气,也可在矿山、村庄补充资金或资源,目标是在规定时间内到达终点,并保留尽可能多的资金。 游戏的基本规则如下: (1)以天为基本时间单位,游戏的开始时间为第0天,玩家位于起点。玩家必须在截止日期或之前到达终点,到达终点后该玩家的游戏结束。 (2)穿越沙漠需水和食物两种资源,它们的最小计量单位均为箱。每天玩家拥有的水和食物质量之和不能超过

猫猫虫/的博客 7万+

第十一届蓝桥杯c语言b真题,2020第十一届蓝桥杯国赛B组C/C++个人题解+源代码

先存个样~~之后补全具体移至博客这个文章<<这是我的写法,有什么建议或者更好的方法,或者错了可以告诉我。。A:美丽的 2思路:直接1-2020枚举判断int main(){int tot=0;for(int i=1;i<=2020;i++){int k=i;while(k){int g=k%10;k/=10;if(g==2){tot++;break;}}}cout<retu...

weixin_36329425的博客 1080

2020蓝桥杯第二场10月B组省赛题解

2020蓝桥杯第二场省赛总结 A 答案:624 B 答案:2481215 C 答案:761 D 题目描述 小蓝每天都锻炼身体。 正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了 激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。 小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年 10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米? 思路: 直接用计算器 相隔的日期:7579(可以由计算器或者excel算出来) 初

weixin_43989094的博客 8563

2020数学建模B题及其数据

2020年数学建模国赛B题及其数据 2020年数学建模国赛B题及其数据 2020年数学建模国赛B题及其数据 2020年数学建模国赛B题及其数据 2020年数学建模国赛B题及其数据 2020年数学建模国赛B题及其数据 2020年数学建模国赛B题及其数据

2020第十一届蓝桥杯国赛(决赛)C/C++ B组F题皮亚诺曲线距离题解

F: 皮亚诺曲线距离 【问题描述】 皮亚诺曲线是一条平面内的曲线。 下图给出了皮亚诺曲线的 1 阶情形,它是从左下角出发,经过一个 3 × 3 的方格中的每一个格子,最终到达右上角的一条曲线。 下图给出了皮亚诺曲线的 2 阶情形,它是经过一个 32 × 32 的方格中的每一个格子的一条曲线。它是将 1 阶曲线的每个方格由 1 阶曲线替换而成。 下图给出了皮亚诺曲线的 3 阶情形,它是经过一个 33 × 33 的方格中的每一个格子的一条曲线。它是将 2 阶曲线的每个方格由 1 阶曲线替换而成。 皮亚诺曲

zzt741的博客 4542

2020数模国赛B题国家二等奖

2020年数模国赛B题穿越沙漠,获得国家二等奖,含python程序

蓝桥杯2020第十一届C语言B组省赛习题题解

蓝桥杯2020第十一届C语言B组省赛习题题解试题A.门牌制作题目分析代码如下试题 B 既约分数题意分析代码如下:试题C 蛇形填数【问题描述】【问题分析】【代码如下】试题D 跑步锻炼【题目描述】【问题分析】【代码如下】试题E 七段码【问题描述】【题意解读】【代码展示】【题后反思】试题F:成绩统计【题目描述】【输入格式】【输出格式】【样例输入】【样例输出】【题意分析】【代码展示】试题G:回文日期【题目描述】【输入描述】【输出描述】【输入】【输出】【题意解读】【代码展示】试题H:子串分值和 试题A.门牌制作 题

shall_zhao的博客 1万+

2020数模国赛B题

2020国赛B题论文,穿越沙漠问题,包含全部小题的建模以及答案。考虑一种穿越沙漠的游戏,玩家要在限定的时间内,遵循一定的规则从起点 走到终点,并且希望到达终点时手头的资金尽可能得多。我们需要求解一种策略, 来帮助玩家,面对一些常见的情况,能够尽可能做出更优的决策。

2020全国大学生数学建模竞赛评阅要点:B题

考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和食物(包括食品和其他日常用品),从起点出发,在沙漠中行走。途中会遇到不同的天气,也可在矿山、村庄补充资金或资源,目标是在规定时间内到达终点,并保留尽可能多的资金。

2019第十届蓝桥杯国赛c++B组真题及题解

2019第十届蓝桥杯国赛c++B组真题及题解 目前并未找到标准答案,个人解法可能并不完全正确或最优,不对的还请指正! A-题目描述: 请找到两个正整数X和Y满足下列条件: 1、2019<X<Y 2、20192、X2、Y2构成等差数列 满足条件的X和Y可能有多种情况,请给出X+Y的值,并且令X+Y尽可能的小。

Nothing_but_Fight的博客 1万+

2020年数学建模B题(国二)论文.zip

国赛 终于到了国赛的日子,不过凑巧的是当时本人学院上学期疫情的考试安排在的本学期开始,这意味着我要开始边备考边建模,顶着挂科的压力放肆复习。 选题的话,之前说过了果断选的新颖B题(穿越沙漠)。 简单说下我们的思路: 我们对赛题的理解是这题情景非常具体,数据需要少,感觉三问都是优化模型,而且需要很强的编程。 首先我们分析题目,对游戏规则摸清楚,没有急着建模。 涉及到路线、事件的选择,使用 0-1 变量等定义模型。 最短路径用Floyd算法或者基本可以数出来,考察的是最优路径以及路径前对资源的购买(收益最大)。 第一问: 在第一关和第二关的探险过程中,运用初始的资金对于资源进行合理的分配,可以通过线性规划,确定好在未来一段时间的消耗与收益,制定好合理的规划,通过 MATLAB 计算出需要使用的资源。经过多次训练对比,最终计算出最优策略,对比资金数量。因为不确定答案是否正确,后来我们又用excel表格进行了推导,最后得到是12730,与优秀论文中的12760相比小了30块,估计大概因为这个答案的问题,没有国一。 第二问: 第二问与第一问相比提升了难度,如果玩家在进行策略安排的时候, 不知道天气的状况那么小伙伴们可以自己商讨给出何种方案,比如多买水,多买食物等等方法,再这之后通过选择最优路径进行合理的方法选择并讨论,具体的解决方法是通过编程和启发式算法的excel解决的。 第三问: (1) 对于n 名相同的初始资金,且同时从起点出发的玩家来说,游戏规则需要进一步注意规范,为了保证多方共赢,在天气状况已知的情况下, 可以通过先前 MATLAB 中的神经网络算法算出的最优旅行路线,计算多次的结果进行对比,保证不会出现重复的状况, 剔除掉重复出现的次数。因为天气状况已知,所以相对比较好安排合理的路线,对于安排好的路线分别进行编号,再依次进行合理的计算,最终确定结果,

上一篇: 2021.3月PAT甲级考试总结
下一篇: 全排列详解优化(去重+字典序)
alpha_xia
博客等级 码龄7年 223粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高冷小伙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值