社区
C++ 语言
帖子详情
一个堆的变种问题
wjg945
2011-05-11 12:03:01
给一组输入数据:
A 5
A 3
A 2
B 4
……
A X表示读入后面的数X,遇到B X则需要输出前面所读入的数中对X取余的结果最小的那个数,若有多个,则输出最近输入的一个。
求复杂度小于O(n^2)的算法~~~
...全文
87
15
打赏
收藏
一个堆的变种问题
给一组输入数据: A 5 A 3 A 2 B 4 …… A X表示读入后面的数X,遇到B X则需要输出前面所读入的数中对X取余的结果最小的那个数,若有多个,则输出最近输入的一个。 求复杂度小于O(n^2)的算法~~~
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qq120848369
2011-05-11
打赏
举报
回复
[Quote=引用 2 楼 wjg945 的回复:]
引用 1 楼 qq120848369 的回复:
C/C++ code
是A就存起来,是B就算一遍.
这个就O(n^2)复杂度了,这个题的数据有100000,必然要超时啊~~
[/Quote]
是A的就存储到map里,遇到B X的时候,如果map[0]小于X,那么就是map[0]。如果map[0]==X,那么就是0.
否则呢,就不一定了,此时把map按遍历顺序(begin(),end())拷贝到一个vector里,使用lower_bound去找X,2*X,3*X...
比如lower_bound(X),那么如果存在肯定会返回大于等于X的余数最小的。
wjg945
2011-05-11
打赏
举报
回复
[Quote=引用 1 楼 qq120848369 的回复:]
C/C++ code
是A就存起来,是B就算一遍.
[/Quote]
这个就O(n^2)复杂度了,这个题的数据有100000,必然要超时啊~~
qq120848369
2011-05-11
打赏
举报
回复
是A就存起来,是B就算一遍.
wjg945
2011-05-11
打赏
举报
回复
[Quote=引用 14 楼 qq120848369 的回复:]
引用 13 楼 wjg945 的回复:
恩,这样优化,这个方法差不多比较完善了。
合作得到了一个不错的方案,我提出了用X,2*X,3*X压缩搜索空间,你提出了一个非常典型的反例,带给了进一步改进的思路,很和谐很有爱,分一定要都给我。
[/Quote]
呵呵,总共就我们两个人,分不给你还能给谁啊~~
qq120848369
2011-05-11
打赏
举报
回复
[Quote=引用 13 楼 wjg945 的回复:]
恩,这样优化,这个方法差不多比较完善了。
[/Quote]
合作得到了一个不错的方案,我提出了用X,2*X,3*X压缩搜索空间,你提出了一个非常典型的反例,带给了进一步改进的思路,很和谐很有爱,分一定要都给我。
wjg945
2011-05-11
打赏
举报
回复
恩,这样优化,这个方法差不多比较完善了。
qq120848369
2011-05-11
打赏
举报
回复
这样,先lower_bound(1*X),找到了数字N,求一次余数。 然后,如果2*X比N小,就看3*X是否比N小,一直到k*X比N大,那么可以再次调用lower_bound(k*X)得到N1,并且计算一次余数。 然后再看(k+1)*X是否大于N1。。。。
如此如此,又压缩了搜索空间。
wjg945
2011-05-11
打赏
举报
回复
校赛的时候想了半天也没思绪,100来人中只有几个过了,还是有点难度~
qq120848369
2011-05-11
打赏
举报
回复
[Quote=引用 9 楼 wjg945 的回复:]
引用 8 楼 qq120848369 的回复:
不用map[0]那些判断了,直接拷贝到vector里,调用若干次,取lower_bound其中余数最小的。。
最多是nlgn的复杂度,因为搜索空间变成了比X,2*X,3*X大的第一个数,而不是所有的数都算一遍。
如果输入数据是
A 100000
A 99999
A 99998
B 2
那么就要找比 1*2,2*2,3*2……
[/Quote]
++,一起思考一下。
wjg945
2011-05-11
打赏
举报
回复
[Quote=引用 8 楼 qq120848369 的回复:]
不用map[0]那些判断了,直接拷贝到vector里,调用若干次,取lower_bound其中余数最小的。。
最多是nlgn的复杂度,因为搜索空间变成了比X,2*X,3*X大的第一个数,而不是所有的数都算一遍。
[/Quote]
如果输入数据是
A 100000
A 99999
A 99998
B 2
那么就要找比 1*2,2*2,3*2,……,50000*2大的第一个数,这就需要操作50000次了,不是lgn了
qq120848369
2011-05-11
打赏
举报
回复
不用map[0]那些判断了,直接拷贝到vector里,调用若干次lower_bound,取其中余数最小的。。
最多是nlgn的复杂度,因为搜索空间变成了比X,2*X,3*X大的第一个数,而不是所有的数都算一遍。
qq120848369
2011-05-11
打赏
举报
回复
我想错了。。。咋给想成数最小了,乱了。
qq120848369
2011-05-11
打赏
举报
回复
[Quote=引用 4 楼 wjg945 的回复:]
引用 3 楼 qq120848369 的回复:
使用lower_bound去找X,2*X,3*X
C/C++ code
这一步的复杂度是不是有点高了?原题里面可能有很多组B X,每次都要找X,2*X,3*X…… 会不会有点慢?
[/Quote]
还行吧,一旦2*X在lower_bound时返回end(),那么后边的就不用试了。
wjg945
2011-05-11
打赏
举报
回复
求高手指教~~
wjg945
2011-05-11
打赏
举报
回复
[Quote=引用 3 楼 qq120848369 的回复:]
使用lower_bound去找X,2*X,3*X
C/C++ code
[/Quote]
这一步的复杂度是不是有点高了?原题里面可能有很多组B X,每次都要找X,2*X,3*X…… 会不会有点慢?
极值寻找控制(ESC)的新的最大功率点跟踪(MPPT)方法,并测试了该算法在找到光伏板的峰值功率点方面的能力附Simulink仿真.rar
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
【无人机】无人机机队的模拟附Matlab代码.rar
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
【遥感影像分类】基于Landsat 8的随机森林土地利用分类:面向水体与植被识别的GEE平台实现
内容概要:该文档为一段用于Google Earth Engine(GEE)平台的JavaScript代码脚本,旨在对研究区域(AOI)内的Landsat 8卫星影像进行土地利用/土地覆盖(LULC)分类。脚本首先筛选2024年云量低于10%的Landsat 8 Level-2地表反射率影像,构建中值合成影像并应用缩放因子校正。随后,基于预先定义的水体(Water)和植被(Vegetation)样本点,合并训练样本并提取影像对应波段数据,采用随机森林分类器(smileRandomForest)对影像进行监督分类。最后,通过划分训练集与测试集,输出混淆矩阵、总体分类精度和Kappa系数,完成分类结果的精度评估。; 适合人群:具备遥感图像处理基础知识的科研人员、地理信息系统(GIS)技术人员以及环境监测相关领域的研究生或专业人员;熟悉GEE平台基本操作者更佳; 使用场景及目标:①实现特定区域多光谱遥感影像的土地覆盖分类;②掌握GEE平台上从影像预处理、样本构建、模型训练到精度验证的完整分类流程;③支持水资源管理、生态环境监测等应用领域的空间数据分析; 阅读建议:此资源以实际代码形式呈现,建议结合GEE开发环境边运行边学习,重点关注影像预处理方法、训练样本构建逻辑、分类器参数设置及精度评估指标解读,便于迁移应用于其他区域或传感器数据。
java项目之垃圾短信控制系统(完整前后端+说明文档+mysql).zip
管理员管理员信息管理用户注册管理关键词管理(发送内容中,含有这些关键词,就视为垃圾短信)垃圾短信管理交易报警,用户支付时候,发送
一个
提醒交易报警用户个人资料修改用户短信发送(给别的用户发送信息,判断是垃圾短信,就进行垃圾短信登记)用户短信接受,可以接受别人发的信息,并且回复用户支付管理(登记管理支付信息,给哪里支付了多少钱,干什么支付的,订单号等)交易报警查看
基于合作学习的QoE驱动的集成异构流量资源分配对于5G认知无线电网络附Matlab代码.rar
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
C++ 语言
65,198
社区成员
250,522
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章