山东大学计算机科学与技术学院程序设计思维与实践作业
山大程序设计思维与实践作业
sdu程序设计思维与实践
山东大学程序设计思维实践作业H5
山大程序设计思维实践作业H5
山东大学程序设计思维与实践
week5-数学基础与线性结构

相关资料:GitHub

文章目录

  • A : 巨石迷阵
  • B : 有惊无险
  • C : 天降甘霖
  • D : 终而复始
  • E : 旅途不止

A : 巨石迷阵

问题描述
听说这片土地埋藏着什么秘密,来到这片土地的人不计其数,有人说这里财宝无数,也有人说这里是上古文明留下来的遗迹。小 L 收集情报和资料很久了,只身一人历经千辛万苦终于来到了这片地域的中心地带。突然,四周升起许多巨石,不出所料,面前的正是巨石迷阵。
你面前有 n 块巨石排成一行,每个上面有一个大写字母。
接下来有 m 个询问,每一个询问包含两个数字 l,r ,对于每个询问,你需要回答这个处于区间 [l,r] 的石块上的字母是否每一个英文字母都至少出现了一次。

输入格式
第一行一个整数 n , n≤5×105
第二行,一个长度为 n 的字符串
第三行,一个整数 m, m≤5×105
接下来的 m 行,每行两个整数表示 l,r,1≤l≤r≤n

输出格式
输出包含 m 行,每行一个 YES ,或者 NO 。
分别表示是否每个字母都至少出现一次。

样例输入
30
AAABCDEFGHIJKLMNOPQRSTUVWXYZAA
5
1 26
2 27
3 28
4 29
5 30

样例输出
NO
NO
YES
YES
NO

#include<bits/stdc++.h>
using namespace std;
int counnt[500010][27]={0};
int main(){int n,m;string s;cin>>n>>s>>m;counnt[0][s[0]-'A']=1;for(int i=1;i<n;++i){for(int j=0;j<26;++j){counnt[i][j]=counnt[i-1][j];}counnt[i][s[i]-'A']+=1;}int x,r;bool flag=false;for(int i=0;i<m;++i){cin>>x>>r;if(r-x+1<26){cout<<"NO\n";continue;}flag=false;for(int j=0;j<26;++j){if(counnt[r-1][j]-counnt[x-2][j]==0||!counnt[r-1][j]){cout<<"NO\n";flag=true;break;}}if(!flag){cout<<"YES\n";}}return 0;
}

B : 有惊无险

问题描述
解决了巨石迷阵,小 L 长舒一口气。他坐在一棵繁茂的树下刚打开地图,突然,四周轰隆隆又一阵巨响,面前又出现了许多巨石。

情报有误!情报有误!!

根据搜集来的情报,这里不应该再次出现这么多巨石!
小 L 赶忙起身,屏气凝神,重新专注起来…

有一个长度为 n 的字符串,找到一个区间 [l,r],使得处于区间 [l,r] 的石块上的字母,26 个大写字母都至少出现一次。输出这个区间长度的最小值。

数据保证有解

输入格式
第一行一个整数 n , n≤2×10
5

第二行,一个长度为 n 的字符串

输出格式
一行,一个数,代表最短长度

样例输入
30
AABBCDEFGHIJKLMNOPQRSTUVWXYZZZ
样例输出
27

#include<bits/stdc++.h>
#include<stdio.h>
using namespace std;
const int  maximumno=5*10e5+10;
char st[maximumno];
int min_r[maximumno];int main() {int n;cin>>n>>st;int judge[26] = {0};memset(judge, 0, sizeof judge);for(int i = 0; i < 26; i++){judge[st[i] - 'A']++;memset(min_r, 0x77777777, sizeof min_r) ;}for(int l = 0, r = 25; r < n; ){bool exist_0 = 0;for(int i = 0; i < 26; i++){if(!judge[i]){exist_0 = 1;break;}}if(exist_0){r++;if(r < n)judge[st[r] - 'A']++;}else{judge[st[l] - 'A']--;min_r[l] = r;l++;}}   int ans = maximumno;for(int i = 0; i < n; i++){ans = min(ans, min_r[i] - i + 1);}cout << ans;return 0;
}

C : 天降甘霖

问题描述
不知道又走了几天,眼前是一片整齐的青石地砖。不管是谁看上一眼,就知道这绝对不是自然生成的。当小 L 踏上青石地板的一瞬间,原本晴朗的天空迅速暗了下来。紧接着乌云密布,下起了雨。雨很快就停了,紧接着天空瞬间放晴,开始升温。潮湿的青石板被很快晒干。

“这是夏天了吗,雨来得快去得也快啊。”长时间孤身一人,小 L 经常自言自语。

但敏锐的 小 L 发现,有一些青石板上的痕迹没有被完全晒干,雨痕竟然拼成了数字。

有 一行 n 个数。输出每 k 个相邻数字的最大值和最小值。

输入格式
第一行两个整数 n,k, 1≤k≤n≤10
6

