【2021天梯赛训练-6】7-7 家庭房产
给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。
输入格式:输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产:
1编号 父 母 k 孩子1 ... 孩子k 房产套数 总面积
其中编号是每个人独有的一个4位数的编号;父和母分别是该编号对应的这个人的父母的编号(如果已经过世,则显示-1);k(0≤k≤5)是该人的子女的个数;孩子i是其子女的编号。
输出格式:首先在第一行输出家庭个数(所有有亲属关系的人都属于同一个家庭)。随后按下列格式输出每个家庭的信息:
1家庭成员的最小编号 家庭人口数 人均房产套数 人均房产面积
其中人均值要求保留小数点后3位。家庭信息首先按人均面积降序输出,若有并列,则按成员编号的升序输出。
输入样例:1234567891011106666 5551 5552 1 7777 1 1001234 5678 9012 1 0002 2 3008888 -1 -1 0 1 10002468 0001 0004 1 2222 1 5007777 6666 -1 0 2 3003721 -1 -1 ...
【2021天梯赛训练-5】7-7 Left-pad
根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用*去填充字符串GPLT,使之长度为10,调用left-pad的结果就应该是******GPLT。Node社区曾经对left-pad紧急发布了一个替代,被严重吐槽。下面就请你来实现一下这个模块。
输入格式:输入在第一行给出一个正整数N(≤104)和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以1个空格分开。第二行给出原始的非空字符串,以回车结束。
输出格式:在一行中输出结果字符串。
输入样例1:1215 _I love GPLT
输出样例1:1____I love GPLT
输入样例2:124 *this is a sample for cut
输出样例2:1cut
思路:
不管输入字符串的长度与n值的大小关系,最终都是输出n个长度的字符串
看样例:当n值大于输入字符串长度时, ...
【2021天梯赛训练-6】7-6 古风排版
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。
输入格式:输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。
输出格式:按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。
输入样例1:124This is a test case
输出样例1:1234asa Tst ihe tsi ce s
思路:
将字符串从右向左输出,每列n个
可以首先计算一共输出多少列,将每一列需要输出的字符放进一个vector数组中
代码:12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>using namespace std;constexpr int MAX_SIZE = 1001;int main() { int n; cin >> n; getchar();//清空回车,cin回车 ...
【2021天梯赛训练-6】 7-5 点赞
微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。
输入格式:输入在第一行给出一个正整数N(≤1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“K F1⋯FK”,其中1≤K≤10,Fi(i=1,⋯,K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。
输出格式:统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。
输入样例:1234543 889 233 25 100 3 233 2 734 3 73 889 22 233 123
输出样例:1233 3
思路:
可设置int标记数组,索引即为标签编号,值为点赞次数
代码:1234567891011121314151617181920212223242526272829#include <iostream>using nam ...
【2021天梯赛训练-5】 7-6 出租
一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对应 arr[0]=8,index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100。
本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。
输入格式:输入在一行中给出一个由11位数字组成的手机号码。
输出格式:为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。
输入样例:118013820100
输出样例:12int[] arr = new int[]{8,3,2,1,0};int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};
思路:
arr数组中存的是号码中所有出现过的数字(只可能是0-9这10个数字),遍历一遍,存起来,再排个序。
index数组中存的是号码中的数字出现在arr数组中的哪个 ...
【2021天梯赛训练-4】7-8 链表去重
给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。
输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 -1 来表示。
随后 N 行,每行按以下格式描述一个结点:
1地址 键值 下一个结点
其中地址是该结点的地址,键值是绝对值不超过104的整数,下一个结点是下个结点的地址。
输出格式:首先输出去重后的链表,然后输出被删除的链表。每个结点占一行,按输入的格式输出。
输入样例 1:12345600100 599999 -7 8765423854 -15 0000087654 15 -100000 -15 9999900100 21 23854
输出样例 1:1234500100 21 2385423854 -15 9999999999 -7 - ...
【2021天梯赛训练-4】7-6 输出GPLT
给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。
输入格式:输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。
输出格式:在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例 1:1pcTclnGloRgLrtLhgljkLhGFauPewSKgt
输出样例 1:1GPLTGPLTGLTGLGLL
思路:· transform函数定义 OutputIt transform( InputIt first1, InputIt last1, OutputIt d_first,UnaryOperation unary_op );
参数1是InputIt的开始,参数2是InputIt的结尾,参数3是OutputIt的开始,参数4一般有两种①转成大写::toupper();②转成小写::tolower()。
· 建立map记录’G’,’ ...
【2021天梯赛训练-4】7-10 重排链表
给定一个单链表 L1→L2→⋯→Ln−1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln−1→L2→⋯。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。
输入格式:每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (≤105)。结点的地址是5位非负整数,NULL地址用−1表示。
接下来有N行,每行格式为:
1Address Data Next
其中Address是结点地址;Data是该结点保存的数据,为不超过105的正整数;Next是下一结点的地址。题目保证给出的链表上至少有两个结点。
输出格式:对每个测试用例,顺序输出重排后的结果链表,其上每个结点占一行,格式与输入相同。
输入样例 :123456700100 600000 4 9999900100 1 1230968237 6 -133218 3 0000099999 5 6823712309 2 33218
输出样例 :12345668237 6 0010000100 1 9999999999 5 1230912309 2 0000000000 4 3321 ...
【2021天梯赛训练-3】7-8 关于堆的判断
将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:
x is the root:x是根结点;
x and y are siblings:x和y是兄弟结点;
x is the parent of y:x是y的父结点;
x is a child of y:x是y的一个子结点。
输入格式: 每组测试第1行包含2个正整数N(≤ 1000)和M(≤ 20),分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[−10000,10000]内的N个要被插入一个初始为空的小顶堆的整数。之后M行,每行给出一个命题。题目保证命题中的结点键值都是存在的。
输出格式: 对输入的每个命题,如果其为真,则在一行中输出T,否则输出F。
输入样例:1234565 446 23 26 24 1024 is the root26 and 23 are siblings46 is the parent of 2323 is a child of 10
输出样例:1234FTFT
解题思路题目描述的很清楚了,给出一个入队顺序来维护一个小顶堆。复习一下:小 ...
【2021天梯赛训练-3】7-9 列车调度
两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?
输入格式: 输入第一行给出一个整数N (2 ≤ N ≤105),下一行给出从1到N的整数序号的一个重排列。数字间以空格分隔。
输出格式: 在一行中输出可以将输入的列车按序号递减的顺序调离所需要的最少的铁轨条数。
输入样例:1298 4 2 5 3 9 1 6 7
输出样例:14
解题思路这题就是问:在一个1-N的重排列中最少有几个递增子序列。将这N个数按照输入的顺序依次处理,队列中某一位置的元素表示该递增子序列中最大的元素,这里用到的是贪心的思想:初始队列为空,把第一个输入数据入队,接下来每一个输入数据判断:若队列中存在一个比他小的元素,更新该元素为新的输入数据;若不存在,则该元素入队。(贪心的证明略)如果不加优化的话,就是每个数据判断的时候需要遍历一遍当前 ...