PTA
.禾火
这个作者很懒,什么都没留下…
展开
-
工厂机器安排
Today the company has m tasks to complete. The ith task need xi minutes to complete. Meanwhile, this task has a difficulty level yi. The machine whose level below this task’s level yi cannot complete this task. If the company completes this task, they will原创 2021-11-29 20:34:43 · 386 阅读 · 0 评论 -
程序存储问题
设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。输入格式:第一行是2 个正整数,分别表示文件个数n和磁带的长度L。接下来的1行中,有n个正整数,表示程序存放在磁带上的长度。输出格式:输出最多可以存储的程序数。输入样例:在这里给出一组输入。例如:6 50原创 2021-11-29 20:34:02 · 318 阅读 · 0 评论 -
会场安排问题
题目来源:王晓东《算法设计与分析》假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的 贪心算法进行安排。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个 顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小 会场数。)输入格式:第一行有 1 个正整数k,表示有 k个待安排的活动。 接下来的 k行中,每行有 2个正整数,分别表示 k个待安排的活动开始时间和结束时间。时间 以 0 点开始的分钟计。输出格式:输出最少会场数。原创 2021-11-29 20:33:23 · 859 阅读 · 0 评论 -
汽车加油问题
题目来源:王晓东《算法设计与分析》一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。设计一个有效算法,指出应 在哪些加油站停靠加油,使沿途加油次数最少。输入格式:第一行有 2 个正整数n和 k(k<=1000 ),表示汽车加满油后可行驶n公里,且旅途中有 k个加油站。 第二行有 k+1 个整数,表示第 k 个加油站与第k-1 个加油站之间的距离。 第 0 个加油站表示出发地,汽车已加满油。 第 k+1 个加油站表示目的地。输出格式:输出最少加油次数。如果无法到达目的地,则输出“原创 2021-11-29 20:32:40 · 151 阅读 · 0 评论 -
月饼销售问题
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)。...原创 2021-11-29 20:31:58 · 184 阅读 · 0 评论 -
矩阵取数游戏
小明经常玩一个矩阵取数游戏:对于一个给定的n x n的矩阵,矩阵中的每个元素aij表示该格子的价值,均为非负整数。游戏规则如下:小明从左上角走到右下角,只能向下向右走,经过某个格子,就能获得格子相应价值的奖励,请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大奖励值。输入格式:输入包括n+1行:第1行为一个整数n。(2 <= n <= 500)第2~n+1行为nxn矩阵,其中每行有n个用单个空格隔开的非负整数。(0 <= aij <= 10000)输出原创 2021-11-27 12:20:37 · 781 阅读 · 0 评论 -
石子合并问题(矩阵连乘)
有N堆石子排成一排(n<=100),现要将石子有次序地合并成一堆,规定每次只能选相邻的两堆合并成一堆,并将新的一堆的石子数,记为该次合并的得分,编一程序,给出堆数n及每堆石子数(<=200);(1)选择一种合并石子的方案,使得做n-1次合并,得分的总和最少(2)选择一种合并石子的方案,使得做n-1次合并,得分的总和最多输入格式:第一行为石子堆数n第二行为每堆石子数,每两个数之间用一空格分隔。输出格式:第一行为最小合并得分,第二行是最大的合并得分。输入样例:在这原创 2021-11-27 12:20:02 · 720 阅读 · 0 评论 -
让人头疼的“双十一”
双十一就这样轰轰烈烈的来了,网购宅男小明磨拳霍霍!理想是丰满的,现实是骨感的。小明虽然在购物车添加了不少物品,但是他低头看了下口袋却是叹声连连。小明想要购买的商品中,每件商品都有其价格和期待值,小明只能利用有限的资金,购买能让自己期待值总和达到最大的一系列物品了。输入格式:第一行一个整数T表示有T组测试数据(T<=50)。接下来的T组测试数据:第一行包含两个整数N和M,N表示小明有多少钱,M表示有多少件物品(1<=M<=100)。再二行包含M个整数,表示对应每个物品的价原创 2021-11-27 12:18:59 · 697 阅读 · 0 评论 -
分弹珠问题
把M个弹珠放到N个盘子里面(我们允许有的盘子为空),你能求出有多少种分法吗?(请注意,例如有三个盘子,我们将5,1,1和1,1,5,视为同一种分法)输入格式:输入包含多组测试样例。每组输入的第一行是一个整数t。 接下来t行,每行输入两个整数M和N,代表有M个弹珠和N个盘子。(0=<M<=20; 0<N<=20)输出格式:对于每对输入的M和N,输出有多少种方法。输入样例:在这里给出一组输入。例如:17 3结尾无空行输出样例:在这里给出相应的输原创 2021-11-27 12:18:23 · 474 阅读 · 0 评论 -
拦截导弹问题
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹?扩展思考:如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。输入格式:输入只有一行,为若干个正整数(原创 2021-11-27 12:17:04 · 472 阅读 · 0 评论 -
最大子矩阵和问题
最大子矩阵和问题。给定m行n列的整数矩阵A,求矩阵A的一个子矩阵,使其元素之和最大。输入格式:第一行输入矩阵行数m和列数n(1≤m≤100,1≤n≤100),再依次输入m×n个整数。输出格式:输出第一行为最大子矩阵各元素之和,第二行为子矩阵在整个矩阵中行序号范围与列序号范围。输入样例1:5 660 3 -65 -92 32 -70-41 14 -38 54 2 2969 88 54 -77 -46 -4997 -32 44 29 60 6449 -48 -96 59 -5原创 2021-11-08 11:22:40 · 1275 阅读 · 0 评论 -
最大子段和
给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。要求算法的时间复杂度为O(n)。输入格式:输入有两行:第一行是n值(1<=n<=10000);第二行是n个整数。输出格式:输出最大子段和。输入样例:在这里给出一组输入。例如:6-2 11 -4 13 -5 -2结尾无空行输出样例:在这里给出相应的输出。例如:原创 2021-11-08 11:21:25 · 138 阅读 · 0 评论 -
单调递增最长子序列
设计一个O(n2)时间的算法,找出由n个数组成的序列的最长单调递增子序列。输入格式:输入有两行: 第一行:n,代表要输入的数列的个数 第二行:n个数,数字之间用空格格开输出格式:最长单调递增子序列的长度输入样例:在这里给出一组输入。例如:51 3 5 2 9结尾无空行输出样例:在这里给出相应的输出。例如:4结尾无空行#include<stdio.h>#include<stdlib.h>#include<string原创 2021-11-07 13:01:14 · 138 阅读 · 0 评论 -
新冠状病毒的基因序列
2019年12月下旬,武汉出现了多例不明原因的病毒性肺炎病例。之后,中国疾病预防控制中心确定此次致病的病原体为一种新的冠状病毒。1月12日,世界卫生组织将其命名为“2019新型冠状病毒(2019-nCoV)”。为了弄清新型冠状病毒的起源,中国疾控中心等机构的研究人员对住院患者的样本进行高通量测序,获得了完整和部分的2019-nCoV基因组序列。接着对这些2019-nCoV基因组和其他冠状病毒的基因组开展系统进化分析,以便确定这些病毒的进化史,帮助推断其可能的来源。上述的研究就属于计算机和生物医学的交原创 2021-11-07 12:58:23 · 4828 阅读 · 1 评论 -
数字三角形
给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。输入格式:输入有n+1行:第 1 行是数字三角形的行数 n,1<=n<=100。接下来 n行是数字三角形各行中的数字。所有数字在0..99 之间。输出格式:输出最大路径的值。输入样例:在这里给出一组输入。例如:5 7 3 8 8 1 0 2 7 4 44 5 2 6 5 结尾无空原创 2021-11-06 17:59:43 · 273 阅读 · 2 评论 -
9 求逆序对数目
题目来源:http://poj.org/problem?id=1804 Background Raymond Babbitt drives his brother Charlie mad. Recently Raymond counted 246 toothpicks spilled all over the floor in an instant just by glancing at them. And he can even count Poker cards. Charlie would love原创 2021-11-06 17:58:56 · 322 阅读 · 1 评论 -
8 找第k小的数
设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。提示:函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个元素x(如a[left])对a[left]~a[right]进行划分,划分后的x所在位置的左段全小于等于x,右段全大于等于x,同时利用x所在的位置还可以计算出x是这批数据按升非降序排列的第几个数。因此可以编制int find(int a[],int left,原创 2021-11-06 17:57:40 · 151 阅读 · 0 评论 -
7 后序+中序序列构造二叉树
后序+中序序列构造二叉树输入样例:第一行输入序列长度n,第二行输入n个字符表示二叉树后序遍历的序列,第三行输入n个字符表示二叉树中序遍历的序列9GHDBEIFCAGDHBAECIF结尾无空行输出样例:输出二叉树先序遍历的序列。ABDGHCEFI结尾无空行#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct node{ char d原创 2021-11-06 17:57:01 · 1764 阅读 · 1 评论 -
6 括号匹配
给定仅包含“()[]{}”六种括号的字符串,请你判断该字符串中,括号的匹配是否是合法的,也就是对应括号的数量、嵌套顺序完全正确。输入格式:第一行一个整数T(T<=10)其后T行每行一个字符串只包含[{()}]六种字符(字符串长度2e5以内)输出格式:对于每个字符串,匹配输出Yes,否则输出No输入样例:2{()[]}([)]结尾无空行输出样例:YesNo结尾无空行#include<iostream>#include<std原创 2021-11-06 17:56:06 · 973 阅读 · 0 评论 -
5 统计英文单词个数
给出一篇英文文章,现在需要统计文章中出现英文单词的数量。输入格式:第一行一个T,代表数据组数对于每组数据,第一行一个n,代表文章中单词的个数,其后n行每行一个只包含小写字母的长度为1到10的字符串输出格式:每组数据输出若干行,每行输出单词以及它出现的次数(中间空格隔开),不同单词按单词字典序从小到大输出保证单词出现的总次数<=1e5输入样例:18itisapenitisadog结尾无空行输出样例:a 2dog 1is 2it 2原创 2021-11-06 17:55:12 · 352 阅读 · 0 评论 -
4 集合的“交”与“并”
给出两个由数字组成的集合,请求这两个集合的“交”和“并”。输入格式:给一个n,m 代表两个数列的大小(0 <= n,m <=2e5)如果n>0,则接下来一行, n个数空格隔开,代表第一个集合中的数。如果m>0,则接下来一行, m个数空格隔开,代表第二个集合中的数。-1e9<=ai,bi<=1e9输出格式:第一行首先输出两个数列交的集合中元素个数,如果元素个数大于0,则紧接着在这行输出“交集”的元素,按数值大小升序排列(本行输出多个数据时,用空.原创 2021-11-06 17:54:29 · 574 阅读 · 0 评论 -
3 字符串的全排列
给定一个全由小写字母构成的字符串,求它的全排列,按照字典序从小到大输出。输入格式:一行,一个字符串,长度不大于8。输出格式:输出所有全排列,每行一种排列形式,字典序从小到大。输入样例:在这里给出一组输入。例如:abc结尾无空行输出样例:在这里给出相应的输出。例如:abcacbbacbcacabcba结尾无空行#include<stdio.h>#include<stdlib.h>#include<string原创 2021-11-06 17:53:35 · 695 阅读 · 0 评论 -
2 办事大厅排队
在郑州大学综合办事大厅,每天陆陆续续有很多人来排队办事。现在你能否写程序帮助老师时刻了解当前办理业务的情况。请同学们学习C++ STL中 list相关内容后,编程实践。输入格式:第一行一个数字N,表示排队信息或者查询信息条目的数量。以下N行,每行的内容有以下3种情况(1) in name 表示名字为name的人员新来到办事大厅,排在队伍的最后。(in和name间存在一个空格,name是名字对应字符串,长度不超过10)。(2) out 表示当前排在最前面的人已经办理完业务,离开了。原创 2021-11-06 17:49:49 · 267 阅读 · 0 评论 -
1 插座问题
体育馆内要举办一场程序设计竞赛的现场赛,需要接入服务器、路由器、打印机、电脑等电子设备(假定所有用电器的插头都是三头的)。而体育馆内的墙上只有一个三孔插座可供使用。现在组委会需要购买一批插排(插头为三头,所有插孔都为三孔),使得全部用电器都能通电。想让你帮忙算算至少需要购买多少插排?输入格式:输入两个整数N,K,分别表示N个用电器以及每个插排都有K个插口(1<=N<=100,2=<K<=100)输出格式:一个数,表示所需最少的插排数量。输入样例:在这里给出一组原创 2021-11-06 17:46:06 · 452 阅读 · 3 评论