A 水水的斐波那契数列
签到题,基本的斐波那契数列

B SkyLee的超位魔法-黑暗丰穰之祭献
斐波那契的简单变形
AC代码:

#include <iostream>using namespace std;int goat(int n);int main()
{int n;while(cin>>n)cout<<goat(n)<<endl;
}int goat(int n){if(n<=4) return 1;elsereturn goat(n-1)+goat(n-4);
}

C 芸如的入学测试

#include <iostream>
#include <cstdio>
#define mode 10007using namespace std;int N,Q,l,r,input;
long long an[1000001];int main()
{while(cin>>N>>Q){scanf("%lld",an+1);for(int i=2;i<=N;i++){scanf("%d",&input);an[i]=an[i-1]+input;}while(Q--){scanf("%d %d",&l,&r);printf("%lld\n",(an[r]-an[l-1])%mode);}}
}

前缀和模板题

D 芸茹的课堂测试

#include <iostream>
#include <cstring>
#define mode 1000000007using namespace std;int n,i,len;
long long y;
char input[1000001];int main()
{cin>>n;while(n--){scanf("%s",input);y=input[0]-'0';for(i=0;input[i]!='\0';i++);len=i;for(i=1;i<len;i++){y=(input[i]-'0'+(8*y))%mode;}cout<<y<<endl;}
}

霍纳法则。我觉得能用long long就用吧,不容易被卡。

E.比特手链:
可点击此处直接去我的另一篇博文查看

F.具体就是设一个数组f,f[i]表示i年来的艾露猫的数量,不过不包括死亡的。其余解释请看注释

#include <cstdio>
#define maxnum 55int T,n;
int f[maxnum];int main()
{f[1]=2,f[2]=2;for(int i=3;i<maxnum;i++){f[i]=f[i-1]+f[i-2];//正常斐波那契数列增长if(i>12)f[i]=f[i]-f[i-12];//如果大于12年,说明有些艾露猫失去了生育能力,得减掉这些失去生育能力的猫生下来的孩子数量,也就是f[i-12].那么这里有一个问题,i>20时,为什么不掉f[i-20]呢?这是因为如果要减的话,比如说f[30]=f[30]-f[30-12]-f[30-20],然后跑到31年年末时,有f[31]=f[31]-f[31-12]-f[31-20],此时f[11]>=f[10],也就是f[11]有一部分是f[10],我们减掉f[11]的话相当于把f[10]也给减掉了,但是其实31年年末去世的猫的数量并不是f[11],而是f[11]-f[10],所以这时候的f[31]的值就已经是有误的了,其余类似。所以就只能在减掉一次。}for(scanf("%d",&T);T--;){scanf("%d",&n);if(n<=20)printf("%d\n",f[n]);elseprintf("%d\n",f[n]-f[n-20]);}
}


这是代码里面第二段注释的内容

G.SkyLee在GameStop
这道题的题干有个点比较容易让人产生疑惑:“在同样快的试玩方案中,SkyLee会第一时间试玩他拿到的新游戏,然后尽量把字典序更小的游戏放在编号大的展示架上”。看题解前就觉得还有这种要求,肯定爆难,不做了。然后讲评课上助教说这个要求只在n<=2的时候才有效,后来我自个儿试了一下,发现还真是这么一回事。所以,以后还是别立马放弃,找几个例子试一下,特别是这种递归题。
这道题有两个子函数hanoi和hanoi_put,前者是用于玩游戏,后者是用于挪动玩过的游戏。
n= =1时,把第一个游戏挪到3号柱子上就可以了;n= =2时,较大的游戏挪到2,,较小的游戏挪到3即可;n>2时,把最上面的n-2个游戏挪到2上,然后1–>3,1–>1即可。

#include <cstdio>using namespace std;int n;void hanoi_put(int n,int from,int via,int to){if(n==1){printf("get game from board %d\n""put game to board %d\n",from,to);}else{hanoi_put(n-1,from,to,via);printf("get game from board %d\n""put game to board %d\n",from,to);hanoi_put(n-1,via,from,to);}
}void hanoi(int n,int from,int via,int to){if(n==1){printf("get game from board %d\n""playing\n""put game to board %d\n",from,to);}else{hanoi(n-1,from,to,via);printf("get game from board %d\n""playing\n""put game to board %d\n",from,to);hanoi_put(n-1,via,from,to);}
}int main()
{while(~scanf("%d",&n)){if(n==1){printf("get game from board 1\n""playing\n""put game to board 3\n""leave\n");continue;}if(n==2){printf("get game from board 1\n""playing\n""put game to board 2\n""get game from board 1\n""playing\n""put game to board 3\n""leave\n");continue;}if(n>2){hanoi(n-2,1,3,2);printf("get game from board 1\n""playing\n""put game to board 3\n""get game from board 1\n""playing\n""put game to board 1\n""leave\n");}}
}

H.序列优美差值:
这题跟1444题差不多,下面说几点个人觉得需要注意的地方:
1.就是需要写好完整的归并排序算法。
2.下标为lb的元素是不符合的,所以要用求更大元素的upperbound函数,但下标为rb的元素是符合的,所以要用求可以求相等元素的upperbound函数。它们的差值恰好为元素a[j]对应的配对数量。
3.关于递归,我觉得就是从高层开始往底层溯源,然后一直到无法递归的时候就开始计算,然后底层递归的计算结果最后又会服务于高层的递归。

