今天我们来讲一讲科丁乐编程LV4第一单元考试题目。
先把题目发出来:

  1. K10176 接水问题 (35分)
    题目描述
    学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1。

现在有 n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从 1到 n 编号,i 号同学的接水量为 wi。接水开始时,1 到 m 号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学 j 完成其接水量要求 wj后,下一名排队等候接水的同学 k马上接替 j 同学的位置开始接水。这个换人的过程是瞬间完成的,且没有任何水的浪费。即j 同学第 x 秒结束时完成接水,则 k 同学第 x+1 秒立刻开始接水。若当前接水人数 n’不足 m,则只有 n’个龙头供水,其它 m−n’个龙头关闭。

现在给出 n 名同学的接水量,按照上述接水规则,问所有同学都接完水需要多少秒。

输入格式
第 1 行 2 个整数 n 和 m,用一个空格隔开,分别表示接水人数和龙头个数。

第 2 行 n 个整数 w1、w2、……、wn,每两个整数之间用一个空格隔开,wi表示 i 号同学的接水量。

输出格式
输出只有一行,1 个整数,表示接水所需的总时间。

输入输出样列
输入样例1:
5 3
4 4 1 2 1
输出样例1:
4
输入样例2:
8 4
23 71 87 32 70 93 80 76
输出样例2:
163
说明
【输入输出样例 1 说明】

第 1 秒,3 人接水。第 1 秒结束时,1、2、3 号同学每人的已接水量为 1,3 号同学接完水,4 号同学接替 3 号同学开始接水。

第 2 秒,3 人接水。第 2 秒结束时,1、2 号同学每人的已接水量为 2,4 号同学的已接水量为 1。

第 3 秒,3 人接水。第 3 秒结束时,1、2 号同学每人的已接水量为 3,4 号同学的已接水量为 2。4 号同学接完水,5 号同学接替 4 号同学开始接水。

第 4 秒,3 人接水。第 4 秒结束时,1、2 号同学每人的已接水量为 4,5 号同学的已接水量为 1。1、2、5 号同学接完水,即所有人完成接水。总接水时间为 4 秒。

【数据规模与范围】

1≤n≤10000,1≤m≤100 且 m≤n;

1≤wi≤100。

【耗时限制】1000ms 【内存限制】128MB

  1. K12454 修建广场 (30分)
    题目描述
    科丁路是一条长度为N的笔直道路,可以将科丁路看成一个数轴,路的一端在数轴0的位置,另一端在N的位置。路边有M家住户,第i个住户会在数轴上点si 到点ti之间的每个整数点上种di颗树,包括点si和ti,即在si ,si+1,si+2…,ti 的位置上各种上di颗树。

科丁市政府决定在科丁路上修建一条长为L的广场给科丁市的市民们跳广场舞。为了修建广场,需要铲除科丁路上长度为L的一段路上的所有的树,广场的起点和终点都必须在数轴的整点上。为了保护环境,科丁市政府希望尽量减少铲除的树木的数量。于是科丁市政府找到你,希望你能帮助他们计算最少需要铲除多少棵树。

输入格式
输入文件:plaza.in

第1行:3个空格分隔的整数N,M和L。

接下来M行,每行3个空格分隔的整数:si,ti和di ,表示第i个住户会在si到ti的区域中的每个整数点上种植di棵树。

输出格式
输出文件:plaza.out

输出1行,一个正数,表示最少铲除的树的数量。

输入输出样列
输入样例1:
5 2 3

0 5 2

3 5 2

输出样例1:
10

说明
【样例说明】

样例1中:数轴长度为5, 拥有2个住户,广场的长度为3

住户1在数轴0、1、2、3、4、5上各种了2棵树
住户2在数轴3、4、5上各种了2棵树。
铲除区域0到3上的树,可以使得铲除的树的数量最小,其中位置0到位置2上各有2棵树,位置3上有4棵树,共铲除3*2+4 = 10棵树。、

【数据范围】

对于100%的数据,1≤L≤N≤1000,1≤M≤100,0≤si≤ti≤N,1≤di≤100

