队列
chongjwl
这个作者很懒,什么都没留下…
展开
-
题目 序列合并
题目链接 求出a[ i ] + b[ 0 ] (0 <= i < n) 的值 ,存入优先队列中,每次取出当前最小值a[ i ] + b[ j ] ,且最小值出队,a[ i ] + b[ j + 1] 入队,最后得到的 res 队列中含有前 n 个最小值 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> P; const int INF = 0x原创 2021-07-15 20:40:26 · 95 阅读 · 0 评论 -
合并果子 加强版
题目链接 解题思路: 依旧使用贪心思想,但是由于数据规模较大,可以用两个队列,一个存储排序的原数组, 一个存储每次合并需要的体力。显然,每次需要的体力不断增加,所以 aq 和 bq 始终有序 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> P; const int INF = 0x3f3f3f3f; const int MAX_N = 1e5 + 10;原创 2021-07-15 20:32:34 · 173 阅读 · 0 评论 -
最少步数
最少步数 Description 在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”。有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字。他的同桌平时喜欢下围棋,知道这件事后觉得很有趣,就想试一试,在一个(100*100)的围棋盘上任选两点A、B,A点放上黑子,B点放上白子,代表两匹马。棋子可以按“日”字走,也可以按“田”字走,俩人一个走黑马,一个走白马。谁用最少的步数走到左上角坐标为(1,1)的点时,谁获胜。现在他请你帮忙,给你A、B两点的坐标,原创 2021-01-19 16:05:09 · 188 阅读 · 0 评论 -
奇怪的电梯
奇怪的电梯 Description 大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,……),从一楼开始。在一楼,按“上”可以到4楼,按“下”是不起作用的,因为没有-2楼。那么,从A楼到B楼至少要按几次按钮呢? Input 共有二行。 第一行为三个用空格隔开的正整数,原创 2021-01-18 23:02:47 · 196 阅读 · 0 评论 -
产生数
产生数 Description 给出一个整数n(n<=2000)和k个变换规则(k≤15)。规则: ① 1个数字可以变换成另1个数字; ② 规则中,右边的数字不能为零。 例如:n=234,k=2规则为 2 → 5 3 → 6 上面的整数234经过变换后可能产生出的整数为(包括原数)234,534,264,564共4种不同的产生数。 求经过任意次的变换(0次或多次),能产生出多少个不同的整数。仅要求输出不同整数个数。 Input n k x1 y1 x2 y2 … … xn yn Output 输出满足原创 2021-01-18 21:52:36 · 195 阅读 · 0 评论