#include <iostream>
#include <cstdio>
#include<algorithm>
#define maxnum 1000005
typedef long long ll;using namespace std;int T,n,L,R;
ll ans;
ll a[maxnum],b[maxnum];void merge(int l,int r){int i,j,k;int mid=(l+r)>>1;int lb=l,rb=l;for(j=mid+1;j<=r;j++){lb=upper_bound(a+l,a+mid+1,a[j]-L)-a;rb=lower_bound(a+l,a+mid+1,a[j]-R)-a;ans+=lb-rb;}i=l,j=mid+1;for( k=l;i<=mid&&j<=r;k++){b[k]=a[i]<=a[j]?a[i++]:a[j++];}while(i<=mid) b[k++]=a[i++];while(j<=r) b[k++]=a[j++];for(k=l;k<=r;k++)a[k]=b[k];
}void solve(int l,int r){int mid=(l+r)>>1;if(l<r){solve(l,mid);solve(mid+1,r);merge(l,r);}
}int main()
{for(scanf("%d",&T);T--;){ans=0;scanf("%d%d%d",&n,&L,&R);for(int i=0;i<n;i++){scanf("%lld",&a[i]);}solve(0,n-1);//   for(int i=0;i<=n-1;i++)//       printf("%lld ",a[i]);printf("%lld\n",ans);}
}

北航2017级软件学院算法第一次上机题解相关推荐

  1. 北航2017级算法第一次上机---芸如的入学测试

    题目链接 芸如的入学测试 解题思路 假期闲来无事,复习下算法,这些题2018级的学弟学妹们搞不好上机的时候也会被坑到. 这个题的思想是前缀和思想,这个思想大家可以自行百度,这里主要说一下取模的问题. ...

  2. 北航2017级算法第一次上机---SkyLee的艾露猫

    题目链接 SkyLee的艾露猫 解题思路 斐波那契数列的变形 通过递推得知,在3-12年的时候艾露猫正在成年期,每年都会生小猫,一对成年猫生一对小猫,即cat[i]=cat[i−1]+cat[i−2] ...

  3. 软件学院集训队第一次选拔赛题解

    前言 本套题对大多数同学而言比较偏难,但涵盖了很多算法的基础知识,希望借这套题,让大家体会到算法的学习历程.有些题做不出来,对于你们现在来说是非常正常的,相信大家学习了一段时间后,再看这些题,肯定会感 ...

  4. 北航2018级算法期末上机部分题解

    北航2018级算法期末第二次上机考试部分题解 C题 三角形 题目描述 数据大小 输入 输出 解题思路 题解代码 D 魔术 题目描述 数据描述 输入 输出 解题思路 题解代码 E 乘法 题目描述 输入 ...

  5. 2017级算法模拟上机准备篇(一)

    回顾一下往年的考题知识点: The Last Battle!! 2014级算法期末上机 简单题--I wanna be the 升级者Ⅰ 结构体排序  STL:sort() 简单题--I wanna ...

  6. 计算机图形学第一次上机——中点线算法和中点圆算法

    计算机图形学第一次上机实验 课程实验报告 目录 计算机图形学第一次上机实验 课程实验报告 一.实验目的 二.实验环境 三.实验内容 1.中点线算法 2.中点圆算法 四.实验心得 附录:程序源代码 一. ...

  7. 北邮计算机院入学教育,初次见面 | 信通院2017级研究生新生入学教育及第一次班会...

    原标题:初次见面 | 信通院2017级研究生新生入学教育及第一次班会 2017年9月8日上午10点,主楼里的多个教室中同时开展了信通院2017级研究生的新生入学教育班会.会议由各班联系人主持,参会人员 ...

  8. 2017计算机基础教学大纲,2017级大学计算机基础教学大纲设计.doc

    实用文档 文案大全 <大学计算机基础>课程教学大纲 一.课程简况 (一)课程代码:6131101 (二)课程英文名:Basis Theory of Computer (三)课程管理院.系( ...

  9. 2017计算机基础教学大纲,2017级大学计算机基础教学大纲

    2017级大学计算机基础教学大纲 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 <大学计算机基础>课程教学大纲一.课 ...

最新文章

  1. android 关闭jack_Android7.0 配置JACK支持多用户同时编译
  2. struts2标签详解
  3. SAP WMS Posts
  4. Yii中POS和GET并用范例
  5. python中的reduce函数
  6. python的图表库_python 图表库
  7. 优酷开放sdk-setOnerroListener
  8. 使用腾讯云提供的针对Nuget包管理器的缓存加速服务
  9. centos修改磁盘uuid_为什么MySQL用uuid做主键会被骂?
  10. eclipse+java+selenium+testNG搭建自动化测试框架
  11. 永久免费http升级到https
  12. 对数组名取地址a和 数组首地址a
  13. 冯氏集团于进博会发布报告,分析影响全球服装采购格局的五大因素
  14. DP1363F国产替代CLRC663_支持NFC双向通信连接APP多协议远距离读写芯片
  15. 天眼查是怎么获得企业工商信息的?
  16. 一文到胃------合并(归并)排序原理
  17. 零基础入门小程序,实战经验分享
  18. 前端笔记1(选择器,动态增添/修改页面元素)
  19. 汉诺塔问题的递归求解
  20. 用Python实现语音播报

热门文章

  1. 网站域名空间服务器,网站 域名 空间 服务器
  2. 【设计模式】建造者模式
  3. css用网络图片做背景图片,css 网页背景图片 怎样用CSS实现大背景网页效果
  4. Python中文社区开源项目扶持计划
  5. python入门论坛_PythonTab:Python中文开发者社区门户
  6. 在单个虚拟机中搭建DPDK测试环境
  7. Jmeter常用快捷键
  8. watch监听和computed计算属性的使用和区别
  9. 绿色城市智慧管理:数字孪生地下综合管廊平台
  10. SSM 校园外卖系统的设计与实现