第二行,有 n 个数字,中间用空格隔开,每一个数为大小不超过 10
9
的正整数。

输出格式
有两行,每行 n−k+1 个数字,第一行表示最小值,第二行表示最大值。

样例输入
8 3
1 3 -1 -3 5 3 6 7
样例输出
-1 -3 -3 -3 3 3
3 3 5 5 6 7

#include <iostream>
#include <string>
#include <deque>
using namespace std;int n,k,a[1000100];
deque<pair<int,int>> qq;
void Find(int opt){qq.clear();for (int i = 1; i <= n; ++i){while(!qq.empty()&&qq.back().first>=a[i]) qq.pop_back();qq.push_back(pair<int,int>(a[i],i));if(qq.front().second<i-k+1) qq.pop_front();if(i>=k) cout<<opt*qq.front().first<<" ";}
}
int main(){ios::sync_with_stdio(0);cin>>n;cin>>k;for(int i = 1;i<=n;i++) cin>>a[i];Find(1);cout<<"\n";for (int i = 1; i <= n ; ++i) a[i] = -a[i];Find(-1);exit (0);return 0;
}

D : 终而复始

问题描述
青石板路的尽头堆满了财宝。小 L 感到很一阵阵失望,只能先搬走一部分财宝了。
财宝是一个个矩形紧紧挨在一起,第 i 个矩形宽度为 1 ,高度是 hi
小 L 是一个 不贪心的人,所以决定只拿走最大矩形的面积这么多。
拿着拿着,小 L 突然想到,其实这个财宝墙后面还是有路的。

输入格式
第一行一个整数 n , n≤105
第二行,一行数,第 i 个数代表 hi , 0≤hi≤109

输出格式
一行,一个数,代表最大矩形面积

样例输入
7
2 1 4 5 1 3 3

样例输出
8

#include<bits/stdc++.h>
using namespace std;
int a[100010],LEFT[100010],RIGHT[100010];
int n;
stack<pair<int,int> > s;
void Find(int result[])
{while(!s.empty())s.pop();for(int i=1;i<=n;i++){while (!s.empty()&&s.top().first>=a[i])s.pop();if(s.empty())result[i]=i;elseresult[i]=i-s.top().second;s.push(pair<int,int>(a[i],i));}
}
int main()
{cin>>n;for(int i=1;i<=n;i++)cin>>a[i];Find(LEFT);reverse(a+1,a+1+n);Find(RIGHT);reverse(a+1,a+1+n);reverse(RIGHT+1,RIGHT+1+n);long long result=0;for(int i=1;i<=n;i++)result=max(result,a[i]*1ll*(LEFT[i]+RIGHT[i]-1));cout<<result<<endl;
}

E : 旅途不止

问题描述
小 L 至今没有回来。这太正常,就像其他没有回来的探险者一样。没有人会提起小 L ,也没有人述说小 L 的故事。
多年以后,你也踏上了这片神秘的土地,眼前出现了一道谜题。
有一列长度为 n 的数,初始值都是 1 。
有 m 次操作,每次对属于区间 [l,r] 的数都乘上一个数 cb ,最后输出这 n 个数的最大公约数。
谜题面前有一张地图,上面署名 “小 L”。

输入格式
第一行一个整数 n , n≤105
第二行,一个整数 m, m≤105 接下来的 m 行,每行四个整数表示 l,r,c,b 1≤l≤r≤n,1≤c≤100,0≤b≤109

输出格式
一行,一个数,代表最大公约数,答案对 109+7 取模。

样例输入
5
3
1 4 3 2
2 4 2 2
3 5 6 1
样例输出
3

#include<bits/stdc++.h>
using namespace std;int n,m,l,x,c;
long long b;
int prime_no[25] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
long long qpower(long long a,long long b,long long m){long long result=1;if(!b) return 1;while(b>0){if(b&1) result=result*a%m;a=a*a%m;b=b>>1;}return result;
}int main()
{cin>>n>>m;long long a[n+1][25]={0};for(int i=0;i<m;i++){cin>>l>>x>>c>>b;for(int j=0;j<25;j++){if(c<prime_no[j]) break;else{while(c%prime_no[j]==0){a[l][j]+=b;a[x+1][j]-=b;c/=prime_no[j];}}}}long long minno[25]={0};for(int i=0;i<25;i++){minno[i]=a[1][i];}for(int i=0;i<25;i++){for(int j=2;j<=n;j++){a[j][i]+=a[j-1][i];minno[i]=min(a[j][i],minno[i]);}}long long m = 1e9+7;long long result = 1;for(int i = 0; i < 25; i++){result = result * qpower(prime_no[i],minno[i],m) % m;}cout<<result<<endl;return 0;
}

