NYOJ 1073 最大值 (模拟)】的更多相关文章

题目链接 输入N个数,M次查询. 每次查询给出一个数x. 要求:每次查询输出前x个数中第i小的数.(i为第i次查询) 你可以假设M <= N,Xi <= Xi+1 <= Xi+2 <= --. <= Xm (Xm <= N). 输入 Line0:T Line1: N,M Line2-LineN+1:num1,......,numN LineN+2-LineN+2+M:x1,--,xM N < 30000, num < 2000000000 输出 每次查询输出…
思路:每个坐标有四种状态,每个点对应的每种状态只能走一个方向,如果走到一个重复的状态说明根本不能走到终点,否则继续走即可. 坑点:有可能初始坐标四周都是墙壁,如果不判断下可能会陷入是死循环. 贴上测试数据: 3 3 ### T## ##X N AC代码 #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <utility> #inc…
现在,我们需要模拟传感器,生成数据,并发布到 RabbitMQ. 建立传感器项目 在 GOPATH src 下建立文件夹 sensors,使用 go mod init 初始化,并创建 main.go. 同时别忘了安装 amqp 的包:go get -u github.com/streadway/amqp 我们要生成一些模拟数据,生成数据有一定的范围(位于一个最大值和最小值之间),如下图: 因此,我们需要这样几个配置参数: 传感器的名称 传感器数据的更新频率 模拟生成数据的最大值 模拟生成数据的最…
Link 动态维护LIS? 观察题目:在第 i 轮操作时,将数字 i 插入 插入的数字是当前最大的 如果答案与上次不同,新的LIS必以 i 结尾 以 i 结尾的LIS无法再伸长(因为比 i 小的都插入完了) 也就是说,加入 \(i+1\) 到 \(n\) 的数,不会对以 \(i\) 结尾的上升子序列有影响,所以我们不用去动态地维护LIS的大小,只需要最后把总的序列做一次LIS就好了.然后对于第 \(i\) 个输出,只需要求得分别以 \(1\) 到 \(i\) 结尾的子序列的最大值即可. 求解LI…
比较多的思维题,涉及位运算.快速幂.二进制.约瑟夫问题.队列.贪心.dp等等. 难度 题目 知识点 ☆ 12.数值的整数次方 细节,快速幂 ☆☆ 47.求1+2+3+···+n 思维发散 ☆☆ 48.不用加减乘除做加法 二进制运算 ☆☆☆ 11.二进制中1的个数 补码,位运算 ☆☆☆☆ 29.最小的K个数 查找第K大,或各种排序算法 ☆ 31.从1到n整数中1出现的次数 思维 ☆ 33.丑数 思维 41.和为S的连续正数序列 滑动窗口,双指针 42.和为S的两个数字 滑动窗口,双指针 45.扑克…
题意:有\(n\)个点,\(n-1\)条边,每个点的类型是\(0\)或\(1\),现在让你选一个点,然后所有与该点类型不同的点直接消失,问选哪些点之后,该点所在的联通块最大. 题解: 因为选完之后两个类型不同的点之间的边会消失,所以我们可以直接维护一个并查集,每个集合中存的是相同类型的点的连通数量,维护最大值即可. 这题也可以用dfs来写,我们可以直接在dfs求连通块的同时用动态数组记录这个连通块中每个点的下标,然后去维护数组长度的最大值,模拟一下,具体细节看代码吧. 代码: dsu: int…
题意就不说了,中文题... 小白上讲了棋盘覆盖,于是我就挖了这题来做. 棋盘覆盖的推导不是很难理解,就是分治的思想,具体可以去谷歌下. 公式就是f(k) = f(k - 1) * 4 + 1,再化解下就是4^0 + 4^1 + 4^2 + ... + 4^(n-1). 思路很简单,但是题目没想象中的简单,刚开始天真的用递归模拟了下就交上去,立马wa掉... 发现即使用Long long类型,n到32就挂了 +_+... 于是实在不是很懂,难道一定要用高精度吗?贵了好久,最后只得找到一篇题解来理解…
变态最大值 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 Yougth讲课的时候考察了一下求三个数最大值这个问题,没想到大家掌握的这么烂,幸好在他的帮助下大家算是解决了这个问题,但是问题又来了. 他想在一组数中找一个数,这个数可以不是这组数中的最大的,但是要是相对比较大的,但是满足这个条件的数太多了,怎么办呢?他想到了一个办法,把这一组数从开始把每相邻三个数分成一组(组数是从1开始),奇数组的求最大值,偶数组的求最小值,然后找出这些值中的最大值.   输入 有…
士兵杀敌(三) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进行比较,计算出两个人的杀敌数差值,用这种方法一方面能鼓舞杀敌数高的人,另一方面也算是批评杀敌数低的人,起到了很好的效果. 所以,南将军经常问军师小工第i号士兵到第j号士兵中,杀敌数最高的人与杀敌数最低的人之间军功差值是多少. 现在,请你写一个程序,帮小工回答南将军每次的询问吧. 注意,南将军可能询问…
最大最小值 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 给出N个整数,执行M次询问. 对于每次询问,首先输入三个整数C.L.R: 如果C等于1,输出第L个数到第R个数之间的最小值: 如果C等于2,输出第L个数到第R个数之间的最大值: 如果C等于3,输出第L个数到第R个数之间的最小值与最大值的和. (包括第L个数和第R个数).     输入 首先输入一个整数T(T≤100),表示有T组数据.对于每组数据,先输入一个整数N(1≤N≤10000),表示有N个整数:…