摘要: T1: 考虑特殊构造,使不同段不会相互影响。 分块构造,大段递减,小段递增。 最长下降子序列即为段数,最长上升子序即为最长的一段的长度。 特判无解情况,然后分配一下长度即可。 时间复杂度$O(n)$。 T2: 将所有的数排序,统计前缀和,如果到某个点发现下一个数大与前缀和的两倍,则会出现断层。 统计 阅读全文
posted @ 2019-10-24 14:44 hz_Rockstar 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 来填坑了...... T1: 将$A$和$B$看成变量,那么题意转化为是否存在$A$和$B$,使得$\frac{A}{a_i}+\frac{B}{b_i}$最小。 解不等式$\frac{A}{a_i}+\frac{B}{b_i}<\frac{A}{a_j}+\frac{B}{b_j}$得: $\fr 阅读全文
posted @ 2019-10-24 14:17 hz_Rockstar 阅读(122) 评论(0) 推荐(0) 编辑
摘要: T1: 将区间按左端点排序,点排序。 依次扫每一个点,将所有满足条件的区间装入堆中,弹掉所有过期的区间。 每次贪心取右端点最小的区间。 时间复杂度$O(nlogn)$。 T2: 把树放在森林中考虑。 设$dp[i][j]$表示$i$个点的森林,有$j$个点在第一棵树的概率。 然后$dp[i][j]= 阅读全文
posted @ 2019-10-15 17:21 hz_Rockstar 阅读(238) 评论(0) 推荐(0) 编辑
摘要: T1: 直接模拟。 每次操作分为移动,不动位置合并,移动三个步骤。 时间复杂度$O(n^2m)$。 T2: 结论:最优子序列一定由一个单调上升序列和一个单调下降序列组成。 证明: 如果同时存在多个单升区间和单降区间。 当两个相同时,只保留一个平均数不变; 其他情况下去掉小的那个一定最优。 所以求一个 阅读全文
posted @ 2019-10-15 17:04 hz_Rockstar 阅读(170) 评论(0) 推荐(0) 编辑
摘要: T1: 发现$n-m$极小。 将左括号看作1,右括号看作-1, 设$dp[i][j]$为考虑了$i$为,括号总和为$j$的方案数,期间要保证$j$时刻大于0。 枚举左侧的长度和左侧的括号和,可以算出右侧信息。 要处理出$s$中出现的括号和最小值$tot$,左侧枚举的括号和不得小于$tot$,不然会有 阅读全文
posted @ 2019-10-15 16:47 hz_Rockstar 阅读(171) 评论(0) 推荐(0) 编辑
摘要: T1: 直接搜索子集复杂度太高,考虑meet in the mid。 先将两段内部的答案处理出来,暴力枚举子集即可。 将所有数分成两半,在前一半里枚举集合和子集,在后一半里枚举集合,判断前一半的子集是否为并集的一半,再反过来枚举一遍。 时间复杂度$O(6^{\frac{n}{2}})$。 T2: 先 阅读全文
posted @ 2019-10-15 16:22 hz_Rockstar 阅读(150) 评论(0) 推荐(0) 编辑
摘要: T1: 根据三角形相似可得$y=\frac{(n-x)x}{n}=x-\frac{x^2}{n}$。 后面必须是整数,一个一个试即可。 时间复杂度$O(\sqrt{n})$。 T2: 考虑DP。 设$dp[i]$为以第$i$个点结束的最优代价,$s[i][j]$为区间$[i,j]$的不同值个数。 发 阅读全文
posted @ 2019-10-14 11:06 hz_Rockstar 阅读(123) 评论(0) 推荐(0) 编辑
摘要: T1: 不难发现间隔为$n$的倍数的两列,放的棋子数必须相同。 可以用背包DP解决,设$dp[i][j]$为考虑到第$i$列,放了$j$个棋子的方案数。 DP范围不能超过$n$,但可以用上面的性质。 每一列的摆放都是独立的,所以可以用快速幂求出。 状态转移方程: $dp[i][j]=\sum \li 阅读全文
posted @ 2019-10-14 10:53 hz_Rockstar 阅读(166) 评论(0) 推荐(0) 编辑
摘要: T1: 最优矩形面积为最小长乘最小宽。 将所有矩形按照$x$降序排序,从上到下扫,同时将$y$装进堆中,还没有扫到的都视作删除。 每次pop掉一个最小的,表示删除掉这个矩形。 然后用堆中最小值乘当前$x$更新答案。 时间复杂度$O(nlogn)$。 T2: 最小点集即为每个点到公共lca的路径的并。 阅读全文
posted @ 2019-10-14 10:19 hz_Rockstar 阅读(114) 评论(0) 推荐(0) 编辑
摘要: T1: 求满足$(a+b)<=n$且$n|ab$的数对数。 将答案用公式表示: $\begin{array}{rl} ans &=& \sum \limits_{i=1}^n \sum \limits_{j=1}^n [i+j|ij][i+j<=n] \\ &=& \sum \limits_{i=1 阅读全文
posted @ 2019-10-14 09:59 hz_Rockstar 阅读(209) 评论(0) 推荐(0) 编辑