【耗时限制】1000ms 【内存限制】128MB

  1. K12555 国王的金币 (25分)
    题目描述
    恰逢科丁国国庆,国王非常高兴,准备给n为功臣分发金币。首先他让每个功臣都在自己的左手和右手上分别写下一个整数,然后国王也在自己的左手和右手上各写了一个整数。然后让这n为功臣站成一排,国王站在队伍的最前面,所有的功臣都会获得国王奖赏的若干金币,每位功臣获得的金币数分别是:这位功臣自己左手上的数字加上自己右手上的数字再加上国王左手上的数字,如果得到的数字比国王右手上的数字大那么就再减去国王右手上的数字,否则就不减。

最后请你帮忙计算一下,获得金币最多的功臣所获得的金币是多少。

输入格式
第一行,一个整数n,表示功臣的人数。n≤100

第二行,两个不超过100位的大整数,分别表示国王左手和右手上的数字

接下来n行,每行是两个不超过100位的大整数,分别表示第i位功臣左手和右手上的数字

输出格式
一行,输出获得金币最多的功臣所获得的金币数量

输入输出样列
输入样例1:

4
11111111111111111111 44444444444444444444
11111111111111111111 55555555555555555555
11111111111111111111 44444444444444444444
22222222222222222222 44444444444444444444
44444444444444444444 44444444444444444444

输出样例1:
55555555555555555555
输入样例2:

4
11111111111111111111 44444444444444444444
11111111111111111111 44444444444444444444
22222222222222222222 22222222222222222222
22222222222222222222 33333333333333333333
11111111111111111111 11111111111111111111

输出样例2:
33333333333333333333
【耗时限制】1000ms 【内存限制】128MB

  1. K12558 香蕉采摘 (10分)
    题目描述
    小科有一只宠物猴,名叫小圣。这天,他们正沿着乡间小路散步,突然发现了一片香蕉林,小科和小圣都非常的高兴,因为他们最爱香蕉。香蕉树整齐的排列着,形成了一个R行C列的网格,网格的每个格子里面有一棵香蕉树,小科一眼就能看出每棵树上有多少个香蕉,为了训练小圣的数学,小科吩咐小圣去采摘香蕉并要求它:

你从第一行第一列出发,也是就是(1,1)的位置开始,每次往上下左右四个方向去找相邻的一棵树,这个树要是没有被采摘过的而且这棵树上的香蕉要是这四个方向中数量最多的(保证每次只能找到唯一一棵这样的树),然后进行采摘。按照这样的方法,最终小圣总是会在(R,C)处停止然后采摘掉那里的香蕉。

现在给定网格的大小,以及每个格子里香蕉的数量,请你计算一下最终小圣一共采摘了多少香蕉。

输入格式
第一行 两个整数R C,分别表示香蕉林网格的总行数和总列数,1≤R≤40,1≤C≤40

接下来R行,每行C个整数,分别表示网络中每个格子里的一棵香蕉树上香蕉的个数,每棵香蕉树上香蕉的个数是1到100之间的整数

输出格式
一个整数,表示猴子小圣按照小科吩咐的移动方法最终到达(R,C)处一共采摘的香蕉的总数

输入输出样列
输入样例1:

3 4
3 3 4 5
4 5 3 2
1 7 4 2

输出样例1:

39

【耗时限制】1000ms 【内存限制】128MB

除了第一题我做过,是对的,其他全是错的

第一题:

先将我的代码发上来看一看:

#include<bits/stdc++.h>
using namespace std;
int now,n,m,o,w[10001];
int main(){cin>>n>>m;now=m+1;for(int i=1;i<=n;i++){cin>>w[i];w[0]+=w[i];}for(;w[0]!=0;o++){for(int i=1;i<=m;i++){if(w[i]>0) w[i]--,w[0]--;if(w[i]==0){w[i]=w[now];w[now]=0;if(now!=n) now++;}}}cout<<o;
}

没有任何问题!

第二题:

错误代码:

#include<bits/stdc++.h>
using namespace std;
int n,m,l;
int s[1001],t[1001],d[1001];
int r[1001];
int Min=2147483647,sum;
int main(){cin>>n>>m>>l;for(int i=1;i<=m;i++){cin>>s[i]>>t[i]>>d[i];for(int j=i;j<=m;j++) r[j]+=d[i];}for(int i=1;i<=n;i++){for(int j=i;j<=m;j++) sum+=r[j];if(sum<Min) Min=sum;sum=0;}cout<<Min;
}

