当前位置: 首页 > news >正文

CF1995C Squaring 题解

思路详解:

请注意,本题解用到了非整数计算,也就是说性能可能不如整数运算,但是易于实现,追求最优解的大佬不建议观看本题解。


这个题看似简单,但是由于涉及到了平方操作,不用高精度根本存不下,然后如果你要用高精度的话又会 T L E TLE TLE 而且巨难写。

尝试使用对数科技,根据高中数学的知识我们可以知道 log ⁡ ( n ∗ n ) = 2 × log ⁡ n \log(n* n) = 2 \times \log n log(nn)=2×logn,但是注意到 n ≤ 2 × 1 0 5 n \le 2 \times 10^5 n2×105,所以就算将平方操作转化成了 × 2 \times 2 ×2 操作仍然无法通过本题。

然后做这道题的时候笔者想到这里就觉得这道题不可做,然后果断放弃了。。

但事实上,对数科技并不是只能使用一次,我们可以通过对数的转化将 × 2 \times 2 ×2 转化成 + 2 + 2 +2,即 log ⁡ ( n × 2 ) = log ⁡ n + log ⁡ 2 \log (n \times 2) = \log n + \log 2 log(n×2)=logn+log2,因此,我们就根据上述两个等式成功将平方操作转化成了 + 2 + 2 +2​ 操作。

然后就做完了。

tip: 由于使用了非整数的运算,所以判断是否等于 0 的时候建议和 eps 作比较,防止出现精度上的问题,即出现了误差。

http://www.lryc.cn/news/411071.html

相关文章:

  • 动态规划之路径问题
  • 如何优化你的TikTok短视频账号运营策略?
  • mysql的唯一索引和普通索引有什么区别
  • Scrapy框架在处理大规模数据抓取时有哪些优化技巧?
  • 私有化低代码平台的优势:赋能业务用户,重塑IT自主权
  • SAP BW系统表分享第一弹
  • 详解工厂模式与抽象工厂模式有什么区别?【图解+代码】
  • zeroice做json字符串转为struct,支持结构体嵌套
  • Linux笔记 --- 内存管理
  • 树莓派通过webRTC进行视频流传输到公网
  • 【数据结构与算法】循环队列
  • 为什么推荐使用@RequiredArgsConstructor代替@Autowired?
  • ARM系列运行异常排查
  • Hive3:库操作常用语句
  • C语言实现:C51单片机驱动LCD屏幕显示字符串(Proteus+Keil)
  • 暄桐好作业之《临沈周〈东庄图册〉局部》
  • Qt3D创建3D物体步骤
  • UDP程序设计
  • 计算机网络—电路、分组、报文交换—图文详解
  • linux下交叉编译licensecc
  • 模型剪枝综述
  • 破解监控难题,局域网电脑监控软件哪家强?
  • Linux--Socket编程TCP
  • Android Studio导入源码
  • UE5 UE4 使用python进行编辑器操作
  • 区块链技术在智能城市中的创新应用探索
  • 解决mysql事件调度器重启服务后自动失效的问题
  • mybatis开启二级缓存
  • Oracle大型数据库管理(一)Oracle大型数据库管理全面指南
  • Arcgis中查找空间距离范围内字段相等的数据