A. Puzzles

  • 对\(f[]\)排序,取连续的\(m\)个。

B. Routine Problem

  • 考虑\(\frac{a}{b}\)和\(\frac{c}{d}\)的大小关系,适配后就是分数的运算。

C. Quiz

  • 按\(k\)将\(n\)个问题分段,那么在没有分数翻倍的情况下最大题数为\[(k-1)\lfloor\frac{n}{k}\rfloor+n\%k\]
  • 若\(m\le (k-1)\lfloor\frac{n}{k}\rfloor+n\%k\),则最大分数就为\(m\),否则翻倍的机会放到前面的若干段上。

D. Book of Evil

  • 问题转化为计算每个点到\(p_i\)的最大距离,若距离大于\(d\),显然不会是问题要的点。
  • 最大距离两遍\(dfs\)即可。

E. Divisor Tree

  • 每个\(a_i\)的点的父节点只会是根节点或者其他\(a_j>a_i\)的点上。
  • 所以将\(a[]\)从大到小排序后,暴力建树,时间复杂度\(O(n!)\)。

F. GCD Table

  • 模线性方程合并。
  • 在合并过程中,需要注意过程变量会超\(long\ long\),一种解决办法是快速乘,一种是利用题目解的范围在\(10^{12}\)内,合并时使用较小的模数。

G. Optimize!

  • 问题相当于对于\(a\)每个长为\(len\)的连续子序列,判断是否存在\(b\)一种排列,使得对应位置\(a_i+b_i\ge h\)。
  • 如果将\(b[]\)从小到大排序,每个\(a\)的连续子序列从大到小排序,此时就是最优匹配。
  • 考虑单个\(a_i\),每个\(a_i\)都存在一个最小的\(b_j\)使得和大于等于\(h\),也就是比\(a_i\)大值至少有\(j-1\),否则\(a_i\)会导致当前的子序列不合法。
  • 最后就是线段树用值(排名)建树,维护长为\(len\)的区间,区间覆盖,查询全局最小值。

最新文章

  1. angularjs内置指令 - form
  2. jsp中表格,表格中的文字根据表格的大小自动换行
  3. 7 天玩转 ASP.NET MVC — 第 4 天
  4. 初学XPath,其实很简单
  5. 关于Linux 交互(用户操作接口)
  6. hdu 1262 寻找素数对 数论 打表。
  7. COM模块三---根的形成和注册代理server(Building and Registering a Proxy DLL)
  8. Jasmine基础语法
  9. loadrunner学习理论之一
  10. 关于python 使用腾讯云OCR 通用印刷体识别
  11. beanshell断言模版
  12. 土制Excel导入导出及相关问题探讨
  13. vue组件间的数据和方法传递
  14. Linux IPC BSD socket编程基础
  15. wireshark 抓包过滤器
  16. 25 The Go image/draw package go图片/描绘包:图片/描绘包的基本原理
  17. Spring boot整合shiro权限管理
  18. 2、classpath、path、JAVA_HOME的作用
  19. talib 中文文档(八): Momentum Indicator Functions 动量指标
  20. redis中如何对 key 进行分类

热门文章

  1. 使用nuxt.js官方脚手架构建koa2的es6编译问题
  2. [Vue CLI 3] 插件开发之 registerCommand 到底做了什么
  3. 一眼看穿👀JS基本概念
  4. Effective Modern C++:08调整
  5. request.getcontextPath() 详解 和 <link标签>
  6. 六.基本数据结构-双端队列(Deque)
  7. 容器云平台使用体验:数人云Crane
  8. 2019-10-26-dotnet-core-发布只有一个-exe-的方法
  9. UVA_414:Machined Surfaces
  10. 《C程序设计语言》笔记(一)