嗯···怎么说呢,反正我也不知道我当时怎么做的
就是按照灵感吧···
我们来看一下代码的问题:
首先,s(种树线段的起点),t(种树线段的终点)和d(种的树的数量)就不应该用数组!
其他没有什么问题
最厉害的问题出在第···第13~17行
应该改成

for(int i=0;i<=N-L;i++){int tot=0;for(int j=i;j<=i+L;j++) tot+=tree[j];minn=min(tot,minn);}

PS:这里的tot你可以将它当做sum···
minn你可以当做上面的Min···

这里是这个程序的核心部分
如果这里做错了
那就说明对这个题目了解得不够透彻

对这个知识点掌握的不够稳定
差不多就这样了。

这就是这个程序的所有错误
来看一下完整正确代码:

#include<bits/stdc++.h>
using namespace std;
int N,M,L;
int s,t,d;
int tree[10001];
int minn=0x7fffffff;
int main(){cin>>N>>M>>L;for(int i=1;i<=M;i++){cin>>s>>t>>d;for(int j=s;j<=t;j++) tree[j]+=d;}for(int i=0;i<=N-L;i++){int tot=0;for(int j=i;j<=i+L;j++) tot+=tree[j];minn=min(tot,minn);}cout<<minn;
}

可能有一些变量变了,
你了解就好
。。。

好了
不多说了
我们看下一题

第三题:

错误代码:

#include<bits/stdc++.h>
using namespace std;
int ans[10001],a[10001],b[10001];
struct money{string left;string right;
}k[10001];
void add(int a,int b){int al=as.size(),bl=bs.size();int l=max(al,bl)+1;for(int i=0;i<al;i++) a[i]=as[al-1-i]-'0';for(int i=0;i<bl;i++) b[i]=bs[bl-1-i]-'0';for(int i=0;i<l;i++){ans[i]+=a[i]+b[i];ans[i+1]=ans[i]/10;ans[i]=ans[i]%10;}while(ans[l-1]==0&&l>1) l--;for(int i=l-1;i>=0;i--) cout<<ans[i];
}
string l,r;
int main(){int n;cin>>n;cin>>l>>r;for(int i=1;i<=n;i++) cin>>k[i].left>>k[i].right;add(k[i].left,k[i].right)
}

