04 2023 档案
摘要:题目 题目描述 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友。一个“社交集群”是指部分兴趣爱好相同的人的集合。你需要找出所有的社交集群。 输入格式 输入在第一行给出一个正整数 \(N\) \((\le 1000)\),为社交网络平台注册的所有用户
阅读全文
摘要:L3-008 喊山 喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生活实践中发现了它的实用价值,便把它作为一种交
阅读全文
摘要:L2-044 大众情人 人与人之间总有一点距离感。我们假定两个人之间的亲密程度跟他们之间的距离感成反比,并且距离感是单向的。例如小蓝对小红患了单相思,从小蓝的眼中看去,他和小红之间的距离为 \(1\),只差一层窗户纸;但在小红的眼里,她和小蓝之间的距离为 \(108000\),差了十万八千里 ……
阅读全文
摘要:L2-043 龙龙送外卖 龙龙是“饱了呀”外卖软件的注册骑手,负责送帕特小区的外卖。帕特小区的构造非常特别,都是双向道路且没有构成环 —— 你可以简单地认为小区的路构成了一棵树,根结点是外卖站,树上的结点就是要送餐的地址。 每到中午 12 点,帕特小区就进入了点餐高峰。一开始,只有一两个地方点外卖,
阅读全文
摘要:L2-042 老板的作息表 新浪微博上有人发了某老板的作息时间表,表示其每天 \(4:30\) 就起床了。但立刻有眼尖的网友问:这时间表不完整啊,早上九点到下午一点干啥了? 本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。 输入格式: 输入第一行给出一个正整数 \(N\) ,为作息
阅读全文
摘要:L2-041 插松枝 人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上,做成大大小小的松枝。他们的工作流程(并不)是这样的: 每人手边有一只小盒子,初始状态为空。 每人面前有用不完的松枝干和一个推送器,每次推送一片随机型号的松针片。 工人首先捡起一根空的松枝干,从小盒子里摸出最上面的一片松针
阅读全文
摘要:L2-040 哲哲打游戏 哲哲是一位硬核游戏玩家。最近一款名叫《达诺达诺》的新游戏刚刚上市,哲哲自然要快速攻略游戏,守护硬核游戏玩家的一切! 为简化模型,我们不妨假设游戏有 \(N\) 个剧情点,通过游戏里不同的操作或选择可以从某个剧情点去往另外一个剧情点。此外,游戏还设置了一些存档,在某个剧情点可
阅读全文
摘要:L2-039 清点代码库 上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。” 这里我们把问题简化一下:首先假设两个功能模块如果接受同样的输入,总
阅读全文
摘要:L2-038 病毒溯源 病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株,而这些变异的病毒又可能被诱发突变产生第二代变异,如此继续不断变化。 现给定一些病毒之间的变异关系,要求你找出其中最长的一条变异链。 在此假设给出的变异都是由突变引起的,不考虑复杂的基因重组变异问题 —— 即每一种病毒都
阅读全文
摘要:L2-037 包装机 一种自动包装机的结构如图 1 所示。首先机器中有 \(N\) 条轨道,放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。当 \(0\) 号按钮被按下时,机械手将抓取筐顶部的一件物品,放到流水线上。图 2 显示了顺序按下按钮
阅读全文
摘要:L2-036 网红点打卡攻略 一个旅游景点,如果被带火了的话,就被称为“网红点”。大家来网红点游玩,俗称“打卡”。在各个网红点打卡的快(省)乐(钱)方法称为“攻略”。你的任务就是从一大堆攻略中,找出那个能在每个网红点打卡仅一次、并且路上花费最少的攻略。 输入格式: 首先第一行给出两个正整数:网红点的
阅读全文
摘要:L2-035 完全二叉树的层序遍历 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 \(D\) 的,有 \(N\) 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 \(N\) 个结点,这样的树就是完全二叉树。 给定一棵完全二叉树的后序遍历,请你给
阅读全文
摘要:L2-034 口罩发放 为了抗击来势汹汹的 \(COVID19\) 新型冠状病毒,全国各地均启动了各项措施控制疫情发展,其中一个重要的环节是口罩的发放。 某市出于给市民发放口罩的需要,推出了一款小程序让市民填写信息,方便工作的开展。小程序收集了各种信息,包括市民的姓名、身份证、身体情况、提交时间等,
阅读全文
摘要:L2-033 简单计算器 本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 \(S_{1}\); 存放数字,另一个堆栈 \(S_{2}\) 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作: 从 \(S_{1
阅读全文
摘要:L2-032 彩虹瓶 彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。 假设彩虹瓶里要按顺序装 \(N\) 种颜色的小球(不妨将顺序就编号为 \(1\) 到 \(N\) )。现在工厂里有每种颜色的小球各一箱,工人需要一箱一箱地将
阅读全文
摘要:L2-031 深入虎穴 著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…… 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了
阅读全文
摘要:L2-030 冰岛人 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下: 冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加 \(sson\) ,女儿则加 \(sdottir\) 。因为
阅读全文
摘要:L2-029 特立独行的幸福 对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在
阅读全文
摘要:L2-028 秀恩爱分得快 古人云:秀恩爱,分得快。 互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度。如果一张照片上出现了 \(K\) 个人,这些人两两间的亲密度就被定义为 \(1/K\) 。任意两个人如果同时出现在若干张照片里,他们之间的亲密度就是所有这些同框
阅读全文
摘要:L2-027 名人堂与代金券 对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,总评成绩必须达到 \(60\) 分及以上,并且有另加福利:总评分在 \([G, 100]\) 区间内者,可以得到 \(50\) 元 PAT
阅读全文
摘要:L2-026 小字辈 本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。 输入格式: 输入在第一行给出家族人口总数 \(N\)(不超过 \(100 000\) 的正整数) —— 简单起见,我们把家族成员从 \(1\) 到 \(N\) 编号。随后第二行给出 \(N\) 个编号,其中第 \(i\)
阅读全文
摘要:L2-025 分而治之 分而治之,各个击破是兵家常用的策略之一。在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破。为此参谋部提供了若干打击方案。本题就请你编写程序,判断每个方案的可行性。 输入格式: 输入在第一行给出两个正整数 \(N\) 和 \(M\)(均不
阅读全文
摘要:L2-024 部落 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。 输入格式: 输入在第一行给出一个正整数 \(N\) ( \(≤10^
阅读全文
摘要:L2-023 图着色问题 图着色问题是一个著名的 \(NP\) 完全问题。给定无向图 \(G = (V, E)\) ,问可否用 \(K\) 种颜色为 \(V\) 中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色? 但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这
阅读全文
摘要:L2-021 点赞狂魔 微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。然而有这么一种人,他们会通过给自己看到的一切内容点赞来狂刷存在感,这种人就被称为“点赞狂魔”。他们点赞的标签非常分散,无法体现出明显的特性
阅读全文
摘要:L2-022 重排链表 给定一个单链表 \(L_{1}\) → \(L_{2}\) → ⋯ → \(L_{n−1}\) → \(L_{n}\) ,请编写程序将链表重新排列为 \(L_{n}\) → \(L_{1}\) → \(L_{n−1}\) → \(L_{2}\) → ⋯ 例如:给定 \(L\)
阅读全文
摘要:L2-020 功夫传人 一门武功能否传承久远并被发扬光大,是要看缘分的。一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱…… 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹、挖到了特别的秘笈),会将功夫的威力一下子放大 \(N\) 倍 —— 我们称这种弟
阅读全文
摘要:L2-019 悄悄关注 新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。 输入格式: 输入首先在第一行给出某用户的关注列表,
阅读全文
摘要:L2-018 多项式A除以B 这仍然是一道关于 \(A/B\) 的题,只不过 \(A\) 和 \(B\) 都换成了多项式。你需要计算两个多项式相除的商 \(Q\) 和余 \(R\) ,其中 \(R\) 的阶数必须小于 \(B\) 的阶数。 输入格式: 输入分两行,每行给出一个非零多项式,先给出 \(
阅读全文
摘要:L2-017 人以群分 社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低的)。要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。 输入格式: 输入第一行给出一个正整数 \
阅读全文
摘要:L2-016 愿天下有情人都是失散多年的兄妹 呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚? 输入格式: 输入第一行给出一个正整数 \(N\)( \(2 ≤ N ≤
阅读全文
摘要:L2-015 互评成绩 学生互评作业的简单规则是这样定的:每个人的作业会被 \(k\) 个同学评审,得到 \(k\) 个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。 输入格式: 输入第一行给出3个正整数 \(N\)
阅读全文
摘要:L2-014 列车调度 火车站的列车调度铁轨的结构如下图所示。 两端分别是一条入口( \(Entrance\) )轨道和一条出口( \(Exit\) )轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照 \({8,4,2,5,3,9
阅读全文
摘要:L2-013 红色警报 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 输入格式: 输入在第一行给出两个
阅读全文
摘要:L2-012 关于堆的判断 将一系列给定数字顺序插入一个初始为空的小顶堆 \(H\) [ ] 。随后判断一系列相关命题是否为真。命题分下列几种: • \(x\) \(is\) \(the\) \(root\) :x是根结点; • \(x\) \(and\) \(y\) \(are\) \(sibli
阅读全文
摘要:L2-011 玩转二叉树 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数 \(N(≤30)\) ,是二叉树中结点的个数。第二行给出其中序
阅读全文
摘要:L2-010 排座位 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。 输入格式: 输入第一行给出3个正整数:\(N(≤100)\) ,即前来参宴的宾客总人数,则
阅读全文
摘要:L2-009 抢红包 没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录,请你统计一下他们抢红包的收获。 输入格式: 输入第一行给出一个正整数 \(N(≤10^{4})\),即参与发红包和抢红包的总人数,则这些人从 \(1\) 到 \(N\) 编号。随后 \(N\) 行,第 \(i\
阅读全文
摘要:L2-008 最长对称子串 对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定 Is PAT&TAP symmetric?,最长对称子串为 s PAT&TAP s,于是你应该输出11。 输入格式: 输入在一行中给出长度不超过1000的非空字符串。 输出格式: 在一行中输出最长对称子串的长度
阅读全文
摘要:L2-007 家庭房产 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式: 输入第一行给出一个正整数 $ N(≤1000)$,随后N行,每行按下列格式给出一个人的房产: 编号 父 母 \(k\) 孩子1 ... 孩子 \(k\) 房产套数 总面积
阅读全文
摘要:L2-006 树的遍历 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。 输出格式: 在一行中输出该树的层序
阅读全文
摘要:L2-005 集合相似度 给定两个整数集合,它们的相似度定义为:$ N_{c} / N_{t} × 100 $ %。其中 \(N_{c}\) 是两个集合都有的不相等整数的个数,\(N_{t}\) 是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输入格式: 输入第一行给
阅读全文
摘要:L2-002 链表去重 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删
阅读全文
摘要:L2-004 这是二叉搜索树吗? 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, • 其左子树中所有结点的键值小于该结点的键值; • 其右子树中所有结点的键值大于等于该结点的键值; • 其左右子树都是二叉搜索树。 所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的
阅读全文
摘要:L2-003 月饼 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。 注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10
阅读全文
摘要:L2-001 紧急救援 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽
阅读全文
摘要:Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description Pass a year learning in Hangzhou, yife
阅读全文
摘要:非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当s
阅读全文
摘要:Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description The GeoSurvComp geologic survey comp
阅读全文
摘要:迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0
阅读全文
摘要:Fire! Description Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of the maze neglected to create a fire e
阅读全文
摘要:Fire Game Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each gri
阅读全文
摘要:Pots Time Limit: 1000MS Memory Limit: 65536K Description You are given two pots, having the volume of A and B liters respectively. The following opera
阅读全文
摘要:Shuffle'm Up Time Limit: 1000MS Memory Limit: 65536K Description A common pastime for poker players at a poker table is to shuffle stacks of chips. Sh
阅读全文
摘要:Prime Path Time Limit: 1000MS Memory Limit: 65536K Description The ministers of the cabinet were quite upset by the message from the Chief of Security
阅读全文
摘要:Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Description Given a positive integer n, write a program to find out a nonzero multiple m of
阅读全文
摘要:Fliptile Time Limit: 2000MS Memory Limit: 65536K Description Farmer John knows that an intellectually satisfied cow is a happy cow who will give more
阅读全文
摘要:Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Description Farmer John has been informed of the location of a fugitive cow and wants to catch
阅读全文
摘要:Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon
阅读全文
摘要:棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行
阅读全文
摘要:背包问题 01背包问题 static const int N = 1010; int dp[N][N], v[N], w[N], n, c; int main(){ cin >> n >> c; for(int i = 1; i <= n; i ++ ) cin >> v[i]
阅读全文
摘要:树状数组 动态区间和询问 + 点修改 int lowbit(int x){ return x & -x; } void add(int x, int v){ for(int i = x; i <= n; i += lowbit(i)) tree[i] += v; } int query(int x)
阅读全文
摘要:拓扑排序 bool topo(){ queue<int> q; for(int u = 1; u <= n; u ++ ) if(!ind[u]) q.push(u); int cnt = 0; while(!q.empty()){ int u = q.front(); q.pop(); cnt +
阅读全文
摘要:递归实现枚举 递归实现指数型枚举 void dfs(int k){ if(k > n) { for(auto &x : res) cout << x << ' '; cout << endl; return; } dfs(k + 1); res.push_back(k); dfs(k + 1); r
阅读全文
摘要:模拟链表 单链表(链式前向星) void add_h(int x){ e[idx] = x, ne[idx] = h, h = idx ++ ; } //在第k个后面插入节点 void add(int k, int x){ e[idx] = x, ne[idx] = ne[k], ne[k] = i
阅读全文
摘要:排序 快速排序 线性时间选择 int partition(int l, int r){ int pos = rand() % (r - l + 1) + l; swap(a[pos], a[l]); int key = a[l], i = l, j = r; while(i != j){ while
阅读全文