练习
大章鱼(张文哲
你所做的别只停留在 还行
展开
-
美团2021校招笔试-编程题(通用编程试题,第10场) 第二题
题目:我们称一个长度为n的序列为正则序列,当且仅当该序列是一个由1~n组成的排列,即该序列由n个正整数组成,取值在[1,n]范围,且不存在重复的数,同时正则序列不要求排序有一天小团得到了一个长度为n的任意序列,他需要在有限次操作内,将这个序列变成一个正则序列,每次操作他可以任选序列中的一个数字,并将该数字加一或者减一。请问他最少用多少次操作可以把这个序列变成正则序列?tips:数组标记#include<iostream>#include<cmath>#i原创 2021-03-08 19:36:43 · 874 阅读 · 1 评论 -
美团2021校招笔试-编程题(通用编程试题,第10场) 第一题
题目:某比赛已经进入了淘汰赛阶段,已知共有n名选手参与了此阶段比赛,他们的得分分别是a_1,a_2….a_n,小美作为比赛的裁判希望设定一个分数线m,使得所有分数大于m的选手晋级,其他人淘汰。但是为了保护粉丝脆弱的心脏,小美希望晋级和淘汰的人数均在[x,y]之间。显然这个m有可能是不存在的,也有可能存在多个m,如果不存在,请你输出-1,如果存在多个,请你输出符合条件的最低的分数线。tips:数组标记#include<iostream>#include<vector&原创 2021-03-08 19:33:31 · 1544 阅读 · 0 评论 -
2020年7月 PAT甲级真题 Replacement Selection
题目题意:外排的选择替换算法模拟tips:模拟+优先队列注:非满分版本,当时考试被陈姥姥卡在最后一个测试点超时了#include<iostream>#include<queue>#include<algorithm>#include<vector>using namespace std;int main() { int n,k; cin>>n>>k; vector<int> ans(n);原创 2020-08-07 20:45:33 · 687 阅读 · 0 评论 -
2020年7月PAT甲级真题 Safari Park
题目题意:动物园的动物数小于等于区域数,判断放置的方案能不能满足相邻的区域没有同一种动物。tips:模拟#include<iostream>#include<vector>#include<set>#include<map>using namespace std;int main() { int n,r,k; cin>>n>>r>>k; map<int,vector<int>原创 2020-08-07 20:37:37 · 393 阅读 · 0 评论 -
2020年7月PAT甲级真题 Prime Day
题目题意:判断给出的时间字符串及其子串是否全是素数tips:素数判断+字符串处理#include<iostream>#include<string>#include<cmath>using namespace std;bool prime(int n) { if(n==1||n==0) return false; if(n==2) return true; for(int i=2; i<sqrt(n)+1; ++i) if原创 2020-08-07 21:05:27 · 436 阅读 · 0 评论 -
2020年7月PAT甲级真题 The Judger
题目:7-2 The Judger (25分)A game of numbers has the following rules: at the beginning, two distinct positive integers are given by the judge. Then each player in turn must give a number to the judge. The number must be the difference of two numbers that.原创 2020-08-07 21:07:07 · 516 阅读 · 6 评论 -
推理题(40分)
前言:今天在blink上看到了这一条动态,顺道解决了五、推理题(40分)1、这道题的答案是( )A、A B、B C、C D、D2、第5题的答案是()A、C B、D C、A D. B3、以下选项中哪一题的答案与其它三项不同( )A、第3题 B、第6题 C、第2题 D、第4题4、以下选项中哪两题的答案相同( )A、第1、5题 B、第2、7题 C、第1、9题 D...原创 2020-03-24 22:48:27 · 2668 阅读 · 14 评论 -
树状数组详解—简洁明了版
简介:树状数组( Binary Indexed Tree,BIT )是能够完成下述操作的数据结构。给一个初始值全为0的数列a1, a2, ...,an■给定i,计算ai+a2...+an;■给定i和x,执行ai+=x1.基于线段树的实现,如果使用线段树,只需要对前一节中RMQ的样例做少许修改就可以实现这两个功能。线段树的每个节点上维护的是对应的区间的和。接下来,我们来看...原创 2020-03-24 14:05:37 · 367 阅读 · 0 评论 -
线段树—简洁明了版
1.线段树的概念线段树是擅长处理区间的,形如下图的数据结构。线段树是一棵完美叉树( Perfect Binary Tree )(所有的叶子的深度都相同,并且每个节点要么是叶子要么有2个儿子的树),树上的每个节点都维护一个区间。根维护的是整个区间,每个节点维护的是父亲的区间二等分后的其中-一个子区间。当有n个元素时,对区间的操作可以在O(log n)的时间内完成。根据节点中维护的数据的不...原创 2020-03-24 13:04:15 · 332 阅读 · 0 评论 -
逆序数——冒泡排序的交换次数
题目:冒泡排序的交换次数给定一个1~n的排列a,..,an-,求对这个数列进行冒泡排序所需要的交换次数(冒泡排序是每次找到满足a>a+t的i,并交换a;和a++t,直到这样的i不存在为止的算法)。限制条件●1≤n≤100000输入n=4,a={3,1,4,2}输出3分析:冒泡排序的复杂度是O(n^2),所以无法通过模拟冒泡排序的过程来计算需要的交...原创 2020-03-24 12:35:33 · 4316 阅读 · 4 评论 -
Jessica's Reading Problem
题目:Jessica's Reading Problem ( POJ No.3320 )为了准备考试,Jessica 开始读-本很厚的课本。要想通过考试,必须把课本中所有的知识点都掌握。这本书总共有P页,第i页恰好有一个知识点ai; (每个知识点都有一个整数编号)。全书中同一个知识点可能会被多次提到,所以她希望通过阅读其中连续的一些页把所有的知识点都覆盖到。给定每页写到的知识点,请求出...原创 2020-03-24 12:20:22 · 457 阅读 · 0 评论 -
Subsequence (POJ No.3061)
题目:Subsequence (POJ No.3061)给定长度为n的数列整数a,*,an,以及整数S。求出总和不小于S的连续子序列的长度的最小值。如果解不存在,则输出0。④限制条件●10<n< 10^5●0<aj≤10^4●S< 10^8输入n=10s=15a = {5,1,3,5,10,7, 4, 9,2,8}输出2...原创 2020-03-24 11:59:40 · 320 阅读 · 0 评论 -
0/1分数规划——最大化平均值
题目:最大化平均值有n个物品的重量和价值分别是w;和vi。从中选出k个物品使得单位重量的价值最大。①限制条件●1≤k≤n≤10^4●1≤wi,vi≤10^6输入n=3(W,v) = {(2, 2),(5, 3),(2, 1))输出0.75 (如果选0号和2号物品,平均价值是(2+1)/(2+2)=0.75)分析:-般最先想到的方法可能是把物品按照单位...原创 2020-03-24 11:43:11 · 281 阅读 · 0 评论 -
Aggressive cows
题目:Aggressive cows ( POJ No.2456 )农夫约翰搭了一间有N间牛舍的小屋。牛舍排在一条线上,第i号牛舍在x的位置。但是他的M头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其他牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。①限制条件●2≤N≤100000●2≤M≤N_●0≤xj≤10'...原创 2020-03-24 11:28:31 · 493 阅读 · 0 评论 -
Cable master
题目:输入N=4K=11L = {8.02, 7.43, 4.57, 5.39}输出2.00 (每条绳子分別可以得到4条、3条、2条、2条,共计11条绳子)分析:这个问题用二分搜索可以非常容易地求得答案。让我们套用二分搜索的模型试着解决这个问题。令:条件Cmp(x):=计算可以得到K条长度为x的绳子数则问题变成了求满足C(x)条件的最大的x。在区间初...原创 2020-03-24 11:20:04 · 323 阅读 · 0 评论 -
输出其位于斐波那契数列中的第几项
题目:给定一个正整数N (N>1) , 输出其位于斐波那契数列中的第几项。如果不存在于数列则输出-1。在此我们规定数列的第一项是F(1)=1,第二项F(2)=1, ...注:此题建议大家使用函数来进行模块化编程,例如:void generate() //产生 斐波那契数列{}bool judge(int x//判断一个数x是否在数列中{}int main(...原创 2020-03-23 00:36:01 · 1017 阅读 · 1 评论 -
用双重循环编程输出下列数字阵列
来源:blink题目:用双重循环编程输出下列数字阵列:123456789223456789333456789444456789555556789666666789888888889999999999实现:#include<iostream>using namespace std;int main(){ for...原创 2020-03-22 16:34:20 · 1117 阅读 · 2 评论 -
区域的个数之坐标离散化(书上代码以及部分csdn博主代码有误,已更改)
题目:在w*h的格子上画了n条垂直或者水平的宽度为1的直线。求出这些直线将格子划分为了多少个区域?限制条件:1<= w,h <= 10000001<= n <= 500输入:首先输入w,h,n;然后输入对应的x1,x2,y1,y2.输出区域的个数。输入:10 10 5x1:1 1 4 9 10x2:6 10 4 9 10y1:4 8 ...原创 2020-03-21 18:33:41 · 565 阅读 · 1 评论 -
Expedition
题目:输入N= 4,L=25,P= 10A={10,1420,21}B={10,5,2,4}输出2(在第1个和第2个加油站加油)分析:由于加油站的数量N非常大,必须想- - 个高效的解法。我们稍微变换- - 下思考方式。在卡车开往终点的途中,只有在加油站才可以加油。但是,如果认为“ 在到达加油站时,就获得了一次在之后的任何时候都可以加Bi,单位汽油...原创 2020-03-21 00:15:28 · 193 阅读 · 0 评论 -
划分数
题目:输入n=4m=3M = 10000输出.4 (1+1+2=1+3=2+2=4)分析:这样的划分被称作n的m划分,特别地,m=n时称作n的划分数”。DP不仅对于求解最优问题有效,对于各种排列组合的个数、概率或者期望之类的计算同样很有用。在此,我们定义如下。dp[i][i]=j的i划分的总数根据这一定 义可以得到怎样的递推关系呢? 将j分划分i...原创 2020-03-20 19:02:43 · 423 阅读 · 0 评论 -
最长上升子序列问题
题目:输入n=5a={4,2,3,1,5}输出3 (a, a, a,构成的子序列2, 3,5最长)分析:这个问题是被称作最长上升子序列( LIS, Longest Increasing Subsequence)的著名问题。这一问题通过使用DP也能很有效率地求解。我们首先来建立一下递推关系。定义dp[i]:=以ai为末尾的最长上升子序列的长度以a结...原创 2020-03-20 18:22:10 · 286 阅读 · 0 评论 -
Saryman‘s Army
题目:输入N=6R=10x = {1,7,15. 20,30,50}输出3(如上图所示)分析:我们从最左边开始考虑。对于这个点,到距其R以内的区域内必须要有带有标记的点。(此点位于最左边,所以显然)带有标记的这个点一定在此点右侧(包含这个点自身)。于是,究竟要给哪个点加上标记呢?答案应该是从最左边的点开始,距离为R以内的最远的点。因为更左的区域没有覆...原创 2020-03-20 18:11:20 · 156 阅读 · 0 评论 -
Best Cow Line
题目:输入N= 6s = "ACDBCB"输出ABCBCD(如下图所示进行操作)分析:从字典序的性质上看,无论T的末尾有多大,只要前面部分的较小就可以。所以我们可以试一下如下贪心算法:■不断取S的开头和末尾中较小的一一个字符放 到T的末尾。这个算法已经接近正确了,只是针对S的开头和末尾字符相同的情形还没有定义。在这种情形下,因为我们希望能够尽早使...原创 2020-03-20 18:04:48 · 336 阅读 · 1 评论 -
区间调度问题
题目:你需要得到更多的工作输入n=5,s={1,2,4,6,8},t={3,5,7,9,10}输出3 (选取工作1、3、5)分析:这个问题也可以通过贪心算法来求解,但不像前面的硬币问题那么简单。我们可以设计出各种各样的贪心算法,例如下面的算法就是其中最容易想到的一一种。■在可选的工作(也就是和目前已选的工作都不重叠的工作)中,每次都选取开始时间最早的工...原创 2020-03-20 17:53:57 · 626 阅读 · 0 评论 -
硬币问题
题目:输入C,=3,C。=2,C。=1,C。=3,C0=0,Cs0=2,A= 620输出6 (500元硬币1枚,50元硬币2枚,10元硬币1枚,5元硬币2枚,合计6枚)分析:这是个贴近生活的简单问题。凭直觉,可以得出如下正确的解答。■首先尽可能多地使用500元硬币;■剩余部分尽可能多地使用100元硬币;■剩余部分尽可能多地使用50元硬币;■剩余部...原创 2020-03-20 17:47:38 · 397 阅读 · 0 评论 -
多重部分和问题
题目:输入n =3a={3,5,8}m={3,2,2}K =17输出Yes(3*3+8=17)分析:这个问题可以用DP求解,不过如何定义递推关系会影响到最终的复杂度。首先我们看一下如下定义:dp[i+1][i]:=用前i种数字是否能加和成j为了用前种数字加和成j,也就需要能用前i- 1种数字加和成j,j一ai,…,j -k*ai,中的某一种。 由...原创 2020-03-20 17:39:58 · 194 阅读 · 0 评论 -
部分和问题
题目:输入n=4 .a={1,2,4,7}k=13输出Yes (13 =2+4+7)输入n=4a={1,2,4,7}k=19输出No分析:递归状态搜索分析:从a1开始按顺序决定每个数加或不加,在全部n个数都决定后再判断它们的和是不是k即可。因为状态数是2^(n+1),所以复杂度是0(2^n)。如何实现这个搜索,请参见下面的代码。注意a...原创 2020-03-20 17:27:16 · 245 阅读 · 0 评论 -
蓝桥杯模拟题—长草
题目描述小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1。 小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。 这些草长得很快,每个月,草都会向外长出一些,如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,这四小块空地都将变为有草的小块,其中有草的地方为1,空地为0。 请告诉小明,k 个月后空地上哪些地方有草。tip...原创 2020-03-17 17:14:03 · 927 阅读 · 0 评论 -
7-9 Huffman Codes
题目题目题意: 给定字母及其出现的频率,可构建出相应的哈夫曼树,先已知K个同学提交的哈弗曼编码,问这些哈弗曼编码是否是给出的哈夫曼树的合法编码。tip:优先队列算最小权值和、字典树判断query中是否存在前缀和编码#include <iostream>#include <string>#include<cstring>#include &...原创 2020-02-13 21:43:03 · 417 阅读 · 0 评论 -
7-28 Review of Programming Contest Rules
题目题意:按照ACM/ICPC的比赛计分规则(解题数+20分钟罚时规则),给定比赛时间、总题数。假设某个人是这样做题的:1. 用一定时间通读所有的题,计算出解出每个题目所需的时间,以及如果错了,调试一次所需的时间。2. 他一旦开始做某题,不做出来就不换题(一不做二不休)。3. 对于每道题,他第一次提交的时间决定了他需要调试的次数,具体见下。具体地提交罚时情况是这样的:开...原创 2020-02-13 21:15:24 · 639 阅读 · 1 评论 -
7-25 Harry Potter's Exam
题目题意:哈利波特要考试,考试内容是将a物品用长度为c的魔法变成物品b,问哈利波特选取哪个物品能花费最小的魔法代价实现与其他所有物品的变换tip:Floyd#include<iostream>#include<vector>using namespace std;vector<vector<int>>dis(103,vector&l...原创 2020-02-13 20:45:52 · 302 阅读 · 0 评论 -
7-12 How Long Does It Take
题目题意: 给定活动的顺序,某个活动开始之前必须等到前一个活动结束,求出所有活动完成的最早时间tip:拓扑排序#include<iostream>#include<vector>#include<queue>using namespace std;int main() { int n,m; cin>>n>>m;...原创 2020-02-12 03:54:04 · 408 阅读 · 0 评论 -
7-18 Hashing - Hard Version
题目题意:给出了hashing的结果,而且是用的linear probing线性探测解决冲突,要求给出初始序列。负数直接跳过,序列中的数都是非负数。所以遍历给出序列,如果说当前位置的s[i] % n等于i那么就是说不存在冲突,如果不相等就是存在冲突的,经过线性探测才存在当前位置,所以从s[i] % n位置到i之前的数都是比是s[i]先进行操作的,如此我们可以找到序列中数的顺序,进行拓扑排序,...翻译 2020-02-12 03:53:43 · 648 阅读 · 0 评论 -
7-27 QQ Account Management
题目题意:L代表登录;R代表注册,,后面为qq号、密码,问qq的几种登录状态tip:map#include<iostream>#include<map>using namespace std;int main() { int n; cin>>n; map<string,string> m;//账号+密码 map<st...原创 2020-02-12 03:53:18 · 357 阅读 · 0 评论 -
7-10 Saving James Bond - Easy Version
题目题意:50*50的池塘里有n条鳄鱼,中心有直径为15的圆台,jams要踩着鳄鱼的头部连跳到池塘岸上,jams最大跨步为m,要求输出jams能否顺利到岸tip:DFS+sort#include<iostream>#include<cmath>#include<algorithm>using namespace std;struct po...原创 2020-02-12 03:53:20 · 261 阅读 · 0 评论 -
7-11 Saving James Bond - Hard Version
题目题意:50*50的池塘里有n条鳄鱼,中心有直径为15的圆台,jams要踩着鳄鱼的头部连跳到池塘岸上,jams最大跨步为m,要求输出jams最小跳的步数,以及路径(被踩的鳄鱼坐标)tip:sort+dfs+路径记录#include<iostream>#include<cmath>#include<algorithm>#include<...原创 2020-02-11 19:52:42 · 225 阅读 · 0 评论 -
7-20 Binary Search Tree
题目题意:给定含有n个元素的序列可建出相应的二叉搜索树, 以及给出m个查询序列,问这些待查询序列的二叉搜索树是否和最初的二叉搜索树相同。测试样例以0结束tip:建树+遍历对比#include<iostream>using namespace std;struct node { int val; struct node *l,*r;};struct node* ...原创 2020-02-11 19:40:31 · 288 阅读 · 0 评论 -
7-30 Table Tennis(难
题目题意:一个乒乓球俱乐部有N张乒乓球桌对外开放。乒乓球桌编号为1 ~ N。对任何一对运动员,如果他们到达时有空余的乒乓球桌,他们会被分配到可用的编号最小的那张乒乓球桌。如果所有的桌子都被占了,他们必须在队列中等待。假设任何一对运动员最多只能占用球桌2小时。你的任务是为每个人计算他们在队列中的等待时间,以及每张球桌一天服务的运动员数量。由于俱乐部为他们的VIP会员保留了一些VIP...原创 2020-02-11 00:29:21 · 576 阅读 · 0 评论 -
7-31 The World's Richest
题目题意:给定n个人以及k个查询,输出Amin到Amax之间的财富排名榜tip:模拟+sort#include<iostream>#include<string>#include<map>#include<vector>#include<algorithm>using namespace std;struct ...原创 2020-02-11 00:29:04 · 218 阅读 · 0 评论 -
7-13 Insert or Merge
题目题意: 判定给定序列是以何种排序方式排的,以及输出下一步操作后的结果tip:模拟+sort#include <iostream>#include <algorithm>using namespace std;int main() { int n, a[100], b[100], i, j; cin >> n; for (int i ...原创 2020-02-11 00:29:06 · 221 阅读 · 0 评论