不要问我为什么这么短,因为时间不够,我还没做完···
这里还有编译错误。。。
ε=(´ο`*)))唉
首先,我们分析一下这题思路,
这道题和《国王游戏》很像,
只不过是把高精乘和高精除换成了高精加和高精减。
废话···等等,突然发现这里的最后一行没写分号!
怪不得编译错误!
好了,我们继续
首先,我们定义出国王的左右手和大臣的左右手,
然后分别输入
在上面,我们可以提前做一个高精加和高精减的函数,
以便到后面用。
我们把大臣左右手上的数字相加再加上国王左手的数字得到的和与国王右手上的数字相比较,如果大于国王右手上面的数字,那么再减去国王右手上的数字,将这个差存下来,否则,就直接存和。
好了,上正确代码:

#include<bits/stdc++.h>
using namespace std;
int a[10001],b[10001],c[10001],d[10001];
string coin[10001],kl,kr,l,r,t;
bool cmp(const string &x,string &y){if((x.size()<y.size())||(x.size()==y.size()&&x<=y)) return false;else return true;
}
string add(string as,string bs,string cs){memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));memset(d,0,sizeof(d));int al=as.size(),bl=bs.size(),cl=cs.size();int dl=max((max(al,bl)),cl)+1;for(int i=0;i<al;i++) a[i]=as[al-1-i]-'0';for(int i=0;i<bl;i++) b[i]=bs[bl-1-i]-'0';for(int i=0;i<cl;i++) c[i]=cs[cl-1-i]-'0';for(int i=0;i<dl-1;i++){d[i]+=a[i]+b[i]+c[i];d[i+1]=d[i]/10;d[i]%=10;}while(d[dl-1]==0&&dl>1) dl--;string r;for(int i=dl-1;i>=0;i--) r.push_back(d[i]+'0');return r;
}
bool cmp1(const string &x,const string &y){if(x.size()!=y.size()) return x.size()>y.size();return x>y;
}
string minu(string as,string bs){memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));int al=as.size(),bl=bs.size();int cl=al;for(int i=0;i<al;i++) a[i]=as[al-1-i]-'0';for(int i=0;i<bl;i++) b[i]=bs[bl-1-i]-'0';for(int i=0;i<cl;i++){if(a[i]<b[i]){a[i+1]--;a[i]+=10;}c[i]=a[i]-b[i];}while(c[cl-1]==0&&cl>1) cl--;string r;for(int i=cl-1;i>=0;i--) r.push_back(c[i]+'0');return r;
}
int main(){int n;cin>>n;cin>>kl>>kr;for(int i=1;i<=n;i++){cin>>l>>r;t=add(l,r,kl);if(cmp(t,kr)) coin[i]=minu(t,kr);else coin[i]=t;}sort(coin+1,coin+1+n,cmp1);cout<<coin[1];
}

代码我就不多解释了,直接进入最后一题。

第四题:

错误代码:

#include<bits/stdc++.h>
using namespace std;
int r,c;
int b[101][101];
int sum,Max=-1;
int main(){cin>>r>>c;for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) cin>>b[i][j];sum+=b[1][1];b[1][1]=0;for(int i=1;i<=r;i++){for(int j=1;j<=c;j++){if(b[i+1][j]>Max) Max=b[i+1][j];if(b[i-1][j]>Max) Max=b[i-1][j];if(b[i][j+1]>Max) Max=b[i][j+1];if(b[i][j-1]>Max) Max=b[i][j-1];sum+=Max;if(Max==b[i+1][j]) b[i+1][j]=0;if(Max==b[i-1][j]) b[i-1][j]=0;if(Max==b[i][j+1]) b[i][j+1]=0;if(Max==b[i][j-1]) b[i][j-1]=0;}}cout<<sum;
}

说句实话,我也不知道我到底是怎么做的
可能就是···乱做?
嗯···
可能是吧
好了,不废话了
我们开始讲思路:
学过搜索的同学们应该会用dir吧?
所以,我们可以在前面定一个dir数组:

const int dir[11][11]={{0,0},{1,0},{-1,0},{0,1},{0,-1}};

然后,我们看一下,小猴会判断他的上、下、左、右四个方向那个方向的香蕉最多,判断后,他就会往香蕉最多的地方走。
Tip:注意!摘完一棵香蕉树上的香蕉后,记得累加(累加摘的香蕉的总数)和清零(清空香蕉树上香蕉的个数,以免重复采摘)哦!
就按照这个思路,一次又一次又一次又一次的循环,直到他走到坐标(r,c)后就退出循环。
再退出循环输出时,别忘了把(r,c)上的香蕉加上哦!

正确代码:

#include<bits/stdc++.h>
using namespace std;
const int dir[11][11]={{0,0},{1,0},{-1,0},{0,1},{0,-1}};
int r,c,x=1,y=1;
int ba[101][101];
int ans,maxn=-1,nx,ny;
int main(){ cin>>r>>c;for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) cin>>ba[i][j];while(x!=r||y!=c){ans+=ba[x][y];ba[x][y]=0;maxn=-1;for(int i=1;i<=4;i++){int x1=x+dir[i][0],y1=y+dir[i][1];if(ba[x1] [y1]>maxn&&ba[x1][y1]!=0){maxn=ba[x1][y1];nx=x1;ny=y1;}}   x=nx,y=ny;}cout<<ans+ba[r][c];
}

好了,这篇文章就到这了
记得关注么么哒(づ ̄ 3 ̄)づ***

科丁乐编程LV4第一单元考试题目与讲解相关推荐

  1. 科丁乐2020年5月公开赛第一题

    科丁乐5月公开赛第一题 题目: 解析: 代码: 题目: 五一假期,小科和他的好朋友们去大山深处的丛林探险,在探险的过程中突然下起了大雨,小科就和他的好朋友们躲进了一处山洞里避雨,在山洞中待着无聊他们就 ...

  2. 四年级计算机走进传统节日教案,小学信息技术黔科版四年级上册第一单元 中国传统节日——制作简单电子作品活动3 使用资料制作作品教案...

    这是一份小学信息技术黔科版四年级上册第一单元 中国传统节日--制作简单电子作品活动3 使用资料制作作品教案,共3页. 活动3 使用资料制作作品 教学目标: 1.学会使用简单的快捷方式 2.学会编辑文档 ...

  3. 2008年CCNA第三学期第一单元中文题目(2008-12-21 18:30:01

    2008年CCNA第三学期第一单元中文题目(2008-12-21 18:30:01<?xml:namespace prefix = o ns = "urn:schemas-micros ...

  4. 2021年知到网课《艾滋病性与健康》第一单元考试答案

    第一章单元测试 1 [单选题] (2分) 艾滋病是艾滋病病毒侵入____系统引起的 疾病? A.消化系统 B. 血液系统 C.免疫系统 D.神经系统 正确答案: C . 2 [多选题] (2分) 学习 ...

  5. 丁磊建议将少儿编程纳入学业水平考试,是少儿编程太热,还是起跑线焦虑

    近年来,少儿编程越发地火爆起来,很多少儿编程机构如雨后春笋般涌现出来.有人不禁调侃:"是少儿编程太热,还是起跑线焦虑太强." 遥想我们的童年是变形金刚.四驱兄弟.插卡游戏机,有太多 ...

  6. python编程一级考试报名_2021年的第一场考试!全国青少年编程等级考试开始报名!...

    每一步,与世界同步 2021年的第一场考试,来了! 中国电子信息技术领域的学术团体--,带着2021年的第一场考试--<全国青少年编程等级考试>来了! 本次等级考试,面向青少年群体的年龄为 ...

  7. 高一信息技术课件python编程_教科版高中信息技术选修第一章第三节Python入门--奇妙曲线的绘制 课件(22张ppt) 教案 (2份打包)...

    ID:10986924 资源大小:11671KB 资料简介: 教学设计 [课程标准要求] 体验算法思想,了解算法和程序设计在解决问题过程中的地位及作用:能从简单的问题出发,设计解决问题的算法,并能初步 ...

  8. 2022年湖南省临床执业医师考试第一单元内分泌系统模拟题

    本次我们将分享2022年湖南省临床执业医师考试第一单元内分泌系统模拟题,根据近年来临床执业医师考试资格证专业知识真题,以及最新临床执业医师考试大纲,包含临床执业医师考试资格证专业知识重点题型以及知识点 ...

  9. 2022年湖南省临床执业医师考试第一单元内医学免疫学模拟题

    本次我们将分享2022年湖南省临床执业医师考试第一单元内医学免疫学模拟题,根据近年来临床执业医师考试资格证专业知识真题,以及最新临床执业医师考试大纲,包含临床执业医师考试资格证专业知识重点题型以及知识 ...

最新文章

  1. ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
  2. MYSQL数据库学习十七 日志管理
  3. 在Windows 下如何使用 AspNetCore Api 和 consul
  4. linux find查找文件然后删除,linu查找find命令及删除7天前的文件
  5. 书评– Kubernetes Up&Running,作者:Kelsey Hightower
  6. AI应用开发基础傻瓜书系列2-神经网络中反向传播与梯度下降的基本概念
  7. iframe框架及优缺点
  8. Ubuntu文本编辑器适合linux平台的其它版本
  9. pytorch以特征图的输入方式训练LSTM模型
  10. java只有值传递_为什么说java中只有值传递
  11. android webview的一些设置问题
  12. python的unicode编码表_Python-编码
  13. 微信公共号开发教程java版——微信网页授权(八)
  14. cdn回源php_CDN 回源之罪魁祸首-etag
  15. 微信公众号开发之课堂考勤
  16. day03数据包拓展——抓包封包
  17. 小米盒子2刷android tv,【二次搬运】小米盒子3S刷Android TV教程
  18. Objective C的关键字oneway
  19. 用PS如何做出古典油画人像照片效果
  20. 刘颂计算机学院,关于表彰2013—2014学年 - 首页 北京工商大学计算机与 .doc

热门文章

  1. D. Black and White Stripe
  2. 三星经典android手机,回忆杀,三星最经典的Note系列旗舰手机
  3. 多线程09-静态代理
  4. UIScrollView实现图片轮播
  5. 一名程序猿的习惯养成记录手帐(四)
  6. 云服务器的内网IP和公网IP应该怎么理解?有什么用?
  7. CAD 开发--卸载外部参照(UnlodeExteralReference)
  8. 博客作业回答记录1--“软件工程是不是教会不怎么会写程序的人开发软件?你的观点?”
  9. MySQL-创建和使用全文索引(FullText)
  10. SpringBoot多数据源配置