算法随机中奖的问题 年平均从业人数算法未知 总金额未知

随机化算法_图文_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
随机化算法
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩27页未读,
定制HR最喜欢的简历
你可能喜欢后使用快捷导航没有帐号?
查看: 4668|回复: 22
缺额信息上写的是“人数未知”,是几个人啊?
新手上路, 积分 92, 距离下一级还需 8 积分
在线时间0 小时
主题帖子积分
新手上路, 积分 92, 距离下一级还需 8 积分
新手上路, 积分 92, 距离下一级还需 8 积分
如题,这还敢填吗?
新手上路, 积分 80, 距离下一级还需 20 积分
在线时间0 小时
主题帖子积分
新手上路, 积分 80, 距离下一级还需 20 积分
新手上路, 积分 80, 距离下一级还需 20 积分
我怎么点不进去系统?
中级战友, 积分 1166, 距离下一级还需 1834 积分
K币1166 元
在线时间0 小时
主题帖子积分
中级战友, 积分 1166, 距离下一级还需 1834 积分
中级战友, 积分 1166, 距离下一级还需 1834 积分
K币1166 元
可以打电话咨询
在线时间0 小时
主题帖子积分
这就好比问x等于几....
新手上路, 积分 89, 距离下一级还需 11 积分
在线时间0 小时
主题帖子积分
新手上路, 积分 89, 距离下一级还需 11 积分
新手上路, 积分 89, 距离下一级还需 11 积分
我的也是,请问楼楼填了么
新手上路, 积分 92, 距离下一级还需 8 积分
在线时间0 小时
主题帖子积分
新手上路, 积分 92, 距离下一级还需 8 积分
新手上路, 积分 92, 距离下一级还需 8 积分
Ellen314victory 发表于
我的也是,请问楼楼填了么
填了,赌一把
新手上路, 积分 48, 距离下一级还需 52 积分
在线时间0 小时
主题帖子积分
新手上路, 积分 48, 距离下一级还需 52 积分
新手上路, 积分 48, 距离下一级还需 52 积分
楼主 手机没收不到系统发送的免费通知提醒 有影响么
新手上路, 积分 78, 距离下一级还需 22 积分
在线时间2 小时
主题帖子积分
新手上路, 积分 78, 距离下一级还需 22 积分
新手上路, 积分 78, 距离下一级还需 22 积分
我填完之后,电话号码是红色,你们是么
新手上路, 积分 92, 距离下一级还需 8 积分
在线时间0 小时
主题帖子积分
新手上路, 积分 92, 距离下一级还需 8 积分
新手上路, 积分 92, 距离下一级还需 8 积分
Ilhhfighting 发表于
楼主 手机没收不到系统发送的免费通知提醒 有影响么
应该没事,反正你这两天收不到短信,也要多盯着点研招网。发短信只是在第一时间提醒你,毕竟只有网上有了信息,手机才有信息。
新手上路, 积分 92, 距离下一级还需 8 积分
在线时间0 小时
主题帖子积分
新手上路, 积分 92, 距离下一级还需 8 积分
新手上路, 积分 92, 距离下一级还需 8 积分
喜多迹迹 发表于
我填完之后,电话号码是红色,你们是么
您还剩5次免费下载资料的机会哦~
扫描二维码下载资料
使用手机端考研帮,进入扫一扫在“我”中打开扫一扫,扫描二维码下载资料
Powered by Discuz!当前位置: >>
蓝桥杯题库中的算法训练试题
1.算法训练 P1103 内存限制:256.0MB时间限制:1.0s编程实现两个复数的运算。设有两个复数和,则他们的运算公式为: 要求:(1)定义一个结构体类型来描述复数。 (2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。 (3)必须使用结构体指针的方法把函数的计算结果返回。 说明:用户输入:运算符号(+,-,*,/) a b c d. 输出:a+bi,输出时不管 a,b 是小于 0 或等于 0 都按该格式输出,输出时 a,b 都保留两 位。 输入: - 2.5 3.6 1.5 4.9 输出: 1.00+-1.30i 2. 算法训练 Lift and Throw 内存限制:256.0MB时间限制:3.0s 问题描述给定一条标有整点(1, 2, 3, ...)的射线. 定义两个点之间的距离为其下标之差的绝对值. Laharl, Etna, Flonne 一开始在这条射线上不同的三个点, 他们希望其中某个人能够到 达下标最大的点. 每个角色只能进行下面的 3 种操作, 且每种操作不能每人不能进行超过一次. 1.移动一定的距离 2.把另一个角色高举过头 3.将举在头上的角色扔出一段距离 每个角色有一个 movement range 参数, 他们只能移动到没有人的位置, 并且起点和终 点的距离不超过 movement range. 如果角色 A 和另一个角色 B 距离为 1, 并且角色 B 没有被别的角色举起, 那么 A 就能举 起 B. 同时, B 会移动到 A 的位置,B 原来所占的位置变为没有人的位置. 被举起的角色不能 进行任何操作, 举起别人的角色不能移动.同时, 每个角色还有一个 throwing range 参数, 即 他能把举起的角色扔出的最远的距离. 注意, 一个角色只能被扔到没有别的角色占据的位 置. 我们认为一个角色举起另一个同样举起一个角色的角色是允许的. 这种情况下会出现 3 个人在同一个位置的情况. 根据前面的描述, 这种情况下上面的两个角色不能进行任何操 作, 而最下面的角色可以同时扔出上面的两个角色. 你的任务是计算这些角色能够到达的 位置的最大下标, 即最大的数字 x, 使得存在一个角色能够到达 x. 输入格式1 输入共三行, 分别为 Laharl, Etna, Floone 的信息. 每一行有且仅有 3 个整数, 描述对应角色的初始位置, movement range, throwing range. 数据保证 3 个角色的初始位置两两不相同且所有的数字都在 1 到 10 之间.&/div& 输出格式 仅有 1 个整数, 即 Laharl, Etna, Flonne 之一能到达的最大距离. 样例输入 9 3 3 4 3 1 2 3 3 样例输出 15 样例说明 一开始 Laharl 在位置 9, Etna 在位置 4, Flonne 在位置 2. 首先, Laharl 移动到 6. 然后 Flonne 移动到位置 5 并且举起 Etna. Laharl 举起 Flonne 将其扔到位置 9. Flonne 把 Etna 扔到位置 12. Etna 移动到位置 15. 3. 算法训练 Multithreading 内存限制:256.0MB时间限制:1.0s 问题描述 现有如下一个算法: repeat ni times yi := y y := yi+1 end repeat令 n[1]为你需要算加法的第一个数字,n[2]为第二个,...n[N]为第 N 个数字(N 为需要 算加法的数字个数), 并令 y 初始值为 0,先令 i=1 运行这个算法(如上所示,重复 n[i]次),然后令 i=2 运 行这个算法。。直到 i=N。注意 y 值一直不要清零。最后 y 的值就是你需要的加法答案。 你想知道,有没有某种运算顺序能使答案等于 W。 一个循环中的全部语句,是不能改变在总的语句排列中的相对顺序的。 (这里的第 i 个循环是指这 n[i]*2 条语句。就是你把属于第 i 个循环的语句抽出来看, 它们需要按照原顺序排列。 在你没有运行完这个循环的最靠前一条未完成的语句的时候, 你 是不能跳过它先去完成这个循环后面的语句的。 你能做的仅是把若干个循环按照你所规定的2 顺序D归并‖起来。) 举个例子,n[1]= 2 ,n[2]=1, W=1.一种可行的运算顺序是D2 1 1 1 1 2‖,数字为几表示运 行第几个算法的下一条语句(你可以看到‖1‖出现了 4 次,是因为 n[1]=2 即循环两次,而每 次循环里面有两条语句,所以 2*2=4 次) y值 执行 0 条语句过后 执行 1 条过后(y[2]=y) 执行 2 条过后(y[1]=y) 执行 3 条过后(y=y[1]+1) 执行 4 条过后(y[1]=y) 执行 5 条过后(y=y[1]+1) 执行 6 条过后(y=y[2]+1) 0 0 0 1 1 2 1 y[1] 值 0 0 0 0 1 1 1 y[2] 值 0 0 0 0 0 0 0可以看到,最后 y 值变成了 1,也就完成了我们的任务。 输入格式 第一行你会得到用空格分开的两个整数 N(1&=N&=100)和 W(-10^9&=W&=10^9),(N 为需要算加法的数字个数,W 是你希望算出的数)。 第二行你会得到 n 个整数 n[i] (1&=n[i]&=1000). 输出格式 第一行您应该输出 Yes(若能以某种顺序使得这个算法得出 W 的值) 或 No。 如果第一行是 No,接下来就不用继续输出了。 如果是 Yes, 请在第 2 行输出 2*sigma(n[i])个用空格隔开的数,表示任意一种满足条件 的运算顺序。 样例输入 1 10 11 样例输出 No 样例输入3 2 3 4 4 样例输出 Yes 1 1 2 1 2 2 2 2 2 1 2 1 1 1 1 2 样例输入 3 6 1 2 3 样例输出 Yes 1 1 2 2 2 2 3 3 3 3 3 3 数据规模和约定 对于 30%的数据,n&=4, n[i]的和小于 10. 对于 100%的数据,n&=100 , -10^9&=W&=10^9, 1&=n[i]&=1000 4. 算法训练 Tricky and Clever Password 内存限制:256.0MB时间限制:2.0s 问题描述在年轻的时候, 我们故事中的英雄――国王 Copa――他的私人数据并不是完全安全地 隐蔽。对他来说是,这不可接受的。因此,他发明了一种密码,好记又难以破解。后来,他 才知道这种密码是一个长度为奇数的回文串。 Copa 害怕忘记密码,所以他决定把密码写在一张纸上。他发现这样保存密码不安全, 于是他决定按下述方法加密密码:他选定一个整数 X ,保证 X 不小于 0 ,且 2X 严格 小于串长度。然后他把密码分成 3 段,最前面的 X 个字符为一段,最后面的 X 个字符为 一段,剩余的字符为一段。不妨把这三段依次称之为 prefix, suffix, middle 。显然, middle 的长度为一个大于 0 的奇数,且 prefix 、 suffix 的长度相等。他加密后的密码即为 A + prefix + B + middle + C + suffix ,其中 A 、 B 、 C 是三个由 Copa 选定的字符串,且 都有可能为空, + 表示字符串相连。 许多年过去了。Copa 昨天找到了当年写下加密后字符串的那张纸。但是,Copa 把原 密码、A、B、C 都忘了。现在,他请你找一个尽量长的密码,使得这个密码有可能被当年 的 Copa 发明、加密并写下。 输入格式 输入包含一个只含有小写拉丁字母的字符串,长度在 1 到 10^5 之内。 输出格式4 第一行包含一个整数 k ,表示你找到的原密码分成的 3 个部分中有多少个非空字符 串。显然 k in {1, 3} 。接下来 k 行,每行 2 个用空格分开的整数 x_i l_i ,表示这一部分 的起始位置和长度。要求输出的 x_i 递增。 起始位置 x_i 应该在 1 到加密后的字符串长度之间。 l_i 必须是正整数,因为你只要 输出非空部分的信息。 middle 的长度必须为奇数。 如果有多组答案, 任意一组即可。 提示: 你要最大化的是输出的 l_i 的总和, 而不是 k 。 样例输入 abacaba 样例输出 1 1 7 样例输入 axbya 样例输出 3 1 1 2 1 5 1 样例输入 xabyczba 样例输出 3 2 2 4 1 7 2 数据规模和约定 对于 10% 的数据: n &= 10 对于 30% 的数据: n &= 100 对于 100% 的数据: n &= 100000 存在 20% 的数据,输出文件第一行为 1 。 5. 算法训练 Beaver's Calculator5 时间限制:3.0s 问题描述内存限制:256.0MB从万能词典来的聪明的海狸已经使我们惊讶了一次。 他开发了一种新的计算器, 他将此 命名为&Beaver's Calculator 1.0&。它非常特别,并且被计划使用在各种各样的科学问题中。 为了测试它,聪明的海狸邀请了 n 位科学家,编号从 1 到 n。第 i 位科学家给这个计算 器带来了 ki 个计算题。第 i 个科学家带来的问题编号 1 到 n,并且它们必须按照编号一个一 个计算,因为对于每个问题的计算都必须依赖前一个问题的计算结果。 每个教授的每个问题都用一个数 ai,?j? 来描述,i(1≤i≤n)是科学家的编号,j(1≤j≤ ki) 是问题的编号,ai,?j? 表示解决这个问题所需资源单位的数量。 这个计算器非常不凡。它一个接一个的解决问题。在一个问题解决后,并且在下一个问 题被计算前,计算器分配或解放资源。 计算器中最昂贵的操作是解放资源,解放远远慢于分配。所以对计算器而言,每一个接 下来的问题所需的资源不少于前一个,是非常重要的。 给你关于这些科学家所给问题的相关信息。你需要给这些问题安排一个顺序,使得D坏 对‖尽可能少。 所谓D坏对‖,就是相邻两个问题中,后一个问题需求的资源比前一个问题少。别忘了, 对于同一个科学家给出的问题,计算它们的相对顺序必须是固定的。 输入格式 第一行包含一个整数 n,表示科学家的人数。接下来 n 行每行有 5 个整数,ki, ai,?1, xi, yi, mi (0?≤?ai,?1?&?mi?≤?109, 1?≤?xi,?yi?≤?109) ,分别表示第 i 个科学家的问题个数,第 1 个问题所需 资源单位数,以及 3 个用来计算 ai,?j 的参量。ai,?j?=?(ai,?j?-?1?*?xi?+?yi)modmi。 输出格式 第一行输出一个整数,表示最优顺序下最少的D坏对‖个数。 如果问题的总个数不超过 200000,接下来输出 行,表示解决问题的最优顺序。每一行两个用空格隔开的整数, 表示这个问题所需的资源单位数和提供这个问题的科学家的编 号。 样例输入 2 2 1 1 1 10 2 3 1 1 10 样例输出 0 1 2 3 4 1 1 2 26 数据规模和约定 20%的数据 n?=?2, 1?≤?ki?≤?2000; 另外 30%的数据 n?=?2, 1?≤?ki?≤?200000; 剩下 50%的数据 1?≤?n?≤?5000, 1?≤?ki?≤?5000。 6. 算法训练 Cowboys 内存限制:256.0MB时间限制:2.0s 问题描述一个间不容发的时刻:n 个牛仔站立于一个环中,并且每个牛仔都用左轮手枪指着他旁 边的人!每个牛仔指着他顺时针或者逆时针方向上的相邻的人。正如很多西部片那样,在这 一刻,绳命是入刺的不可惜……对峙的场景每秒都在变化。每秒钟牛仔们都会分析局势,当 一对相邻的牛仔发现他们正在互指的时候,就会转过身。一秒内每对这样的牛仔都会转身。 所有的转身都同时在一瞬间发生。 我们用字母来表示牛仔所指的方向。 DA‖表示顺时针方向, DB‖表示逆时针方向。如此,一个仅含DA‖DB‖的字符串便用来表示这个由牛仔构成的环。这是 由第一个指着顺时针方向的牛仔做出的记录。例如,牛仔环DABBBABBBA‖在一秒后会变成 DBABBBABBA‖;而牛仔环DBABBA‖会变成DABABB‖。这幅图说明了DBABBA‖怎么变成 DABABB‖ 一秒过去了,现在用字符串 s 来表示牛仔们的排列。你的任务是求出一秒前有多 少种可能的排列。如果某个排列中一个牛仔指向顺时针,而在另一个排列中他指向逆时针, 那么这两个排列就是不同的。 输入格式 输入数据包括一个字符串 s,它只含有DA‖和DB‖。 输出格式 输出你求出来的一秒前的可能排列数。 数据规模和约定 s 的长度为 3 到 100(包含 3 和 100) 样例输入 BABBBABBA 样例输出 2 样例输入 ABABB 样例输出 27 样例输入 ABABAB 样例输出 4 样例说明 测试样例一中,可能的初始排列为:&ABBBABBAB&和 &ABBBABBBA&。 测试样例二中,可能的初始排列为:&AABBB&和&BABBA&。 7. 算法训练数字三角形 内存限制:256.0MB时间限制:1.0s 问题描述(图3.1-1)示出了一个数字三角形。请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数 0,1,…99;. (图3.1-1) 输入格式 文件中首先读到的是三角形的行数。 接下来描述整个三角形 输出格式 最大总和(整数) 样例输入 5 7 3 88 8 1 0 2 7 4 4 4 5 2 6 5 样例输出 30 8. 算法训练 未名湖边的烦恼 内存限制:256.0MB时间限制:1.0s 问题描述每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多 了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的 m 个,有需要租鞋的 n 个。现在的 问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。 (两个同样 需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法) 输入格式 两个整数,表示 m 和 n 输出格式 一个整数,表示队伍的排法的方案数。 样例输入 3 2 样例输出 5 数据规模和约定 m,n∈[0,18] 问题分析 9. 算法训练最大的算式 内存限制:256.0MB时间限制:1.0s 问题描述题目很简单,给出 N 个数字,不改变它们的相对位置,在中间加入 K 个乘号和 N-K-1 个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是 N-1 个了,所以恰 好每两个相邻数字之间都有一个符号。例如: N=5,K=2,5 个数字分别为 1、2、3、4、5,可以加成:9 1*2*(3+4+5)=24 1*(2+3)*(4+5)=45 (1*2+3)*(4+5)=45 …… 输入格式 输入文件共有二行,第一行为两个有空格隔开的整数,表示 N 和 K,其中(2&=N&=15, 0&=K&=N-1)。第二行为 N 个用空格隔开的数字(每个数字在 0 到 9 之间)。 输出格式 输出文件仅一行包含一个整数,表示要求的最大的结果 样例输入 5 2 1 2 3 4 5 样例输出 120 样例说明 (1+2+3)*4*5=120 10. 算法训练图形显示 时间限制:1.0s 问题描述 编写一个程序,首先输入一个整数,例如 5,然后在屏幕上显示如下的图形(5 表示行 数): ***** **** *** ** * 11. 算法训练排序 时间限制:1.0s 问题描述 编写一个程序,输入 3 个整数,然后程序将对这三个整数按照从大到小进行排列。 输入格式:输入只有一行,即三个整数,中间用空格隔开。 输出格式:输出只有一行,即排序后的结果。 输入输出样例10内存限制:512.0MB内存限制:512.0MB 样例输入 9 2 30 样例输出 30 9 2 12. 算法训练 2 的次幂表示 时间限制:1.0s 问题描述 任何一个正整数都可以用 2 进制表示,例如:137 的 2 进制表示为 。 将这种 2 进制表示写成 2 的次幂的和的形式,令次幂高的排在前面,可得到如下表达 式:137=2^7+2^3+2^0 现在约定幂次用括号来表示,即 a^b 表示为 a(b) 此时,137 可表示为:2(7)+2(3)+2(0) 进一步:7=2^2+2+2^0 (2^1 用 2 表示) 3=2+2^0 所以最后 137 可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如:+2^8+2^5+2+1 所以 1315 最后可表示为: 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0) 输入格式 正整数(1&=n&=20000) 输出格式 符合约定的 n 的 0,2 表示(在表示中不能有空格) 样例输入 137 样例输出 2(2(2)+2+2(0))+2(2+2(0))+2(0) 样例输入 1315 样例输出 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0) 提示 用递归实现会比较简单,可以一边递归一边输出11内存限制:512.0MB 13. 算法训练前缀表达式 时间限制:1.0s 问题描述 编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值。输入格式为:D运 算符对象 1 对象 2‖,其中,运算符为D+‖(加法)、D-‖(减法)、D*‖(乘法)或D/‖(除法), 运算对象为不超过 10 的整数,它们之间用一个空格隔开。要求:对于加、减、乘、除这四 种运算,分别设计相应的函数来实现。 输入格式:输入只有一行,即一个前缀表达式字符串。 输出格式:输出相应的计算结果(如果是除法,直接采用 c 语言的D/‖运算符,结果为整 数)。 输入输出样例 样例输入 + 5 2 样例输出 7 14. 算法训练 Anagrams 问题 时间限制:1.0s 问题描述 Anagrams 指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不 区分大小写)所出现的次数都是相同的。例如,DUnclear‖和DNuclear‖、DRimon‖和DMinOR‖ 都是 Anagrams。 编写一个程序, 输入两个单词, 然后判断一下, 这两个单词是否是 Anagrams。 每一个单词的长度不会超过 80 个字符,而且是大小写无关的。 输入格式:输入有两行,分别为两个单词。 输出格式:输出只有一个字母 Y 或 N,分别表示 Yes 和 No。 输入输出样例 样例输入 Unclear Nuclear 样例输出 Y 15. 算法训练出现次数最多的整数 时间限制:1.0s 问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数 N12内存限制:512.0MB内存限制:512.0MB内存限制:512.0MB 也是由用户输入的,最多不会超过 20。然后程序将对这个数组进行统计,把出现次数最多 的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印 比较小的那个值。 输入格式:第一行是一个整数 N,N? ?? 20;接下来有 N 行,每一行表示一个整数,并 且按照从小到大的顺序排列。 输出格式:输出只有一行,即出现次数最多的那个元素值。 输入输出样例 样例输入 5 100 150 150 200 250 样例输出 150 16. 算法训练 字串统计 时间限制:1.0s 问题描述 给定一个长度为 n 的字符串 S,还有一个数字 L,统计长度大于等于 L 的出现次数最多 的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次 出现最早的。 输入格式 第一行一个数字 L。 第二行是字符串 S。 L 大于 0,且不超过 S 的长度。 输出格式 一行,题目要求的字符串。 输入样例 1: 4 bbaabbaaaaa 输出样例 1: bbaa 内存限制:512.0MB13 输入样例 2: 2 bbaabbaaaaa 输出样例 2: aa 数据规模和约定 n&=60 S 中所有字符都是小写英文字母。 提示 枚举所有可能的子串,统计出现次数,找出符合条件的那个 17. 算法训练 矩阵乘法 时间限制:1.0s 问题描述 输入两个矩阵,分别是 m*s,s*n 大小。输出两个矩阵相乘的结果。 输入格式 第一行,空格隔开的三个正整数 m,s,n(均不超过 200)。 接下来 m 行,每行 s 个空格隔开的整数,表示矩阵 A(i,j)。 接下来 s 行,每行 n 个空格隔开的整数,表示矩阵 B(i,j)。 输出格式 m 行,每行 n 个空格隔开的整数,输出相乘後的矩阵 C(i,j)的值。 样例输入 2 1 1 0 1 3 3 2 0 -1 1 -3 3 2 1 内存限制:512.0MB样例输出 -3 2 -8 2 提示 矩阵 C 应该是 m 行 n 列,其中 C(i,j)等于矩阵 A 第 i 行行向量与矩阵 B 第 j 列列向量的14 内积。 例如样例中 C(1,1)=(1,0,-1)*(0,1,3) = 1 * 0 +0*1+(-1)*3=-3 18. 算法训练 大小写转换 时间限制:1.0s 问题描述 编写一个程序,输入一个字符串(长度不超过 20),然后把这个字符串内的每一个字 符进行大小写变换,即将大写字母变成小写,小写字母变成大写,然后把这个新的字符串输 出。 输入格式:输入一个字符串,而且这个字符串当中只包含英文字母,不包含其他类型的 字符,也没有空格。 输出格式:输出经过转换后的字符串。 输入输出样例 样例输入 AeDb 样例输出 aEdB 19. 算法训练 动态数组使用 时间限制:1.0s 内存限制:512.0MB 内存限制:512.0MB从键盘读入 n 个整数, 使用动态数组存储所读入的整数, 并计算它们的和与 平均值分别输出。要求尽可能使用函数实现程序代码。平均值为小数的只保 留其整数部分。 样例输入: 5 3 4 0 0 2 样例输出: 9 1 样例输入: 7 3 2 7 5 2 9 1 样例输出: 29 420. 算法训练删除数组零元素 时间限制:1.0s 内存限制:512.0MB15 从键盘读入 n 个整数放入数组中,编写函数 CompactIntegers,删除数 组中所有值为 0 的元素,其后元素向数组首端移动。注意,CompactInte gers 函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作 执行后数组的新元素个数。 输出删除后数组中元素的个数并依次输出数组元 素。 样例输入: (输入格式说明:5 为输入数据的个数,3 4 0 0 2 是以空格 隔开的 5 个整数) 5 3 4 0 0 2 样例输出:(输出格式说明:3 为非零数据的个数,3 4 2 是以空格隔开的 3 个非零整数) 3 3 4 2 样例输入: 7 0 0 7 0 0 9 0 样例输出: 2 7 9 样例输入: 3 0 0 0 样例输出: 021. 算法训练最小乘积(基本型) 时间限制:1.0s 问题描述 给两组数,各 n 个。 请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。 要求程序输出这个最小值。 例如两组数分别为:1 3 -5 和-2 4 1 内存限制:512.0MB那么对应乘积取和的最小值应为: (-5) * 4 + 3 * (-2) + 1 * 1 = -25 输入格式 第一个行一个数 T 表示数据组数。后面每组数据,先读入一个 n,接下来两行每行 n 个数,每个数的绝对值小于等于 1000。 n&=8,T&=1000 输出格式16 一个数表示答案。 样例输入 2 3 1 3 -5 -2 4 1 5 1 2 3 4 5 1 0 1 0 1样例输出 -25 6 22. 算法训练 Torry 的困惑(基本型) 时间限制:1.0s 问题描述 Torry 从小喜爱数学。一天,老师告诉他,像 2、3、5、7……这样的数叫做质数。Torry 突然想到一个问题,前 10、100、……个质数的乘积是多少呢?他把这个问题 告诉老师。老师愣住了,一时回答不出来。于是 Torry 求助于会编程的你,请你算出前 n 个 质数的乘积。不过,考虑到你才接触编程不久,Torry 只要你算出这个数模上 50000 的值。 输入格式 仅包含一个正整数 n,其中 n&=100000。 输出格式 输出一行,即前 n 个质数的乘积模 50000 的值。 样例输入 1 内存限制:512.0MB样例输出 2 23. 算法训练寻找数组中最大值 时间限制:1.0s 内存限制:512.0MB17 问题描述 对于给定整数数组 a[],寻找其中最大值,并返回下标。 输入格式 整数数组 a[],数组元素个数小于 1 等于 100。输出数据分作两行:第一行只有一个数, 表示数组元素个数;第二行为数组的各个元素。 输出格式 输出最大值,及其下标 样例输入 3 3 2 1样例输出 3 0 24. 算法训练关联矩阵 时间限制:1.0s 问题描述 有一个 n 个结点 m 条边的有向图,请输出他的关联矩阵。 输入格式 第一行两个整数 n、m,表示图中结点和边的数目。n&=100,m&=1000。 接下来 m 行,每行两个整数 a、b,表示图中有(a,b)边。 注意图中可能含有重边,但不会有自环。 输出格式 输出该图的关联矩阵,注意请勿改变边和结点的顺序。 样例输入 5 1 3 1 2 2 2 3 9 2 1 5 5 3 3 218内存限制:512.0MB 4 3 5 4 样例输出 1 -1 1 0 0 0 0 0 0 -1 0 0 1 1 1 -1 0 0 0 1 0 0 -1 -1 1 -1 0 0 0 0 0 0 0 0 1 -1 0 0 -1 -1 0 0 0 0 1 25. 算法训练 送分啦 时间限制:1.0s 问题描述 这题想得分吗?想,请输出Dyes‖;不想,请输出Dno‖。 输出格式 输出包括一行,为Dyes‖或Dno‖。 内存限制:512.0MB26. 算法训练 操作格子 时间限制:1.0s 问题描述 有 n 个格子,从左到右放成一排,编号为 1-n。 共有 m 次操作,有 3 种操作类型: 1.修改一个格子的权值, 2.求连续一段格子权值和, 3.求连续一段格子的最大值。 对于每个 2、3 操作输出你所求出的结果。 输入格式 第一行 2 个整数 n,m。 接下来一行 n 个整数表示 n 个格子的初始权值。 接下来 m 行,每行 3 个整数 p,x,y,p 表示操作类型,p=1 时表示修改格子 x 的权值为 y,p=2 时表示求区间[x,y]内格子权值和,p=3 时表示求区间[x,y]内格子最大的权值。 输出格式19内存限制:256.0MB 有若干行,行数等于 p=2 或 3 的操作总数。 每行 1 个整数,对应了每个 p=2 或 3 操作的结果。 样例输入 4 1 2 1 3 3 2 1 4 1 3 4 3 3 4样例输出 6 3 数据规模与约定 对于 20%的数据 n &= 100,m &= 200。 对于 50%的数据 n &= 5000,m &= 5000。 对于 100%的数据 1 &= n &= 100000,m &=
&= 格子权值&= 10000。 27. 算法训练 逆序对 时间限制:1.0s 问题描述 Alice 是一个让人非常愉跃的人!他总是去学习一些他不懂的问题, 然后再想出许多稀奇 古怪的题目。 这几天, Alice 又沉浸在逆序对的快乐当中, 他已近学会了如何求逆序对对数, 动态维护逆序对对数等等题目,他认为把这些题让你做简直是太没追求了,于是,经过一天 的思考和完善,Alice 终于拿出了一道他认为差不多的题目: 有一颗 2n-1 个节点的二叉树,它有恰好 n 个叶子节点,每个节点上写了一个整数。如 果将这棵树的所有叶子节点上的数从左到右写下来,便得到一个序列 a[1]…a[n]。现在想让 这个序列中的逆序对数量最少, 但唯一的操作就是选树上一个非叶子节点, 将它的左右两颗 子树交换。他可以做任意多次这个操作。求在最优方案下,该序列的逆序对数最少有多少。 Alice 自己已近想出了题目的正解,他打算拿来和你分享,他要求你在最短的时间内完 成。 输入格式 第一行一个整数 n。 下面每行,一个数 x。 内存限制:256.0MB20 如果 x=0,表示这个节点非叶子节点,递归地向下读入其左孩子和右孩子的信息,如 果 x≠0,表示这个节点是叶子节点,权值为 x。 输出格式 输出一个整数,表示最少有多少逆序对。 样例输入 3 0 0 3 1 2 样例输出 1 数据规模与约定 对于 20%的数据,n &= 5000。 对于 100%的数据,1 &= n &=
&= a[i]&2^31。 28. 算法训练安慰奶牛 时间限制:1.0s 问题描述 Farmer John 变得非常懒,他不想再继续维护供奶牛之间供通行的道路。道路被用来 连接 N 个牧场,牧场被连续地编号为 1 到 N。每一个牧场都是一个奶牛的家。FJ 计划除去 P 条道路中尽可能多的道路,但是还要保持牧场之间的连通性。你首先要决定那些道路是需 要保留的 N-1 条道路。 第 j 条双向道路连接了牧场 Sj 和 Ej(1 &= Sj&= N; 1 &= Ej&= N; Sj != Ej), 而且走完它需要 Lj 的时间。没有两个牧场是被一条以上的道路所连接。奶牛们非常伤心, 因为她们的交通系统被削减了。你需要到每一个奶牛的住处去安慰她们。每次你到达第 i 个 牧场的时候(即使你已经到过), 你必须花去 Ci 的时间和奶牛交谈。 你每个晚上都会在同一个 牧场(这是供你选择的)过夜,直到奶牛们都从悲伤中缓过神来。在早上起来和晚上回去睡觉 的时候,你都需要和在你睡觉的牧场的奶牛交谈一次。这样你才能完成你的交谈任务。假设 Farmer John 采纳了你的建议,请计算出使所有奶牛都被安慰的最少时间。 输入格式 第 1 行包含两个整数 N 和 P。 接下来 N 行,每行包含一个整数 Ci。 接下来 P 行,每行包含三个整数 Sj, Ej 和 Lj。21内存限制:256.0MB 输出格式 输出一个整数, 所需要的总时间(包含和在你所在的牧场的奶牛的两次谈话时间)。 样例输入 5 7 10 10 20 6 30 1 2 2 3 2 4 3 4 2 5 3 55 5 12 17 15 6样例输出 176 数据规模与约定 5 &= N &= 10000,N-1 &= P &=
&= Lj&= 1000,1 &= Ci&= 1,000。 29. 算法训练 最短路 时间限制:1.0s 问题描述 给定一个 n 个顶点,m 条边的有向图(其中某些边权可能为负,但保证没有负环)。 请你计算从 1 号点到其他点的最短路(顶点从 1 到 n 编号)。 输入格式 第一行两个整数 n, m。 接下来的 m 行,每行有三个整数 u, v, l,表示 u 到 v 有一条长度为 l 的边。 输出格式 共 n-1 行,第 i 行表示 1 号点到 i+1 号点的最短路。 样例输入 3 3 1 2 -122内存限制:256.0MB 2 3 -1 3 1 2 样例输出 -1 -2 数据规模与约定 对于 10%的数据,n = 2,m = 2。 对于 30%的数据,n &= 5,m &= 10。 对于 100%的数据,1 &= n &= 20000,1 &= m &= 200000,-10000 &= l &= 10000, 保证从任意顶点都能到达其他所有顶点。 30. 算法训练结点选择 时间限制:1.0s 问题描述 有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那 么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少? 输入格式 第一行包含一个整数 n 。 接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。 接下来一共 n-1 行,每行描述树上的一条边。 输出格式 输出一个整数,代表选出的点的权值和的最大值。 样例输入 5 1 1 1 2 2 2 3 4 5 2 3 4 5 内存限制:256.0MB样例输出 12 样例说明23 选择 3、4、5 号点,权值和为 3+4+5 = 12 。 数据规模与约定 对于 20%的数据, n &= 20。 对于 50%的数据, n &= 1000。 对于 100%的数据, n &= 100000。 权值均为不超过 1000 的正整数。 31. 算法训练 K 好数 时间限制:1.0s 问题描述 如果一个自然数 N 的 K 进制表示中任意的相邻的两位都不是相邻的数字,那么我们就 说这个数是 K 好数。求 L 位 K 进制数中 K 好数的数目。例如 K = 4,L = 2 的时候,所有 K 好数为 11、 13、 20、 22、 30、 31、 33 共 7 个。 由于这个数目很大, 请你输出它对
取模后的值。 输入格式 输入包含两个正整数,K 和 L。 输出格式 输出一个整数,表示答案对
取模后的值。 样例输入 4 2 样例输出 7 数据规模与约定 对于 30%的数据,KL&= 106; 对于 50%的数据,K &= 16, L &= 10; 对于 100%的数据,1 &= K,L &= 100。 32. 算法训练最大最小公倍数 时间限制:1.0s 问题描述 已知一个正整数 N,问从 1~N 中任选出三个数,他们的最小公倍数最大可以为多少。24内存限制:256.0MB内存限制:256.0MB 输入格式 输入一个正整数 N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 504 数据规模与约定 1 &= N &= 106。 33. 算法训练区间 k 大数查询 时间限制:1.0s 问题描述 给定一个序列,每次询问序列中第 l 个数到第 r 个数中第 K 大的数是哪个。 输入格式 第一行包含一个数 n,表示序列长度。 第二行包含 n 个正整数,表示给定的序列。 第三个包含一个正整数 m,表示询问个数。 接下来 m 行,每行三个数 l,r,K,表示询问序列从左往右第 l 个数到第 r 个数中,从大 往小第 K 大的数是哪个。序列元素从 1 开始标号。 输出格式 总共输出 m 行,每行一个数,表示询问的答案。 样例输入 5 1 2 3 4 5 2 1 5 2 2 3 2 样例输出 内存限制:256.0MB25 4 2 数据规模与约定 对于 30%的数据,n,m&=100; 对于 100%的数据,n,m&=1000; 保证 k&=(r-l+1),序列中的数&=106。 34. 法训练 P1102 VIP 时间限制:1.0s 内存限制:256.0MB定义一个学生结构体类型 student,包括 4 个字段,姓名、性别、年龄和成绩。然后在 主函数中定义一个结构体数组(长度不超过 1000),并输入每个元素的值,程序使用冒泡 排序法将学生按照成绩从小到大的顺序排序,然后输出排序的结果。 输入格式:第一行是一个整数 N(N&1000),表示元素个数;接下来 N 行每行描述一 个元素,姓名、性别都是长度不超过 20 的字符串,年龄和成绩都是整型。 输出格式: 按成绩从小到大输出所有元素, 若多个学生成绩相同则成绩相同的同学之间 保留原来的输入顺序。 输入: 3 Alice female 18 98 Bob male 19 90 Miller male 17 92 输出: Bob male 19 90 Miller male 17 92 Alice female 18 98 35. 算法训练 P1101 时间限制:1.0s 内存限制:256.0MB有一份提货单,其数据项目有:商品名(MC)、单价(DJ)、数量(SL)。定义一个 结构体 prut,其成员是上面的三项数据。在主函数中定义一个 prut 类型的结构体数组,输 入每个元素的值,计算并输出提货单的总金额。 输入格式:第一行是数据项个数 N(N&100),接下来每一行是一个数据项。商品名是长 度不超过 100 的字符串,单价为 double 类型,数量为整型。 输出格式:double 类型的总金额。 输入: 4 book 12.5 3 pen 2.5 1026 computer 3200 1 flower 47 5 输出:
36. 算法训练 s01 串 时间限制:1.0s 问题描述 s01 串初始为&0& 按以下方式变换 0 变 1,1 变 01 输入格式 1 个整数(0~19) 输出格式 n 次变换后 s01 串 样例输入 3 样例输出 101 数据规模和约定 0~19 37. 算法训练 Representative Sampling (30_points) 时间限制:2.0s 【题目描述】 来自 ABBYY 的小明有一个与D细胞与遗传学研究所‖的合作。最近,研究所用一个新的 题目考验小明。题目如下。 有由 n 个细胞组成的一个集合(不一定不同)每个细胞是一个由小写拉丁字母组成的 字符串。 科学家给小明提出的问题是从给定集合中选出一个大小为 k 的子集, 使得所选子集 的代表值最大。 小明做了些研究并得出了一个结论, 即一个蛋白质集合的代表制可以用一个方便计算的 整数来表示。我们假设当前的集合为{a1,?...,?ak},包含了 k 个用以表示蛋白质的字符串。那 么蛋白质集合的代表值可以用如下的式子来表示: 内存限制:256.0MB 内存限制:256.0MB27 其中 f(x,?y)表示字符串 x 和 y 的最长公共前缀的长度,例如: f(&abc&, &abd&)?=?2 ,f(&ab&, &bcd&)?=?0. 因此,蛋白质集合{&abc&, &abd&, &abe&}的代表值等于 6,集合{&aaa&, &ba&, &ba&}的代表 值等于 2。 在发现了这个之后, 小明要求赛事参与者写一个程序选出, 给定蛋白质的集合中的大小 为 k 的子集中,能获得最大可能代表性值得一个子集。帮助他解决这个问题吧! 【输入格式】 输入数据第一行包含 2 个正整数 n 和 k(1≤k≤n),由一个空格隔开。接下来的 n 行每 一行都包含对蛋白质的描述。每个蛋白质都是一个仅有不超过 500 个小写拉丁字母组成的 非空字符串。有些字符串可能是相等的。 输出格式 输出一个整数,表示给定蛋白质集合的大小为 k 的子集的代表值最大可能是多少。 【数据规模】 20%的数据保证:1?≤?n?≤?20 50%的数据保证:1?≤?n?≤?100 100%的数据保证:1?≤?n?≤?2000 【样例输入 1】 32 aba bzd abq 【样例输出 1】 2 【样例输入 2】 43 eee rrr ttt qqq 【样例输出 2】 0 【样例输入 3】 43 aaa abba abbc abbd28 【样例输出 3】 9 38. 算法训练 Buying Sets 时间限制:2.0s 问题描述 给定 n 个集合, 要求选出其中某些集合, 使得这些集合的并集的势, 等于选出的集合的 数目. 对于任意的 k(1&=k&=n), 满从中选出任意 k 个集合, 这 k 个集合的并集的势一定大于等 于 k. 每个集合有一个权值, 每个选择方案的代价是所选的集合的权值的和. 请输出代价最小的选择方案的代价. 当然, 不选择任何一个集合是一个可行的方案(权值和为 0), 但不一定最优(权值和可以 为负). 输入格式 第一行一个正整数 n(1&=n&=300), 为集合个数. 在接下来 n 行中, 第 i 行描述第 i 个集合: 首先给出一个正整数 m[i]为该集合的势, 显然 1&=m[i]&=n. 接下来 m[i]个在 1 到 n 之间的整数, 表示该集合中的元素. 最后一行 n 个整数, 为每个集合的权值, 绝对值不超过 1e6. 输出格式 仅一个整数, 为代价最小的选择方案的代价. 样例输入 3 1 1 2 2 3 1 3 10 20 -3 样例输出 -3 样例输入 5 2 2 2 2 1 2 3 4 2 3 4 5 内存限制:256.0MB29 2 5 1 1 -1 1 -1 1 样例输出 0 样例输入 5 2 1 2 2 2 3 2 3 4 2 4 5 2 5 1 -1 1 -1 1 -1 样例输出 -1 39. 算法训练 Don't fear, DravDe is kind 时间限制:2.0s 问题描述 这一天,有一列车子排起了一排长队,必经之路是一个被魔王笼罩的山洞。每辆车的司 机害怕魔王程度不同,所以每个司机有一些要求。 车子有 n 台,排成一条长队,每辆车有 4 个属性: V ――这辆车的总价值,价值就是比如它其中的乘客和货物的价值 c ――这辆车里面的人数量(司机表示自己也算一个乘客,司机和乘客不用区分开来) l ――在这辆车的前面需要总量正好为多少乘客的车(不多也不少),这车才敢开 r ――在这辆车的后面需要总量正好为多少乘客的车(不多也不少),这车才敢开 D前面需要总量正好为多少乘客的车‖指的是驶在这辆车前面所有的车的乘客总数。 D后面需要总量正好为多少乘客的车‖指的是驶在这辆车后面所有的车的乘客总数。 你不能改变每辆车在车队的相对顺序, 但你可以安排某些车退出车队, 保证依然在车队 的每辆车都敢开了,即满足上述条件,并且剩下车的 v 的总量最大。 ----------------------------简单来说,给您按输入顺序排列的 n 辆车,您需要删去里面的一些车(剩下的车仍然 按原相对顺序排列)。 使得对于每辆车,若它没被删去,设其为输入的第 i 辆车, 要满足 l[i]= sigma{c[j] | j&i 且第 j 辆车没被删去} r[i]= sigma{c[j] | j&i 且第 j 辆车没被删去} 在满足这些条件前提下,要求 sigma{V[i] | i 没被删去} 最大, 请输出这个最大值,并且递增输出没有被删去的车的标号。30内存限制:256.0MB 输入格式 输入的第一行为一个正整数 n(1&=n&=10^5)――车的个数。 接下来 n 行,每行四个整数,第 i 行的数字: vi, ci,li ,ri ,(1&=vi&=10^4 , 1&=ci&=10^5,0&=li,ri&=10^5),车子们从 1 开始编号,从车队的最前头开始算起。 输出格式 第一行输出一个数 k: 会继续在这车队里的车的总数 (注意我们的目标是让价值最大) 。 第二行 k 个数,递增输出继续在车队里的车的编号。 请留心你不允许改变车的次序。如果答案不唯一,输出任意一个。 样例输入 5 1 1 1 1 2 1 1 1 1 1 0 1 2 3 3 3 2 1 0 0样例输出 4 1 2 3 5 样例输入 5 1 1 0 3 10 1 2 1 2 2 1 1 10 1 1 2 3 1 3 0 样例输出 3 1 3 5 数据规模和约定 对于 20%的数据,n&=100 对于 50%的数据,n&=1000 对于 100%的数据,n&=100000 对于 100%的数据,1&=vi&=10^4 , 1&=ci&=10^5,0&=li,ri&=10^5 40. 算法训练 Maze 时间限制:1.0s 内存限制:256.0MB31 问题描述 一个含有 n 个点的迷宫是一棵树(一个任意两点之间都恰好有一条路径的无向图)。 每个点都有一定的概率成为这个迷宫的入口和出口。 从这个迷宫走出去的方法是从入口开始进行深度优先搜索。如果当前有多个移动方案, 那么等概率的选择移动方案中的一个。DFS 的过程为以下的伪代码: DFS(x) if x == exit vertex then finish search flag[x] &- TRUE random shuffle the vertices' order in V(x) // here all permutations have equal probability to be chosen for i &- 1 to length[V] do if flag[V[i]] = FALSE then count++; DFS(y); count++; V(x)是与 x 点相邻的点的序列。Flag 数组初始时是全部为 FALSE 的。DFS 初始时从 入口开始。当搜索结束时,变量 count 将会统计移动的次数。 你的任务是统计一个人从这个迷宫的入口走到出口步数的数学期望值。 输入格式 第一行一个数 n,表示这个图的节点数。。 下面 n-1 行,每行包括两个数 ai,bi,表示一条连接 ai 和 bi 的边。 保证给出的图是一棵树。 下面 n 行,每行包括两个非负整数 xi,yi,表示选择 i 为入口的可能性和出口的可能性。 选择 i 为入口的概率和选择 i 为出口的概率分别为 xi/sumx 和 yi/sumy,sumx 表示 x 的 总和,sumy 表示 y 的总和。sumx 以及 sumy 均为正数且不超过 10^6。 输出格式 输出期望的步数,要求误差不超过 10^-9。 样例输入 输入格式 2 12 01 10 输入格式32 3 12 13 10 02 03 输入格式 7 12 13 24 25 36 37 11 11 11 11 11 11 11 样例输出 输出格式 1. 输出格式 2. 输出格式 4. 样例说明 第一个样例中,入口总是 1,出口总是 2。 第二个样例的入口总是 1 且出口有 2/5 的概率是 2, 3/5 的概率是 3。 对于出口为 2 和 3 的数学期望是相同的(对称的情况),第一步有 0.5 的概率直接到达出口,0.5 的概率走错 到另一个点 (然后再走两步到终点) 。 所以数学期望等于 2/5*(1*0.5+3*0.5)+3/5*(1*0.5+3*0.5) = 2。 数据规模和约定33 20% 的数据 n &= 100 50% 的数据 n &= 1000 70% 的数据 n &= %的数据 n &= . 算法训练 Entertaining Geodetics 时间限制:2.0s 问题描述 在此游戏中地图被分为了许多叫作 Geo 格的正方形方格,其中一些被涂上色,假设没 有涂色的为透明色。 地图中还有些 Geo 符号,它们样子像不同颜色的金字塔(包括透明 Geo 符号)。每个 Geo 符号都坐落在 Geo 格上,每个 Geo 格上最多一个 Geo 符号。 Geo 符号可以被消除。为了更好地理解 Geo 符号在消除时发生了什么,这里引入把刚 消除的 Geo 符号放入的队列。 从队列中取出 Geo 符号,观察包含 Geo 符号的 Geo 格的颜色,如果它不是透明的且 颜色不同于 Geo 符号, 则把所有这个颜色的 Geo 格重新涂为 Geo 符号的颜色 (透明的 Geo 符号则为透明色)。重涂色是在一个无限大的区域从那个有符号的 Geo 格子开始螺旋状进 行的。 内存限制:256.0MB. 换句话说, 我们选择所有需要重涂色的方格找到它们在以有符号格为中心的无限螺旋表 格中所对应的数字。此后按数字的增加顺序我们对其重染色。 如果在重染色时遇到一个格子包含另一个 Geo 符号的情况则将 Geo 符号移出并放置在 队列尾部。 当重染色结束后 Geo 符号彻底消失,并且队列中下一个 Geo 符号(如果有)将取出, 重复此操作直至队列为空。 为了更好地理解请看一个例子。 你知道所有格子的颜色、 所有符号的位置。 计算出队列里符号彻底消失时所造成的重染 色次数。 推荐使用 I64d 输出。 输入格式34 第一行包含两个数 n,m(1&=n,m&=300)―地图的高和宽。 接下来 n 行每行 m 个数―格子的颜色。 接下来 n 行每行 m 个数―对符号的描述, -1 表示没有符号, 否则数字代表符号的颜色。 所有颜色都是属于 0 到 10^9 的整数,0 表示透明。 最后一行两个数 x,y(1&=x&=n,1&=y&=m)―需要消除的 Geo 符号的行和列位置。行 从上到下标记,列从左往右标记,从 1 开始。保证位置(x,y)包含一个符号。 输出格式 一行一个数―符号消除时重染色次数。 样例输入 5 5 9 0 1 1 0 0 0 3 2 0 1 1 1 3 0 1 1 1 3 0 0 1 2 0 3 -1 1 -1 3 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 2 3 -1 -1 -1 -1 -1 -1 2 4 2 样例输出 35 样例说明42. 算法训练特殊的数字四十 时间限制:1.0s 特殊的数字四十35内存限制:256.0MB 问题描述 1234 是一个非常特殊的四位数,因为它的各位数之和为 10,编程求所有这样的四位十 进制数。 输出格式 按从小到大的顺序输出满足条件的四位十进制数。每个数字占用一行。 43. 算法训练 C*++ Calculations 时间限制:2.0s 问题描述 C*++语言和 C++语言非常相似,然而 C*++的程序有时会出现意想不到的结果。比如像 这样的算术表达式: 表达式=基本式 / 表达式+基本式 / 表达式-基本式 基本式=增量 / 系数*增量 增量=a++ / ++a 系数=0/1/2/……/1000 如D5*a++-3*++a+a++‖是合法的 C*++表达式。 计算这样的表达式的值的方法: 首先是每个基本式进行计算, 然后按照正常的算术运算 法则计算。如果一个基本式包含Da++‖,则先进行乘法运算再使变量 a 权值+1;如果一个基 本式包含D++a‖,则先使变量 a 权值+1 再进行乘法运算。 然而基本式可以按任意顺序计算,这就是为什么计算结果是完全无法预料的。 你的任务就是去找到最大的可能结果。 第一行,一个整数 n,表示变量 a 的初始值。 第二行,一个合法的 C*++表达式。 共一行,一个整数 ans,表示最大可能结果。 输入格式 input 1: 1 5*a++-3*++a+a++ input 2: 3 a+++++a 输出格式 output 1: 11 内存限制:64.0MB36 output 2: 8 数据规模和约定 对于 20%的数据,表达式长度&=20。 另有 20%的数据,满足 n&=0。 对于 100%的数据,-1000&=n&=1000,表达式长度&=10000。 注意表达式开头可能有负号! 44. 算法训练水仙花 时间限制:1.0s 水仙花数 问题描述 判断给定的三位数是否水仙花数。 所谓水仙花数是指其值等于它本身每位数字立方和的 数。例 153 就是一个水仙花数。 153=13+53+33 输入格式 一个整数。 输出格式 是水仙花数,输出&YES&,否则输出&NO&(不包括引号) 样例输入 123 样例输出 NO 数据规模和约定 一个三位的整数,否则输出&NO& 45. 算法训练王、后传说 时间限制:1.0s 问题描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横、坚、 斜线位置。 看过清宫戏的中国人都知道, 后宫乃步步惊心的险恶之地。 各皇后都有自己的势力范围, 但也总能找到相安无事的办法。 所有中国人都知道,皇权神圣,伴君如伴虎,触龙颜者死...... 现在有一个 n*n 的皇宫,国王占据他所在位置及周围的共 9 个格子,这些格子皇后不 能使用(如果国王在王宫的边上,占用的格子可能不到 9 个)。当然,皇后也不会攻击国37内存限制:256.0MB内存限制:256.0MB 王。 现在知道了国王的位置(x,y)(国王位于第 x 行第 y 列,x,y 的起始行和列为 1),请 问,有多少种方案放置 n 个皇后,使她们不能互相攻击。 输入格式 一行,三个整数,皇宫的规模及表示国王的位置 输出格式 一个整数,表示放置 n 个皇后的方案数 样例输入 8 2 2 样例输出 10 数据规模和约定 n&=12 46. 算法训练 A+B problem 时间限制:1.0s 问题描述 Given two integers A and B, your task is to output their sum, A+B. 输入格式 The input contains of only one line, consisting of two integers A and B. (0 ≤ A,B ≤ 1 000) 输出格式 The output should contain only one number that is A+B. 样例输入 1 1 样例输出 2 47. 算法训练猴子分苹果 时间限制:1.0s 问题描述 内存限制:256.0MB 内存限制:1.0GB38 秋天到了,n 只猴子采摘了一大堆苹果放到山洞里,约定第二天平分。这些猴子很崇拜 猴王孙悟空,所以都想给他留一些苹果。第一只猴子悄悄来到山洞,把苹果平均分成 n 份, 把剩下的 m 个苹果吃了,然后藏起来一份,最后把剩下的苹果重新合在一起。这些猴子依次 悄悄来到山洞,都做同样的操作,恰好每次都剩下了 m 个苹果。第二天,这些猴子来到山 洞,把剩下的苹果分成 n 分,巧了,还是剩下了 m 个。问,原来这些猴子至少采了多少个 苹果。 输入格式 两个整数,n m 输出格式 一个整数,表示原来苹果的数目 样例输入 5 1 样例输出 15621 数据规模和约定 0&m&n&9 48. 算法训练学做菜 时间限制:1.0s 问题描述 涛涛立志要做新好青年, 他最近在学做菜。 由于技术还很生疏, 他只会用鸡蛋, 西红柿, 鸡丁,辣酱这四种原料来做菜,我们给这四种原料标上字母 A,B,C,D。 涛涛现在会做的菜有五种: 1、西红柿炒鸡蛋原料:AABDD 2、酸辣鸡丁原料:ABCD 3、宫保鸡丁原料:CCD 4、水煮西红柿原料:BBB 5、怪味蛋原料:AD 这天早上,开开去早市给涛涛买了一些原料回来。由于事先没有什么计划,涛涛决定, 对于现存的原料,每次尽量做菜单上靠前(即编号小)的菜。 现在请你写一个程序,判断一下开开和涛涛中午能吃到哪些菜。 输入格式 共 4 个整数 a,b,c,d。分别表示开开买的 A,B,C,D 这 4 种原料的数量。每种原料不会超 过 30 份。 输出格式39内存限制:256.0MB 输出 5 行。其中第 i 行表示涛涛做的第 i 种菜的数目。 样例输入 3 1 2 4 样例输出 1 0 1 0 1 49. 算法训练寂寞的数 时间限制:1.0s 问题描述 道德经曰:一生二,二生三,三生万物。 对于任意正整数 n,我们定义 d(n)的值为为 n 加上组成 n 的各个数字的和。例如, d(23)=23+2+3=28, d(+1+4+8+1=1495。 因此,给定了任意一个 n 作为起点,你可以构造如下一个递增序列: n,d(n),d(d(n)),d(d(d(n)))....例如,从 33 开始的递增序列为: 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... 我们把 n 叫做 d(n)的生成元, 在上面的数列中, 33 是 39 的生成元, 39 是 51 的生成元, 等等。有一些数字甚至可以有两个生成元,比如 101,可以由 91 和 100 生成。但也有一些 数字没有任何生成元,如 42。我们把这样的数字称为寂寞的数字。 输入格式 一行,一个正整数 n。 输出格式 按照升序输出小于 n 的所有寂寞的数字,每行一个。 样例输入 40 样例输出 1 3 5 740内存限制:256.0MB 9 20 31 数据规模和约定 n&=10000 50. 算法训练连续正整数的和 时间限制:1.0s 问题描述 78 这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。 输入一个正整数 n(&=10000) 输出 m 行(n 有 m 种表示法),每行是两个正整数 a,b,表示 a+(a+1)+...+b=n。 对于多种表示法,a 小的方案先输出。 样例输入 78 样例输出 1 12 18 21 25 27 51. 算法训练友好数 时间限制:1.0s 问题描述 有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是 友好的。例如: 9 的约数和有:1+3=4 4 的约数和有:1+2=3 所以 9 和 4 不是友好的。 220 的约数和有:1 2 4 5 10 11 20 22 44 55 110=284 284 的约数和有:1 2 4 71 142=220 所以 220 和 284 是友好的。 编写程序,判断两个数是否是友好数。 输入格式 一行,两个整数,由空格分隔 输出格式 如果是友好数,输出&yes&,否则输出&no&,注意不包含引号。41内存限制:256.0MB内存限制:256.0MB 样例输入 220 284 样例输出 yes 数据规模和约定 两个整数都小于 10000 52. 算法训练和为 T 时间限制:1.0s 问题描述 从一个大小为 n 的整数集中选取一些元素,使得它们的和等于给定的值 T。每个元素限 选一次,不能一个都不选。 输入格式 第一行一个正整数 n,表示整数集内元素的个数。 第二行 n 个整数,用空格隔开。 第三行一个整数 T,表示要达到的和。 输出格式 输出有若干行,每行输出一组解,即所选取的数字,按照输入中的顺序排列。 若有多组解,优先输出不包含第 n 个整数的;若都包含或都不包含,优先输出不包含 第 n-1 个整数的,依次类推。 最后一行输出总方案数。 样例输入 5 -7 -3 -2 5 9 0 样例输出 -3 -2 5 -7 -2 9 2 数据规模和约定 1&=n&=22 T&=maxlongint 集合中任意元素的和都不超过 long 的范围 内存限制:256.0MB42 53. 算法训练黑白无常 时间限制:1.0s 问题描述 某寝室的同学们在学术完之后准备玩一个游戏: 游戏是这样的, 每个人头上都被贴了一 张白色或者黑色的纸,现在每个人都会说一句话D我看到 x 张白色纸条和 y 张黑色的纸条‖, 又已知每个头上贴着白色纸的人说的是真话、 每个头上贴着黑色纸的人说的是谎话, 现在要 求你判断哪些人头上贴着的是白色的纸条,如果无解输出DNoSolution.‖;如果有多组解,则 把每个答案中贴白条的人的编号按照大小排列后组成一个数 (比如第一个人和第三个人头上 贴着的是白纸条,那么这个数就是 13;如果第 6、7、8 个人都贴的是白纸条,那么这个数 就是 678)输出最小的那个数(如果全部都是黑纸条也满足情况的话,那么输出 0) 输入格式 第一行为一个整数 n, 接下来 n 行中的第 i 行有两个整数 x 和 y, 分别表示第 i 个人说D我 看到 x 张白色纸条和 y 张黑色的纸条‖。 输出格式 一行。如果无解输出DNoSolution.‖。否则输出答案中数值(具体见问题描述)最小的那 个,如果全部都是黑纸条也满足情况的话,那么输出 0 样例输入 2 1 0 1 0 样例输出 0 样例输入 5 3 0 1 4 1 1 4 3 0 3 内存限制:256.0MB样例输出 35 数据规模和约定 n&=8 54. 算法训练数的统计43 时间限制:1.0s 问题描述内存限制:256.0MB在一个有限的正整数序列中,有些数会多次重复出现在这个序列中。 如序列:3,1,2,1,5,1,2。其中 1 就出现 3 次,2 出现 2 次,3 出现 1 次,5 出 现 1 次。 你的任务是对于给定的正整数序列,从小到大依次输出序列中出现的数及出现的次数。 输入格式 第一行正整数 n,表示给定序列中正整数的个数。 第二行是 n 个用空格隔开的正整数 x,代表给定的序列。 输出格式 若干行,每行两个用一个空格隔开的数,第一个是数列中出现的数,第二个是该数在序 列中出现的次数。 样例输入 12 8 2 8 2 2 11 1 1 8 1 13 13 样例输出 1 3 2 3 8 3 11 1 13 2 数据规模和约定 数据:n&=1000;0&x&=。 55. 算法训练暗恋 时间限制:1.0s 问题描述 同在一个高中,他却不敢去找她,虽然在别人看来,那是再简单不过的事。暗恋,是他 唯一能做的事。他只能在每天课间操的时候,望望她的位置,看看她倾心的动作,就够了。 操场上的彩砖啊,你们的位置,就是他们能够站立的地方,他俩的关系就像砖与砖之间一样 固定,无法动摇。还记得当初铺砖的工人,将整个操场按正方形铺砖(整个操场可视为 R 行 C 列的矩阵,矩阵的每个元素为一块正方形砖块),正方形砖块有两种,一种为蓝色, 另一种为红色。我们定义他和她之间的D爱情指标‖为最大纯色正方形的面积,请你写一个程 序求出D爱情指标‖。 输入格式44内存限制:256.0MB 第一行两个正整数 R 和 C。 接下来 R 行 C 列描述整个操场,红色砖块用 1 来表示,蓝色砖块用 0 来表示。 输出格式 一个数,表示他和她之间的D爱情指标‖。 样例输入 5 0 1 0 1 1 8 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1样例输出 9 数据规模和约定 40%的数据 R,C&=10; 70%的数据 R,C&=50; 100%的数据 R,C&=200; 56. 算法训练明明的随机数 时间限制:1.0s 问题描述 明明想在学校中请一些同学一起做一项问卷调查, 为了实验的客观性, 他先用计算机生 成了 N 个 1 到 1000 之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其 余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照 排好的顺序去找同学做调查。请你协助明明完成D去重‖与D排序‖的工作。 输入格式 输入有 2 行,第 1 行为 1 个正整数,表示所生成的随机数的个数: N 第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。 输出格式 输出也是 2 行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。第 2 行为 M 个 用空格隔开的正整数,为从小到大排好序的不相同的随机数。 样例输入 10 20 40 32 67 40 20 89 300 400 1545内存限制:256.0MB 样例输出 8 15 20 32 40 67 89 300 400 题目来源 计 13 李震摘编自 NOIP06PJ01 57. 算法训练字符串的展开 时间限制:1.0s 内存限制:256.0MB在初赛普及组的D阅读程序写结果‖的问题中,我们曾给出一个字符串展开的例子:如果 在输入的字符串中, 含有类似于Dd-h‖或者D4-8‖的字串, 我们就把它当作一种简写, 输出时, 用连续递增的字母获数字串替代其中的减号,即,将上面两个子串分别输出为Ddefgh‖和 D45678‖。在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定 如下: (1) 遇到下面的情况需要做字符串的展开:在输入的字符串中,出现了减号D-‖,减号两 侧同为小写字母或同为数字,且按照 ASCII 码的顺序,减号右边的字符严格大于左边的字 符。 (2) 参数 p1:展开方式。p1=1 时,对于字母子串,填充小写字母;p1=2 时,对于字 母子串,填充大写字母。这两种情况下数字子串的填充方式相同。p1=3 时,不论是字母子 串还是数字字串,都用与要填充的字母个数相同的星号D*‖来填充。 (3) 参数 p2:填充字符的重复个数。p2=k 表示同一个字符要连续填充 k 个。例如,当 p2=3 时,子串Dd-h‖应扩展为Ddeeefffgggh‖。减号两边的字符不变。 (4) 参数 p3:是否改为逆序:p3=1 表示维持原来顺序,p3=2 表示采用逆序输出,注 意这时候仍然不包括减号两端的字符。例如当 p1=1、p2=2、p3=2 时,子串Dd-h‖应扩展为 Ddggffeeh‖。 (5) 如果减号右边的字符恰好是左边字符的后继,只删除中间的减号,例如:Dd-e‖应输 出为Dde‖,D3-4‖应输出为D34‖。如果减号右边的字符按照 ASCII 码的顺序小于或等于左边字 符,输出时,要保留中间的减号,例如:Dd-d‖应输出为Dd-d‖,D3-1‖应输出为D3-1‖。 输入格式 输入包括两行: 第 1 行为用空格隔开的 3 个正整数,一次表示参数 p1,p2,p3。 第 2 行为一行字符串,仅由数字、小写字母和减号D-‖组成。行首和行末均无空格。 输出格式 输出只有一行,为展开后的字符串。 输入输出样例 1 输入 输出46 121 abcs-wzzabcsttuuvvw9s-4zz输入输出样例 2 输入 232 a-d-d 输出 aCCCBBBd-d输入输出样例 3 输入 342 di-jkstra2-6 输出 dijkstra2************6数据规模和约定 40%的数据满足:字符串长度不超过 5 100%的数据满足:1&=p1&=3,1&=p2&=8,1&=p3&=2。字符串长度不超过 100 58. 算法训练貌似化学 时间限制:1.0s 问题描述 现在有 a,b,c 三种原料,如果他们按 x:y:z 混合,就能产生一种神奇的物品 d。 当然不一定只产生一份 d,但 a,b,c 的最简比一定是 x:y:z 现在给你 3 种可供选择的物品: 每个物品都是由 a,b,c 以一定比例组合成的,求出最少的物品数,使得他们能凑出整数 个 d 物品(这里的最少是指三者个数的总和最少) 输入格式 第一行三个整数,表示 d 的配比(x,y,z) 接下来三行,表示三种物品的配比,每行三个整数(&=10000)。 输出格式 四个整数,分别表示在最少物品总数的前提下 a,b,c,d 的个数(d 是由 a,b,c 配得的) 目标答案&=10000 如果不存在满足条件的方案,输出 NONE 样例输入 内存限制:256.0MB47 3 1 3 24 2 7 15 3 1 2样例输出 8 1 5 7 59. 算法训练 最大体积 时间限制:1.0s 问题描述 每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积。假 如每个物品有无限件可用,那么有些体积是永远也装不出来的。为了尽量装满背包,附中的 OIER 想要研究一下物品不能装出的最大体积。题目保证有解,如果是有限解,保证不超过 2,000,000,000 如果是无限解,则输出 0 输入格式 第一行一个整数 n(n&=10),表示物品的件数 第 2 行到 N+1 行: 每件物品的体积(1&= &=500) 输出格式 一个整数 ans,表示不能用这些物品得到的最大体积。 样例输入 3 3 6 10 样例输出 17 60. 算法训练 9-7 链表数据求和操作 时间限制:1.0s 内存限制:512.0MB 内存限制:256.0MB读入 10 个复数,建立对应链表,然后求所有复数的和。 样例输入 1 1 4 2 2 3 5 348 3 2 4 2 3 11 1 2 2 3 1样例输出 23+23i 61. 算法训练 6-3 判定字符位置 时间限制:1.0s 五个。 若字符串中没有元音字母,则返回 0。 只考虑小写的情况。 样例输入 and 样例输出 1 62. 算法训练黑色星期五 时间限制:1.0s 问题描述 有些西方人比较迷信,如果某个月的 13 号正好是星期五,他们就会觉得不太吉利,用 古人的说法,就是D诸事不宜‖。请你编写一个程序,统计出在某个特定的年份中,出现了多 少次既是 13 号又是星期五的情形,以帮助你的迷信朋友解决难题。 说明:(1)一年有 365 天,闰年有 366 天,所谓闰年,即能被 4 整除且不能被 100 整除的年份,或是既能被 100 整除也能被 400 整除的年份;(2)已知 1998 年 1 月 1 日是 星期四,用户输入的年份肯定大于或等于 1998 年。 输入格式:输入只有一行,即某个特定的年份(大于或等于 1998 年)。 输出格式: 输出只有一行, 即在这一年中, 出现了多少次既是 13 号又是星期五的情形。 输入输出样例 样例输入 1998 样例输出 349内存限制:512.0MB返回给定字符串 s 中元音字母的首次出现位置。英语元音字母只有?a‘、?e‘、?i‘、?o‘、?u‘内存限制:512.0MB 63. 算法训练阿尔法乘积 时间限制:1.0s 问题描述 计算一个整数的阿尔法乘积。对于一个整数 x 来说,它的阿尔法乘积是这样来计算的: 如果 x 是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x 的阿尔法乘积就等于 它的各位非 0 的数字相乘所得到的那个整数的阿尔法乘积。例如: 的阿尔法乘 积等于 8,它是按照以下的步骤来计算的:
→ 4*1*8*2*2*4*3*1*2 → 3072 → 3*7*2 → 42 → 4*2 → 8 编写一个程序, 输入一个正整数 (该整数不会超过 6,000,000) , 输出它的阿尔法乘积。 输入格式:输入只有一行,即一个正整数。 输出格式:输出相应的阿尔法乘积。 输入输出样例 样例输入
样例输出 8 64. 算法训练完数 时间限制:1.0s 问题描述 一个数如果恰好等于它的因子之和,这个数就称为D完数‖。例如,6 的因子为 1、2、3, 而 6=1+2+3,因此 6 就是D完数‖。又如,28 的因子为 1、2、4、7、14,而 28=1+2+ 4+7+14,因此 28 也是D完数‖。编写一个程序,判断用户输入的一个数是否为D完数‖。 输入格式:输入只有一行,即一个整数。 输出格式:输出只有一行,如果该数为完数,输出 yes,否则输出 no。 输入输出样例 样例输入 6 样例输出 yes 65. 算法训练数对 时间限制:1.0s 问题描述 编写一个程序,该程序从用户读入一个整数,然后列出所有的数对,每个数对的乘积即50内存限制:512.0MB内存限制:512.0MB内存限制:512.0MB 为该数。 输入格式:输入只有一行,即一个整数。 输出格式:输出有若干行,每一行是一个乘法式子。(注意:运算符号与数字之间有一 个空格) 输入输出样例 样例输入 32 样例输出 1 * 32 = 32 2 * 16 = 32 4 * 8 = 32 8 * 4 = 32 16 * 2 = 32 32 * 1 = 32 66. 算法训练整除问题 时间限制:1.0s 问题描述 编写一个程序,输入三个正整数 min、max 和 factor,然后对于 min 到 max 之间的每 一个整数(包括 min 和 max),如果它能被 factor 整除,就把它打印出来。 输入格式:输入只有一行,包括三个整数 min、max 和 factor。 输出格式:输出只有一行,包括若干个整数。 输入输出样例 样例输入 1 10 3 样例输出 3 6 9 67. 算法训练薪水计算 时间限制:1.0s 问题描述 编写一个程序,计算员工的周薪。薪水的计算是以小时为单位,如果在一周的时间内, 员工工作的时间不超过 40 个小时,那么他/她的总收入等于工作时间乘以每小时的薪水。 如果员工工作的时间在 40 到 50 个小时之间, 那么对于前 40 个小时, 仍按常规方法计算; 而对于剩余的超额部分, 每小时的薪水按 1.5 倍计算。 如果员工工作的时间超过了 50 个小 时,那么对于前 40 个小时,仍按常规方法计算;对于 40~50 个小时之间的部分,每小时 的薪水按 1.5 倍计算;而对于超出 50 个小时的部分,每小时的薪水按 2 倍计算。请编写51内存限制:512.0MB内存限制:512.0MB 一个程序,输入员工的工作时间和每小时的薪水,然后计算并显示他/她应该得到的周薪。 输入格式: 输入只有一行, 包括一个整数和一个实数, 分别表示工作时间和每小时薪水。 输出格式:输出只有一个实数,表示周薪,保留小数点后 2 位。 输入输出样例 样例输入 40 50 样例输出 . 算法训练数位分离 时间限制:1.0s 问题描述 编写一个程序, 输入一个 1000 以内的正整数, 然后把这个整数的每一位数字都分离出 来,并逐一地显示。 输入格式:输入只有一行,即一个 1000 以内的正整数。 输出格式:输出只有一行,即该整数的每一位数字,之间用空格隔开。 输入输出样例 样例输入 769 样例输出 7 6 9 69. 算法训练 Hello World! 时间限制:1.0s 描述 本题定义本学期作业题的输出格式,请认真阅读。 如无特殊说明,开头无空格,间隔符为 1 个空格,答案最后必须输出换行符(&\n&)。 输入格式 无 输出格式 Hello World! 70. 算法训练新生舞会 时间限制:1.0s 内存限制:512.0MB52内存限制:512.0MB内存限制:512.0MB 问题描述 新生舞会开始了。n 名新生每人有三个属性:姓名、学号、性别。其中,姓名用长度不 超过 20 的仅由大小写字母构成的字符串表示,学号用长度不超过 10 的仅由数字构成的字 符串表示,性别用一个大写字符?F‘或?M‘表示。 任意两人的姓名、 学号均互不相同。换言之, 每个人可被其姓名或学号唯一确定。给出 m 对两人的信息(姓名或学号),判断他们是否 能共舞。两人能共舞的充要条件为两人性别相异。 输入 第一行一个整数 n(2&=n&=1000),表示学生人数。接下来的 n 行每行依次包含一名 新生的姓名、学号、性别,分别用一个空格隔开。 之后的一行是一个整数 m(1&=m&=1000), 表示询问的数目。 接着的 m 行每行包含两个 信息(姓名或学号),保证两个信息不属于同一人,中间用一个空格隔开。 输出 对于每个询问输出一行,如果两人可以共舞,输出一个大写字母?Y‘,否则输出一个大 写字母?N‘。样例输入 4 John 10 M Jack 11 M Kate 20 F Jim 21 M 3 John 11 20 Jack Jim Jack样例输出 N Y N 提示 可以把名字和学号都当成字符串处理。可以按以下流程实现。 #include&iostream& #include&cstring&53 struct tstudent { char name[21]; char num[21]; }; void readdata(tstudent student[], int n) { 输入 N 个学生的信息 } int findstudent(tstudent student[], int n, char* data) { if (data == NULL) return -1; 判断是否有某个学生的学号或名字等于 data,如果有,函数返回该学生在 student 数组中 的序号,否则返回-1 } void solve(tstudent student[], int n, int m) { char x[21], y[21]; for (int i=0; i&m; i++) { 输入两个人的信息 X、Y。通过调用 findstudent 函数判断这两个人能否成为舞伴 } } int main() { int n, tstudent student[1010]; cin&&n; readdata(student, n); cin&&m; solve(student, n, m); } 71. 算法训练反置数 时间限制:1.0s 内存限制:512.0MB54 问题描述 一个整数的D反置数‖指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整 数。如果一个整数的末尾是以 0 结尾,那么在它的反置数当中,这些 0 就被省略掉了。比 如说,1245 的反置数是 5421,而 1200 的反置数是 21。请编写一个程序,输入两个整数, 然后计算这两个整数的反置数之和 sum,然后再把 sum 的反置数打印出来。要求:由于在 本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。 输入格式:输入只有一行,包括两个整数,中间用空格隔开。 输出格式:输出只有一行,即相应的结果。 输入输出样例 样例输入 435 754 样例输出 199 72. 算法训练字符删除 时间限制:1.0s 问题描述 编写一个程序,先输入一个字符串 str(长度不超过 20),再输入单独的一个字符 ch, 然后程序会把字符串 str 当中出现的所有的 ch 字符都删掉, 从而得到一个新的字符串 str2, 然后把这个字符串打印出来。 输入格式:输入有两行,第一行是一个字符串(内部没有空格),第二行是一个字符。 输出格式:经过处理以后的字符串。 输入输出样例 样例输入 123-45-678 样例输出 . 算法训练字串统计 时间限制:1.0s 问题描述 给定一个长度为 n 的字符串 S,还有一个数字 L,统计长度大于等于 L 的出现次数最多 的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次 出现最早的。55内存限制:512.0MB内存限制:512.0MB 输入格式 第一行一个数字 L。 第二行是字符串 S。 L 大于 0,且不超过 S 的长度。 输出格式 一行,题目要求的字符串。 输入样例 1: 4 bbaabbaaaaa 输出样例 1: bbaa 输入样例 2: 2 bbaabbaaaaa 输出样例 2: aa 数据规模和约定 n&=60 S 中所有字符都是小写英文字母。 提示 枚举所有可能的子串,统计出现次数,找出符合条件的那个 74. 算法训练进制转换 时间限制:1.0s 问题描述 编写一个程序,输入一个二进制的字符串(长度不超过 32),然后计算出相应的十进 制整数,并把它打印出来。 输入格式:输入为一个字符串,每个字符都是‘0‘或‘1‘,字符串的长度不超过 32。 输出格式:输出一个整数。 输入输出样例 样例输入 110156内存限制:512.0MB 样例输出 13 75. 算法训练阶乘 时间限制:1.0s 问题描述 一个整数 n 的阶乘可以写成 n!,它表示从 1 到 n 这 n 个整数的乘积。阶乘的增长速度 非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而 35!就更大了,它 已经无法存放在一个浮点型变量中。因此,当 n 比较大时,去计算 n!是非常困难的。幸运 的是,在本题中,我们的任务不是去计算 n!,而是去计算 n!最右边的那个非 0 的数字是多 少。例如,5! = 1*2*3*4*5 = 120,因此 5!最右边的那个非 0 的数字是 2。再如:7! = 5040, 因此 7!最右边的那个非 0 的数字是 4。请编写一个程序,输入一个整数 n(n&=100),然后输 出 n! 最右边的那个非 0 的数字是多少。 输入格式:输入只有一个整数 n。 输出格式:输出只有一个整数,即 n! 最右边的那个非 0 的数字。 输入输出样例 样例输入 6 样例输出 2 76. 算法训练输出米字形 时间限制:1.0s 根据输入的正整数 n (1 开始的 n 个字母 例如:n=3 时,包含 A,B,C;n=4 时,包含 A,B,C,D。 矩阵的正中间为 n 个字母中字典序最大的那个,从这个字母开始,沿着西北、正北、 东北、正西、正东、西南、正南、东南八个方向各有一条由大写字母组成的直线。并且直线 上的字母按字典序依次减小,直到大写字母 A。 矩阵的其它位置用英文句号.填充。 样例输入一 3 样例输出一 A.A.A .BBB. ABCBA .BBB.57内存限制:512.0MB内存限制:512.0MB米字形由一个(2n-1)*(2n-1)的矩阵组成,矩阵包含从大写 A A.A.A 样例输入二 4 样例输出二 A..A..A .B.B.B. ..CCC.. ABCDCBA ..CCC.. .B.B.B. A..A..A 77. 算法训练整数平均值 时间限制:1.0s 内存限制:512.0MB编写函数, 求包含 n 个元素的整数数组中元素的平均值。 要求在函数内部使 用指针操纵数组元素,其中 n 个整数从键盘输入,输出为其平均值。 样例输入: (输入格式说明:5 为输入数据的个数,3 4 0 0 2 是以空格 隔开的 5 个整数) 5 3 4 0 0 2 样例输出: 1 样例输入: 7 3 2 7 5 2 9 1 样例输出: 478. 算法训练确定元音字母位置 时间限制:1.0s 内存限制:512.0MB输入一个字符串,编写程序输出该字符串中元音字母的首次出现位置,如果 没有元音字母输出 0。 英语元音字母只有 ‘a’、 ‘e’、 ‘i’、 ‘o’、 ‘u’五个。 样例输入: hello 样例输出: 2 样例输入: apple 样例输出: 158 样例输入: pmp 样例输出: 079. 算法训练斜率计算 时间限制:1.0s 果斜率为无穷大输出DINF‖。 样例输入 1 2 2 4 样例输出 2 样例输入 1 2 1 4 样例输出 INF 样例输入 1 2 3 2 样例输出 0 80. 算法训练十进制数转八进制数 时间限制:1.0s 内存限制:512.0MB 内存限制:512.0MB输入两个点的坐标,即 p1 = (x1, y1)和 p2=(x2, y2),求过这两个点的直线的斜率。如编写函数把一个十进制数输出其对应的八进制数。 样例输入 9274 样例输出 22072 81. 算法训练筛选号码59 时间限制:1.0s 问题描述内存限制:512.0MB有 n 个人围成一圈, 顺序排号 (编号为 1 到 n) 。 从第 1 个人开始报数(从 1 到 3 报数), 凡报到 3 的人退出圈子。从下一个人开始继续报数,直到剩下最后一个人,游戏结束。 问最后留下的是原来第几号的那位。 举个例子,8 个人围成一圈:
第 1 次报数之后,3 退出,剩下: 1 2 4 5 6 7 8 (现在从 4 开始报数) 第 2 次报数之后,6 退出,剩下: 1 2 4 5 7 8 (现在从 7 开始报数) 第 3 次报数之后,1 退出,剩下: 2 4 5 7 8 (现在从 2 开始报数) 第 4 次报数之后,5 退出,剩下: 2 4 7 8 (现在从 7 开始报数) 第 5 次报数之后,2 退出,剩下: 4 7 8 (现在从 4 开始报数) 第 6 次报数之后,8 退出,剩下: 4 7 (现在从 4 开始报数) 最后一次报数之后,4 退出,剩下: 7. 所以,最后留下来的人编号是 7。 输入格式 一个正整数 n,(1&n&10000) 输出格式 一个正整数,最后留下来的那个人的编号。 样例输入 8 样例输出 7 数据规模和约定 对于 100%的数据,1&n&10000。 82. 算法训练 连接字符串 时间限制:1.0s 内存限制:512.0MB60 编程将两个字符串连接起来。例如 country 与 side 相连接成为 countryside。 输入两行,每行一个字符串(只包含小写字母,长度不超过 100);输出一行一个字符 串。 样例输入 country side 样例输出 countryside 83. 算法训练 统计字符次数 时间限制:1.0s 内存限制:512.0MB输入一个字符串(长度在 100 以内),统计其中数字字符出现的次数。 样例输入 Ab100cd200 样例输出 6 84. 算法训练成绩的等级输出 时间限制:1.0s B,70~79 为 C,60~69 为 D,0~59 为 E。 样例输入 98 样例输出 A 85. 算法训练 比较字符串 时间限制:1.0s 内存限制:512.0MB 内存限制:512.0MB输入一个百分制的成绩 t 后,按下式输出它的等级。等级为:90~100 为 A,80~89 为编程实现两个字符串 s1 和 s2 的字典序比较。 (保证每一个字符串不是另一个的前缀, 且长度在 100 以内)。若 s1 和 s2 相等,输出 0;若它们不相等,则指出其第一个不同字 符的 ASCII 码的差值:如果 s1&s2,则差值为正;如果 s1&s2,则差值为负。 样例输入 java basic 样例输出61 8 86. 算法训练最长字符串 时间限制:1.0s 内存限制:512.0MB求出 5 个字符串中最长的字符串。每个字符串长度在 100 以内,且全为小写字母。 样例输入 one two three four five 样例输出 three 87. 算法训练字符串逆序 时间限制:1.0s 内存限制:512.0MB输入一个字符串,长度在 100 以内,按相反次序输出其中的所有字符。 样例输入 tsinghua 样例输出 auhgnist 88. 算法训练判定数字 时间限制:1.0s 内存限制:512.0MB编写函数,判断某个给定字符是否为数字。 样例输入 9 样例输出 yes 89. 算法训练最大值与最小值的计算 时间限制:1.0s 内存限制:512.0MB输入 11 个整数,计算它们的最大值和最小值。 样例输入 0 1 2 3 4 5 6 7 8 9 10 样例输出 10 0 90. 算法训练字符串编辑62 时间限制:1.0s 问题描述内存限制:512.0MB从键盘输入一个字符串(长度&=40 个字符),并以字符 ‘.‘ 结束。编辑功能有:1 D: 删除一个字符, 命令的方式为:D a 其中 a 为被删除的字符, 例如: D s 表示删除字符 ‘s‘ , 若字符串中有多个 ?s‘,则删除第一次出现的。 2 I:插入一个字符,命令的格式为:I a1 a2 其中 a1 表示插入到指定字符前面,a2 表 示将要插入的字符。例如:I s d 表示在指定字符 ‘s‘ 的前面插入字符 ?d‘ ,若原串中有多 个 ?s‘ ,则插入在最后一个字符的前面。 3 R:替换一个字符,命令格式为:R a1 a2 其中 a1 为被替换的字符,a2 为替换的字 符,若在原串中有多个 a1 则应全部替换。 在编辑过程中,若出现被改的字符不存在时,则给出提示信息。 输入格式 输入文件 stringedit.in 共两行,第一行为原串(以‘.‘结束),第二行为命令(输入方式参见 D问题描述‖ 。 输出格式 输出文件 stringedit.out 共一行, 为修改后的字符串或输出指定字符不存在的提示信息。 样例输入 This is a book. D s 样例输出 Thi is a book. D s 输入输出样例解释 命令为删去 s,第一个在字符中出现的 s 在 This 中,即得到结果。 91. 算法训练比赛安排 时间限制:1.0s 问题描述 设有有 2 n(n&=6)个球队进行单循环比赛,计划在 2 n C 1 天内完成,每个队每天进 行一场比赛。设计一个比赛的安排,使在 2 n C 1 天内每个队都与不同的对手比赛。 输入格式 输入文件 matchplan.in 共一行,输入 n 的数值。 输出格式 内存限制:512.0MB63 输出文件 matchplan.out 共(2 n C 1)行,第 i 行输出第 i 天的比赛安排。 格式为:&i& A-B,C-D,……。其中 i 是天数,A,B 分别为比赛双方的编号,每行共 2n-1个比赛场次。样例输入 2 样例输出 &1&1-2,3-4 & 2&1-3,2-4 & 3&1-4,2-3 92. 算法训练 大小写判断 时间限制:1.0s 问题描述 给定一个英文字母判断这个字母是大写还是小写。 输入格式 输入只包含一个英文字母 c。 输出格式 如果 c 是大写字母,输出Dupper‖,否则输出Dlower‖。 样例输入 x 样例输出 lower 样例输入 B 样例输出 upper 93. 算法训练乘法表 时间限制:1.0s 问题描述 输出九九乘法表。 输出格式64内存限制:512.0MB内存限制:512.0MB 输出格式见下面的样例。乘号用D*‖表示。 样例输出 下面给出输出的前几行: 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 …… 94. 算法训练平方计算 时间限制:1.0s 问题描述 输入正整数 a, m,输出 a^2%m,其中^表示乘方,即 a^2 表示 a 的平方,%表示取余。 输入格式 输入包含两个整数 a, m,a 不超过 10000。 输出格式 输出一个整数,即 a^2%m 的值。 样例输入 5 6 样例输出 1 95. 算法训练奇偶判断 时间限制:1.0s 问题描述 能被 2 整除的数称为偶数,不能被 2 整除的数称为奇数。给一个整数 x,判断 x 是奇数 还是偶数。 输入格式 输入包括一个整数 x,0&=x&=。 输出格式 如果 x 是奇数,则输出Dodd‖,如果是偶数,则输出Deven‖。 样例输入 1065内存限制:512.0MB内存限制:512.0MB 样例输出 even 样例输入 2009 样例输出 odd 96. 算法训练矩阵乘方 时间限制:1.0s 问题描述 给定一个矩阵 A,一个非负整数 b 和一个正整数 m,求 A 的 b 次方除 m 的余数。 其中一个 nxn 的矩阵除 m 的余数得到的仍是一个 nxn 的矩阵,这个矩阵的每一个元素 是原矩阵对应位置上的数除 m 的余数。 要计算这个问题,可以将 A 连乘 b 次,每次都对 m 求余,但这种方法特别慢,当 b 较 大时无法使用。下面给出一种较快的算法(用 A^b 表示 A 的 b 次方): 若 b=0,则 A^b%m=I%m。其中 I 表示单位矩阵。 若 b 为偶数,则 A^b%m=(A^(b/2)%m)^2%m,即先把 A 乘 b/2 次方对 m 求余,然后再 平方后对 m 求余。 若 b 为奇数,则 A^b%m=(A^(b-1)%m)*a%m,即先求 A 乘 b-1 次方对 m 求余,然后 再乘 A 后对 m 求余。 这种方法速度较快,请使用这种方法计算 A^b%m,其中 A 是一个 2x2 的矩阵,m 不大 于 10000。 输入格式 输入第一行包含两个整数 b, m,第二行和第三行每行两个整数,为矩阵 A。 输出格式 输出两行,每行两个整数,表示 A^b%m 的值。 样例输入 2 2 1 1 0 1 样例输出 1 0 0 1 97. 算法训练快速排序66内存限制:512.0MB 时间限制:1.0s 问题描述内存限制:512.0MB快速排序是最经常使用的一种排序方式,对于给定的 n 个数组成的一个数组,请使用 快速排序对其进行排序。 对于这道题,你只需要实现一个用于排序的函数 qsort,函数的头部如下: void qsort(int array[], int size) 其中 array 是待排序的数组,size 是它的大小,注意数组中的元素是从 0 开始编号的, 也就是说你要排序的元素是 array[0..size-1]。 在你提交的代码中, 只需要包含这个函数。 你可以加入其他的辅助函数, 但不能有 main 函数。 98. 算法训练字串逆序 时间限制:1.0s 问题描述 给定一个字符串,将这个串的所有字母逆序后输出。 输入格式 输入包含一个字符串,长度不超过 100,字符串中不含空格。 输出格式 输出包含一个字符串,为上面字符串的逆序。 样例输入 tsinsen 样例输出 nesnist 99. 算法训练 删除多余括号 时间限制:1.0s 问题描述 从键盘输入一个含有括号的四则运算表达式, 要求去掉可能含有的多余的括号, 结果要 保持原表达式中变量和运算符的相对位置不变,且与原表达式等价,不要求化简。另外不考 虑'+' '-'用作正负号的情况,即输入表达式不会出现(+a)或(-a)的情形。 输入格式 表达式字符串,长度不超过 255, 输出格式67内存限制:512.0MB内存限制:512.0MB并且不含空格字符。表达式中的所有变量都是单个小写的英文字母, 运算符只有加+减-乘*除/等运算符号。 去掉多余括号后的表达式 样例输入 样例一: a+(b+c)-d 样例二: a+b/(c+d) 样例三: (a*b)+c/d 样例四: ((a+b)*f)-(i/j)样例输出 样例一: a+b+c-d 样例二: a+b/(c+d) 样例三: a*b+c/d 样例四: (a+b)*f-i/j 100. 算法训练邮票 时间限制:1.0s 问题描述 给定一个信封,有 N(1≤N≤100)个位置可以贴邮票,每个位置只能贴一张邮票。我们 现在有 M(M&=100)种不同邮资的邮票,面值为 X1,X2….Xm 分(Xi 是整数,1≤Xi≤255), 每种都有 N 张。 显然,信封上能贴的邮资最小值是 min(X1, X2, …, Xm),最大值是 N*max(X1, X2, …, Xm)。由所有贴法得到的邮资值可形成一个集合(集合中没有重复数值),要求求出这个集 合中是否存在从 1 到某个值的连续邮资序列,输出这个序列的最大值。 例如,N=4,M=2,面值分别为 4 分,1 分,于是形成 1,2,3,4,5,6,7,8,9, 10,12,13,16 的序列,而从 1 开始的连续邮资序列为 1,2,3,4,5,6,7,8,9, 10,所以连续邮资序列的最大值为 10 分。68内存限制:512.0MB 输入格式 第一行:最多允许粘贴的邮票张数 N;第二行:邮票种数 M;第三行:空格隔开的 M 个数字,表示邮票的面值 Xi。注意:Xi 序列不一定是大小有序的! 输出格式 从 1 开始的连续邮资序列的最大值 MAX。若不存在从 1 分开始的序列(即输入的邮票 中没有 1 分面额的邮票),则输出 0. 样例输入 样例一: 4 2 4 1 样例二: 10 5 2 4 6 8 10样例输出 样例一: 10 样例二: 0 101. 算法训练矩阵加法 时间限制:1.0s

我要回帖

更多关于 教室人数检测 算法 的文章

 

随机推荐