PTA
文章平均质量分 53
PTA
向上的yyy
路漫漫其修远兮,吾将上下而求索
展开
-
7-54 孤岛营救问题——状压bfs+三维标记
1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩。瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图。迷宫的外形是一个长方形,其南北方向被划分为 n 行,东西方向被划分为 m 列,于是整个迷宫被划分为 n×m 个单元。每一个单元的位置可用一个有序数对 (单元的行号, 单元的列号) 来表示。南北或东西方向相邻的 2 个单元之间可能互通,也可能有一扇锁着的门,或者是一堵不可逾越的墙。原创 2022-12-14 12:53:12 · 449 阅读 · 0 评论 -
7-58 修理牧场——优先队列
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度为12的木头锯成7和5,总花费为32。原创 2022-12-02 12:02:28 · 453 阅读 · 2 评论 -
7-57 租用游艇问题——dp
长江游艇俱乐部在长江上设置了n个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),1原创 2022-12-02 12:02:23 · 745 阅读 · 0 评论 -
7-53 生化危机——dfs
人类正在经历一场生化危机,许多城市已经被病毒侵袭,这些城市中的人们为了避免感染病毒,计划开车逃往其他没有被病毒入侵的城市(安全城市)。有些城市之间有公路直达,有些没有。虽然他们知道哪些城市是安全的,但是不知道有没有一条安全路径能够到达安全城市(只有该路径上经过的所有城市都是安全的,该路径才是安全路径)。请你编写一个程序帮助他们判断。输入格式:输入第一行为三个正整数,分别表示所有城市个数m(m原创 2022-12-01 14:19:20 · 423 阅读 · 0 评论 -
7-51 愿天下有情人都是失散多年的兄妹——dfs
呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?输入格式:输入第一行给出一个正整数N(2 ≤ N ≤10^4),随后N行,每行按以下格式给出一个人的信息:本人ID 性别 父亲ID 母亲ID其中ID是5位数字,每人不同;性别M代表男性、F代表女性。如果某人的父亲或母亲已经不可考,则相应的ID位置上标记为-1。原创 2022-12-01 10:49:27 · 440 阅读 · 0 评论 -
7-46 回文串问题——LCS
一个字符串,如果从左到右读和从右到左读是完全一样的,比如"aba",我们称其为回文串。现在给你一个字符串,可在任意位置添加字符,求最少添加几个字符,才能使其变成一个回文串。输入格式:任意给定的一个字符串,其长度不超过1000.输出格式:能变成回文串所需添加的最少字符数。输入样例:在这里给出一组输入。例如:Ab3bdAbb输出样例:在这里给出相应的输出。例如:21。原创 2022-11-30 15:53:31 · 434 阅读 · 0 评论 -
7-45 工作分配问题——一选多dfs
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij。设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。输入格式:输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。输出格式:将计算出的最小总费用输出到屏幕。输入样例:在这里给出一组输入。例如:310 2 32 3 43 4 5输出样例:在这里给出相应的输出。例如:9。原创 2022-11-30 14:42:22 · 274 阅读 · 0 评论 -
7-43 最佳调度问题——一选多dfs
假设有n(n原创 2022-11-30 14:16:10 · 400 阅读 · 0 评论 -
7-42 子集和问题——组合子集
设集合S={x1,x2,…,xn}是一个正整数集合,c是一个正整数,子集和问题判定是否存在S的一个子集S1,使S1中的元素之和为c。试设计一个解子集和问题的回溯法,并输出利用回溯法在搜索树(按输入顺序建立)中找到的第一个解。输入格式:输入数据第1行有2个正整数n和c,n表示S的大小,c是子集和的目标值。接下来的1行中,有n个正整数,表示集合S中的元素。是子集和的目标值。接下来的1 行中,有n个正整数,表示集合S中的元素。原创 2022-11-30 11:57:54 · 992 阅读 · 0 评论 -
7-39 最优合并问题——优先队列
给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。为了进行比较,还需要确定合并这个序列的最差合并顺序,使所需的总比较次数最多。输入格式:第一行有 1 个正整数k,表示有 k个待合并序列。第二行有 k个正整数,表示 k个待合并序列的长度。输出格式:输出最多比较次数和最少比较次数。原创 2022-11-30 11:03:50 · 710 阅读 · 0 评论 -
7-38 找零钱***——组合型选与不选
收银员现有 n 张面值分别为 v1,v2,…,vn的纸币。若找零金额为 m,则一共有多少种找零方法?注:0原创 2022-11-30 10:27:55 · 283 阅读 · 0 评论 -
7-37 会场安排问题——贪心
假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数。)输入格式:第一行有 1 个正整数k,表示有 k个待安排的活动。接下来的 k行中,每行有 2个正整数,分别表示 k个待安排的活动开始时间和结束时间。时间以 0 点开始的分钟计。输出格式:输出最少会场数。输入样例:51 23。原创 2022-11-29 13:58:25 · 459 阅读 · 0 评论 -
7-30 找单词——多重背包求方案数
假设有x1个字母A, x2个字母B,… x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,… 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值原创 2022-11-28 14:38:17 · 345 阅读 · 2 评论 -
7-29 礼尚往来——错排
吉哥还是那个吉哥,那个江湖人称“叽叽哥”的基哥。每当节日来临,女友众多的叽叽哥总是能从全国各地的女友那里收到各种礼物。有礼物收到当然值得高兴,但回礼确是件麻烦的事!无论多麻烦,总不好意思收礼而不回礼,那也不是叽叽哥的风格。现在,即爱面子又抠门的叽叽哥想出了一个绝妙的好办法:他准备将各个女友送来的礼物合理分配,再回送不同女友,这样就不用再花钱买礼物了!原创 2022-11-27 18:29:30 · 262 阅读 · 0 评论 -
7-26 求素数个数——朴素筛
求素数的个数。本题要求编写一个程序,求1~n的素数个数。要求至少给出两种解法,对于相同的n,给出这两种解法的结果,通过相关数据进行测试,目的是通过对比同一问题不同解法的绝对执行时间体会如何设计“好”的算法。输入格式:输入在一行中给出1个整数n(原创 2022-11-27 18:01:07 · 323 阅读 · 0 评论 -
7-22 图中最深的根——并查集+dfs树深
一个连通的无环图可以看做是一棵树,但选定不同的结点作为根的话,树的结构会不同,树的高度也会不一样,现在需要你找到能形成最高树的根,也就是最深根。输入格式:首先在第一行给出结点的数目N,N小于10000,结点从1开始编号,随后N-1行,依次给出N-1条边。输出格式:对每一组输入,输出最深根的编号,如果有多个,则按从小到大的顺序输出,每行输出一个。如果不能构成树,则统计图有多少个连通块,输出“Error: K components”,其中K是连通块的数目。输入样例1:在这里给出一组输入。原创 2022-11-27 17:43:07 · 305 阅读 · 0 评论 -
7-14 整数拆分——递归/推
给定一个整数n,将其无序拆分成最大数为k的拆分数,(n,k不超出100)要求:所有的拆分方案不重复。如当n=4,k=4时,一共有5种拆分方案,拆分如下:(2)4=1+1+2(3)4=1+3(4)4=2+2(5)4=4输入格式:每一行输入一组整数n,k,遇到键盘结束符^Z或文件结束符EOF时结束输入。输出格式:按行输出每组的拆分方案数。输入样例:4,45,4输出样例:56。原创 2022-11-27 12:33:52 · 897 阅读 · 0 评论 -
7-1 寻找第k小的数——快速排序
给定若干整数,请设计一个高效的算法,确定第k小的数。输入格式:测试数据有多组,处理到文件尾。每组测试数据的第1行输入2个整数n,k(1≤k≤n≤1000000)。第2行输入n个整数,每个数据的取值范围在0到1000000之间。输出格式:对于每组测试,输出第k小的数。输入样例:5 31 2 2 2 19 3输出样例:23提示:如果提交后超时,请注意需要设计的是高效的算法!如果你初学《数据结构》,暂时设计不出来,请学完相关知识再回头来做。原创 2022-10-10 13:50:58 · 1018 阅读 · 0 评论 -
怀旧的思考挑战 dfs组合
分析由题知,也就是任意四个数组合,让其总分数等于x的情况有几种。要保证组合不重复,用一个last记录上一个搜索的数,下次在搜索的i要满足大于上次的last索引。last初始时候为-1.#include "bits/stdc++.h"using namespace std;int ans = 0;int x;int a[] = {1, 2, 3, 4, 5, 6, 7, 8};int vis[10];void dfs(int u, int sum, int last) { if.原创 2022-05-11 21:52:31 · 140 阅读 · 0 评论 -
“战疫杯”大学生程序设计 语音设备是否正常 map
分析注意题目最后一句话要求,按照字典序去输出姓名,刚开始没看见这个条件,读题要细心。用HashMap去存进入的角色(也可以不用,用数组标记也可以,用set也可以),然后遍历这八个角色,看哪一个没包含,可以加进TreeSet集合中,因为他可以自动给你排序,最后输出即可。import java.util.HashMap;import java.util.Scanner;import java.util.TreeSet;public class Main { public static...原创 2022-05-10 21:12:32 · 228 阅读 · 1 评论 -
“战疫杯”大学生程序设计 解封日期 日期类问题
分析要先算过去的m天后,会不会已经满足解封条件,用一个cnt计数,如果cnt>=n,也就是前n天每天新增0,满足解封条件,那么就直接输出当前的输入的日期;如果前m天不满足,我们算出还需要通过add=n-cnt,算出需要add天才能解封,然后我们通过字符串分隔,算出当前的年year、月mon、日day;然后我们的直接让day加上需要增加的天数add,然后我们要进行进位的判断和处理;我们用一个month数组去标记每个月的天数,需要判断如果当前为闰年、平年的2月份天数,然后(判断)让新的.原创 2022-05-10 20:39:26 · 327 阅读 · 0 评论 -
核酸检测扫码 子矩阵问题
分析题意就是想让你找出三个特殊方阵的起始点,那么什么是特殊方阵呢,就是下图这个,找和这个方阵一样的子矩阵起始坐标。题目的n最大为1000,不要怕四层循环,因为后两层都是很小的,时间复杂度O(nn8*8),也就是O(n^2),不会超时。我们把特殊方阵保存在一个check数组中,然后枚举矩阵的每个点i,j,然后从他开始,向左八列,向下八行,逐个去和check数组对比,要注意是否越界的问题;用一个flag标记是否一样,不一样时候就可以直接break;#include "bits/stdc++.h...原创 2022-05-10 18:35:03 · 396 阅读 · 0 评论 -
TDVector(pta)Java
**TDVector**题目:There is a class TDVector that is incompleted. Please complete the class according to the test code in Main.函数接口定义:class TDVector {private double x;private double y;public String toString() {return “(”+this.x+","+this.y+")";}}裁判原创 2021-04-05 23:11:17 · 1324 阅读 · 3 评论