山东大学计算机科学与技术学院程序设计思维与实践作业 week5-数学基础与线性结构相关推荐

  1. 山东大学计算机科学与技术学院程序设计思维与实践作业 week10-树型数据结构及其应用

    山东大学计算机科学与技术学院程序设计思维与实践作业 山大程序设计思维与实践作业 sdu程序设计思维与实践 山东大学程序设计思维实践作业H10 山大程序设计思维实践作业H10 山东大学程序设计思维与实践 ...

  2. 山东大学计算机科学与技术学院程序设计思维与实践作业

    作业 H1 A : 打酱油 问题描述 小明带着N元钱去买酱油.酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每买5瓶送2瓶.请问小明最多可以得到多少瓶酱油. 输入格式 输入的第一行包含一个整数N ...

  3. 山东大学计算机学院预推免,山东大学计算机科学与技术学院(专业学位)计算机技术保研...

    考研真题资料优惠价原价选择 山东大学计算机科学与技术学院(专业学位)计算机技术保研信息,是考研之前需要获取相应的考研信息,比如考试大纲.招考专业.招考目录等等基本信息,这些内容是进行考研前期工作的必要 ...

  4. 山东大学计算机专业郭炅,山东大学计算机科学与技术学院研究生导师简介-郭炅...

    山东大学计算机科学与技术学院研究生导师简介-郭炅山东大学 免费考研网/2016-03-10 郭炅 教授 电子邮件:jguo@sdu.edu.cn 或 jguo@mmci.uni-saarland.de ...

  5. 哈工程816计算机专业考研资料,哈尔滨工程大学计算机科学与技术学院816计算机专业基础综合(自命题①数据结构,②计算机组成原理)历年考研真题汇编.pdf...

    目 录 [数据结构] 2 2005 年哈尔滨工程大学计算机科学与技术学院 816 数据结构考研真题 2 2004 年哈尔滨工程大学计算机科学与技术学院 816 数据结构考研真题 9 2003 年哈尔滨 ...

  6. 山东大学计算机科学与技术学院推免夏令营分享

    今年应该是山东大学青岛校区计算机的首届夏令营,所以中间过程感觉有不少不完善的地方 . 首先介绍一下山大青岛校区吧,我是18年7月底去的青岛校区,在青岛即墨区,当时从青岛北站转了两班公交大约一个半小时到 ...

  7. 80条语句C语言综合程序设计,2016年安徽工业大学计算机科学与技术学院程序设计综合之C语言程序设计考研复试题库...

    一.选择题 1. 以下叙述正确的是( ). A.do -while 语句构成的循环,当while 语句中的表达式值为0时结束循环 B.do 一while 语句和while -do 构成的循环功能相同 ...

  8. 山大程序设计思维与实践 六月模拟:猪国杀

    六月模拟:猪国杀 山东大学计算机科学与技术学院程序设计思维与实践作业 山大程序设计思维与实践 sdu程序设计思维与实践 山东大学程序设计思维实践作业H 山大程序设计思维实践作业H 山东大学程序设计思维 ...

  9. 山东大学程序设计思维与实践 四月模拟:TT与可怜的猫

    4月模拟-TT与可怜的猫 程序设计思维实践-复杂模拟题训练2 山东大学计算机科学与技术学院程序设计思维与实践 sdu程序设计思维与实践 山东大学程序设计思维实践作业 山大程序设计思维实践 山东大学程序 ...

最新文章

  1. [转]IE下对文件(图片)进行base64转换
  2. Golang适合高并发场景的原因分析
  3. java 集合反射_关于granite源码包CollectionUtil集合工具类获取集合反射类型、实例化各种集合类型HashSet/ArrayList等...
  4. leetcode -- 129. 求根到叶子节点数字之和
  5. atitit.提升开发效率---mda 软件开发方式的革命
  6. 策略模式和职责链模式在CMS中的应用
  7. 编程语言通用知识 编程语言的应用
  8. Django的认证系统(auth)
  9. 从dump看硬件问题
  10. erp框架 saas_2020管理软件:分析saas系统与erp系统之间的区别
  11. jsp linux 一键安装包,JspStudy免费版|JspStudy(jsp环境一键安装包) v2016.01.01免费版_星星软件园...
  12. 百度深度学习初级认证——已过
  13. Bigemap如何添加卫星影像在线地图服务
  14. 科目二考试全流程详解
  15. 大数据与人工智能专业都这么火,我们应该怎么选?
  16. 2020年Andorid很详细的基础面试题
  17. eNSP 配置简单静态路由 实现全网可达
  18. SAP 凭证跳号分析
  19. 什么是服务器集群?海外服务器集群的优势?
  20. 访谈:Brendan Eich对JavaScript的祝福和诅咒

热门文章

  1. MySQL存储过程实战二:语法讲解。
  2. Rockland 抗HA标签抗体说明书
  3. Python使用pyhive,impala,JayDeBeApi连接Hive(含Kerberos)
  4. 八种英语六级作文常用句型
  5. 书店存货c语言程序,C语言课程设计品库存管理系统.doc
  6. 成绩排名 python
  7. 【财务危机】--2018.11债务
  8. excel中STDEV.P STDEV.S STDEVA STDEVPA STDEV STDEVP 的区别
  9. 用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件
  10. ··· Socks Online - 在内部网也能使用QQ ··· 1