⑴ 计算机等级考试二级考试C语言项目过去经常靠什么题目
考题是随机抽取的,机试题一般不会太难,只要基础知识掌握得比较扎实就会做,不出意外绝对不会出现一点也不会的情况。考的多的还是将程序段补充完整,冒泡排序,简单排序,选择排序之类的排序方法,一些简单的数学运算题,难一点的就是数据结构里的内容,简单点的会在程序填空里考指针、链表等,难的会在编程题里考链表。
整体来说不会难。
⑵ 2021年“高教社杯”全国大学生数学建模竞赛ABC题怎么分析
2021年“高教社杯”全国大学生数学建模竞赛ABC题的分析:
A题疫苗生产问题思路。
第一问确定答案,其他题思路新冠肺炎肆虐全球,给世界带来了深重的灾难。各国为控制疫情纷纷研发新冠疫苗。假定疫苗生产需要经过CJ1工位、CJ2工位、CJ3工位以及 CJ4工位等4个工艺流程。
每个工艺流程一次性均能处理100剂疫苗,这100剂疫苗装进一个加工箱一起送进工位的设备进行处理。而且,只有按照CJ1-CJ2-CJ3-CJ4的顺序在4个工位都进行了加工以后,才算完成生产。
为防止疫苗包装出现混乱,某疫苗生产公司生产部门规定,每个工位不能同时生产不同类型的疫苗,疫苗生产不允许插队。
即进入第一个工位安排的每类疫苗的生产顺序一旦确定就要一直保持不变,而且前一种类型的疫苗离开某个工位后,后一种类型的疫苗才能进入这个工位。
B题消防救援问题赛题思路。
赛题描述
随着我国经济的高速发展,城市空间环境复杂性急剧上升,各种事故灾害频发,安全风险不断增大,消防救援队承担的任务也呈现多样化、复杂化的趋势。对于每一起出警事件,消防救援队都会对其进行详细的记录。
问题1:
将每天分为三个时间段(0:00-8:00为时段Ⅰ,8:00-16:00为时段Ⅱ,16:00-24:00为时段Ⅲ),每个时间段安排不少于5人值班。
假设消防队每天有30人可安排值班,请根据附件数据,建立数学模型确定消防队在每年2月、5月、8月、11月中第一天的三个时间段各应安排多少人值班。
问题2:
以该地2016年1月1日至2019年12月31日的数据为基础,以月份为单位,建立消防救援出警次数的预测模型。
以2020年1月1日至2020年12月31日的数据作为模型的验证数据集,评价模型的准确性和稳定性,并对2021年各月份的消防救援出警次数进行预测。
问题3:
依据7种类别事件的发生时间,建立各类事件发生次数与月份关系的多种数学模型,以拟合度最优为评价标准,确定每类事件发生次数的最优模型。
问题4:
请建立数学模型,分析该地区2016-2020年各类事件密度在空间上的相关性,并且给出不同区域相关性最强的事件类别(事件密度指每周每平方公里内的事件发生次数)。
问题5:
请建立数学模型,分析该地各类事件密度与人口密度之间的关系(人口密度指每平方公里内的人口数量)。
问题6:
目前该地有两个消防站,分别位于区域J和区域N,综合考虑各种因素,建立数学模型,确定如果新建1个消防站,应该建在哪个区域?
如果在2021-2029年每隔3年新建1个消防站,则应依次建在哪些区域?
思路:
基本和国赛的消防救援题差不多,还简单一点,属于路径优化问题。
C题数据驱动的异常检测与预警问题赛题思路。
题目描述
推动生产企业高质量发展,最根本的底线是保证安全、防范风险,而生产过程中产生的数据能够实时反映潜在的风险。
某生产企业某日00:00:00-22:59:59由生产区域的仪器设备记录的时间序列数据(已经进行数据脱敏),本题未给出数据的具体名称,这些数据可能是温度、浓度、压力等与安全密切相关的数据。
建立数学模型,完成以下问题:
问题1:
给出的数据都可能存在波动,且所有波动都在安全值范围内。有些波动可能是正常性波动,例如随着外界温度或者产量变化的波动,或者可能是传感器误报。
这些波动具有规律性、独立性、偶发性等特点,并不能产生安全风险,我们视为非风险性异常,不需要人为干预;有些波动具有持续性、联动性等特点。
这些异常性波动的出现是生产过程中的不稳定因素造成的,预示着可能存在安全隐患,我们视为风险性异常,需要人为干预、分析和评定风险等级。
请建立数学模型,给出判定非风险性异常数据和风险性异常数据的方法。
问题2:
结合问题1的结果,建立数学模型,给出风险性异常数据异常程度的量化评价方法,要求使用百分制(0-100分)对每个时刻数据异常程度进行评价(分值越高表示异常程度越高)。
应用所建立的模型和附件1的数据,找到数据中异常分值最高的5个时刻及这5个时刻对应的异常传感器编号,每个时刻只填写5个异常程度最高的传感器编号,异常传感器不足5个则无需填满。
如果得分为0,可以不用填写异常传感器编号,并给出数学模型对所得结果进行评价。
思路:
经典的异常分析问题,异常数据一般可以用机器学习的方法做,常用的聚类。
kmeans、dbscan、决策树、孤立深林、LSTM,以上模型都可以套用进来。
⑶ 2011全国大学生数学建模竞赛题目C解决方法
竞赛到今天结束了,我们被围困三天后终于可以解脱了!但是,对于这个的解答,我们真的做的不好,今天我回来的时候,又想到了一些不妥。我们是用估算尺度和层次分析法写的。
9月
⑷ 2019全国大学生英语竞赛C类初赛两道IQ题怎么做啊
IQ智商测试,是全国大学生英语竞赛C类题目中的一部分,包括脑筋急转弯和图形规律题,主要考察学生的创新应用能力。共5分,官方建议完成时间是5分钟。虽然题量不多,但是题目非常新颖,解答有一定难度。IQ测试题的应对和解答技巧如下:
1、复习技巧:IQ题要在考前多背,英语的脑筋急转弯主要是同音不同词的转换,图形规律题一般比较简单。这部分有兴趣的同学可以平时做一些练习。
2、应试技巧:IQ测试在考试的时候能做则做,不要花太多的时间在这方面,先易后难,以整个大局为重,不要浪费太多时间在这上面,导致后面作文写不完,得不偿失。考试时间有限,要把主要精力放在阅读、单选等分值高、容易拿的题目之上。智力题可以留在最后时间充裕再做,所有的题目做完之后还有时间继续钻研,享受它的乐趣。
2019年全国大学生英语竞赛(NECCS)初赛将在2019年4月14日举行,竞赛题目总共有八个部分,分别是听力、词汇、完形填空、阅读理解、翻译、改错、IQ测试、写作。
⑸ 如何看待2021国赛C题思路
2021国赛C题思路是秘密,尚未公布。
调动学生学习数学积极性。提高学生建立数学模型和运用计算机技术解决实际问题的综合能力,鼓励广大学生踊跃参加课外科技活动,开拓知识面,培养创造精神及合作意识,推动大学数学教学体系、教学内容和方法的改革。
培养学生学习品质。学生在数学建模实践过程中的品质养成是数学建模竞赛育人功能的重要体现。在一次又一次困难和失败中不断爬起,树立了坚韧不拔的意志,培养学生解决问题的能力。
谣言是对人、对事、对社会事件的一种不确切信息的传播。谣言的功能总是消极的。它可以伤害个人,伤害群体,伤害社会,伤害国家,在许多情况下,流言蜚语往往成为不诚实的人的政治斗争的手段和工具;它可以使原来比较稳定的人际关系变得互相猜疑、倾轧、紧张。
使原来比较稳定的社会秩序变得十分混乱,变得人心惶惶;它可以麻痹人们的思想警惕,减弱人们的防备心理,使人不知不觉成为谣言的俘虏,它可以破坏人们的团结,削弱彼此之间的信任,制造内耗,瓦解对方的战斗力。由于它具有混淆舆论的功能,往往造成极坏的影响。
⑹ noip要用到哪些算法
前言
离NOIP还有一个星期,匆忙的把寒假整理的算法补充完善,看着当时的整理觉得那时还年少。第二页贴了几张从贴吧里找来的图片,看着就很热血
的。旁边的同学都劝我不要再放PASCAL啊什么的了,毕竟我们的下一级直接学C++。即便我本人对C++也是赞赏有加,不过PASCAL作为梦的开始终
究不能忘记。不像机房中其余的OIERS,我以后并不想学计算机类的专业。当年来学这个竞赛就是为了兴趣,感受计算机之美的。经过时迁,计划赶不上变化,
现在尚处于迷茫之中,也很难说当时做的决定是对是错。然而我一直坚信迷茫的时候选择难走的路会看见更好的风景。
这篇文章简单的说了一下NOIP考试中会常用的算法,可能难度掌握的不是太好,有一部分内容不是NOIP考查范围,然而随着难度的增加,看一些更高级的算法也没有坏处。还有一些非常非常基础的比如链表啊什么的就直接没有写上(别问我为什么整理了那么多的排序算法)。
最后祝大家在NOIP中取得理想的成绩!
搜索
DFS
框架
procere dfs(x);
var
begin
if 达到目标状态 then 输出结果并退出过程;
if 满足剪枝条件 then exit;
for i:=1 to 搜索宽度 do
begin
备份现场;(注意如果现场使用了全局变量,则需要使用局部变量备份)
dfs(参数+增量);
恢复现场;
end;
优化
(1) 最优化剪枝:求最优值时,当前的状态无论如何不可能比最优值更优,则退出,可与展望结合剪枝
(2) 可行性剪枝:提前判断该状态是否能得到可行解,如不能则退出
(3) 记忆化搜索:对于已经搜索过的状态直接退出
(4) 改变搜索顺序:对于看起来希望更大的决策先进行搜索
(5) 优化搜索策略
(6) 预处理找到大体搜索翻译
(7) 改写成IDA*算法
(8) 卡时(注意现在联赛中禁止使用meml掐时)
BFS
框架
初始化;把初始布局存入
设首指针head=0; 尾指针tail:=1;
repeat
inc(head),取出队列首记录为当前被扩展结点;
for i:=1 to 规则数 do {r是规则编号}
begin
if 新空格位置合法 then
begin
if 新布局与队列中原有记录不重复
tail增1,并把新布局存入队尾;
if 达到目标 then 输出并退出;
end;
end;
until head>=tail; {队列空}
优化
判重的优化:hash,二叉排序树
双向广搜或启发式搜索
改写成A*算法
二分优化
排序
冒泡排序
var a:array[1..100] of longint;t,n,i,j:longint;
procere sort;
begin
for i:=1 to n-1 do{与每个数都进行比较}
for j:=1 to n-i do
if a[j]>a[j+1] then
begin
t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;
end;
选择排序
var a:array[1..100] of longint;t,n,i,j:longint;
procere sort;
begin
for i:=1 to n-1 do
for j:=1+i to n do{大数沉小数浮}
if a[j]>a[i] then
begin
t:=a[j];
a[j]:=a[i];
a[i]:=t;
end;
end;
插入排序
var a:array[0..100] of longint;n,i,j,t:longint;
procere sort;
begin
for i:=2 to n do
for j:=1 to (i-1) do
begin
if (a[i]<a[j]) then
begin
t:=a[j];
a[j]:=a[i];
a[i]:=t;
end;
end;
end;
桶排序
var a,b:array[0..100] of longint;r,i,j,t,k,n:longint;
procere sort;
begin
for i:=0 to 100 do b[i]:=0;{为B数组清零,小桶内容清零}
for i:=1 to n do b[a[i]]:=b[a[i]]+1;
{桶的序号就是那个要排序的东西;出现一次,桶里得旗数加一}
for i:=0 to 100 do{扫描所有的桶}
begin
if b[i]<>0 then{桶里有旗}
for j:=1 to b[i] do write(i,' ');{桶的序号就是那个数}
end;
end;
快速排序
var a:array[1..100] of longint;
n,i,h,g:longint;
procere kp(l,r:longint);{变量不能与全局变量相同,否则会被抹去}
var b,m,i,j,t:longint;
begin
i:=l;
j:=r;
m:=a[(l+r) div 2];{基准数最好从中间取}
repeat
while a[j]>m do dec(j);
while a[i]<m do inc(i);{两侧的哨兵移动}
if i<=j then
{哨兵未碰面}{“=”利用repeat循环的性质,使repeat循环得以结束}
begin
t:=a[j];
a[j]:=a[i
a[i]:=t;{交换两个哨兵的值}
inc(j);
dec(j);{哨兵继续运动}
end;
until i>j;
if j>l then kp(l,j);
if i<r then kp(i,r);{都是循环不结束后进行的动作}
end;
begin
read(n);
for i:=1 to n do read(a[i]);
kp(1,n); {“一”位置与“N”位置}
for i:=1 to n-1 do write(a[i],' ');
write(a[n]);{防止多输出空格使程序结果出错}
end.
堆排序
var a:array[1..100] of longint;
n,i,b:longint;
procere jianshu(i:longint);
begin
while ((a[i]>a[i*2])or(a[i]>a[i*2+1]))and(i<=n div 2) do
{当父亲数大于子女数时并且他有孩子时进行}
begin
if a[i*2]<=a[i*2+1]{左儿子小于右儿子}
then
begin
b:=a[i*2]; a[i*2]:=a[i];a[i]:=b;{左右儿子的值互换}
jianshu(i*2);{继续为左儿子建树}
end
else
begin
b:=a[i*2+1];a[i*2+1]:=a[i];a[i]:=b;
jianshu(i*2+1);{上同,不过是为右儿子建树}
end;
end;
end;
procere tiao;
begin
while n<>0 do
begin
write(a[1]);
a[1]:=a[n];
n:=n-1;
for i:=(n div 2) downto 1 do
jianshu(i);
end;
end;
begin
read(n);
for i:=1 to n do
read(a[i]);
for i:=(n div 2) downto 1 do
jianshu(i);
tiao;
end.
数学定理
中国剩余定理
若有一些两两互质的整数m1, m2,… mn,则对任意的整数: a
1, a
2,... an
,以下联立同余方程组对模数m1, m2,… mn 有公解:
康托展开
a[i]为当前未出现的元素中是排在第几个(从0开始)
把一个整数X展开成如下形式:
X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[2]*1!+a[1]*0!
其中a[i]为当前未出现的元素中是排在第几个(从0开始),并且0<=a[i]<i(1<=i<=n)
错排通项
考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。
f[1]=0;f[2]=1;
f[n] =(n-1)(f[n-2) + f[n-1])
f[n]:=n![1-1/1!+1/2!-1/3!……+(-1)^n*1/n!]
f[n] = (n!/e+0.5),其中e是自然对数的底,[x]为x的整数部分。
费马大定理
费马大定理,又被称为“费马最后的定理”,由法国数学家费马提出。它断言当整数n >2时,关于x, y, z的方程 xn + yn = zn 没有正整数解。
被提出后,经历多人猜想辩证,历经三百多年的历史,最终在1995年被英国数学家安德鲁·怀尔斯证明。
费马小定理
假如a是一个整数,p是一个素数,那么 ap ≡a (mod p)。
如果a不是p的倍数,这个定理也可以写成ap-1 ≡1 (mod p)。----这个更加常用
逆元
由费马小定理:假如p是质数,且gcd(a,p)=1,那么ap-1≡1(mod p)
逆元:如果ab≡1(mod p),那么在模p意义下,a、b互为逆元。
所以,假如p是质数,且gcd(a,p)=1,那么a的逆元是ap-2
逆元的作用:在模意义下进行除法。乘a的逆元等同于除以a。
欧拉函数
在数论中,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为φ函数、欧拉商数等。
若m,a为正整数,且m,a互素,(gcd(a,m) = 1),则aφ(m)≡1,其中为φ(m)欧拉函数,mod m为同余关系。
欧拉定理实际上是费马小定理的推广。
Stirling数
第一类s(p,k)的一个的组合学解释是:将p个物体排成k个非空循环排列的方法数。
s(p,k)的递推公式: s(p,k)=(p-1)*s(p-1,k)+s(p-1,k-1) ,1<=k<=p-1
边界条件:s(p,0)=0 ,p>=1 s(p,p)=1 ,p>=0
递推关系的说明:
考虑第p个物品,p可以单独构成一个非空循环排列,这样前p-1种物品构成k-1个非空循环排列,方法数为s(p-1,k-1);
也可以前p-1种物品构成k个非空循环排列,而第p个物品插入第i个物品的左边,这有(p-1)*s(p-1,k)种方法。
第二类S(p,k)的一个组合学解释是:将p个物体划分成k个非空的不可辨别的(可以理解为盒子没有编号)集合的方法数。
k!S(p,k)是把p个人分进k间有差别(如:被标有房号)的房间(无空房)的方法数。
S(p,k)的递推公式是:S(p,k)=k*S(p-1,k)+S(p-1,k-1) ,1<= k<=p-1
边界条件:S(p,p)=1 ,p>=0 S(p,0)=0 ,p>=1
递推关系的说明:
考虑第p个物品,p可以单独构成一个非空集合,此时前p-1个物品构成k-1个非空的不可辨别的集合,方法数为S(p-1,k-1);
也可以前p-1种物品构成k个非空的不可辨别的集合,第p个物品放入任意一个中,这样有k*S(p-1,k)种方法。
PS:第一类斯特林数和第二类斯特林数有相同的初始条件,但递推关系不同。
Stirling's approximation
快速求阶乘,不推荐用于竞赛。
数论
GCD&LCM
//GCD
function gcd(a,b:longint):longint;
begin
if b=0 then gcd:=a
else gcd:=gcd (b,a mod b);
end ;
//LCM
function lcm(a,b:longint):longint;
begin
if a<b then swap(a,b);
lcm:=a;
while lcm mod b>0 do inc(lcm,a);
end;
素数
//单个判断
function prime (n: longint): boolean;
var i longint;
begin
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then exit(false)
exit(true);
end;
//筛法打表
procere main;
var i,j:longint;
begin
fillchar(f,sizeof(f),true);
f[0]:=false;f[1]:=false;
for i:=2 to trunc(sqrt(maxn)) do
if f[i] then
begin
j:=2*i;
while j<= maxn do
begin
f[j]:=false;
inc(j,i);
end;
end;
end;
快速幂
{a^b mod n}
function f(a,b,n:int64):int64;
var t,y:int64;
begin
t:=1;
y:=a;
while b<>0 do
begin
if(b and 1)=1 then t:=t*y mod n;
y:=y*y mod n;
{这里用了一个很强大的技巧,y*y即求出了a^(2^(i-1))不知道这是什么的看原理}
b:=b shr 1;{去掉已经处理过的一位}
end;
exit(t);
end;
模运算法则
(A+B) mod C = (A mod C + B mod C) mod C
(A-B) mod C = (A mod C - B mod C) mod C
(A * B) mod C = (A mod C) * (B mod C) mod C
(A / B) mod C = ???
⑺ 2012年高教社杯全国大学生数学建模竞赛C题的缺失数据处理的方法与解答过程 快!!
试一下差值与拟合吧
⑻ 2011全国数学建模大赛C解题方法
同学请独立思考问题,每年知道数学建模网络上就有很多数学问题