June 2021
怪盗基德的滑翔翼
最长上升子序列(LIS) + 最长下降子序列(LDS) 模板题. dp[i] 定义的是以A[i]为最后一个元素的最长上升(下降)子序列.
最低通行费
这题和方格取数一样, 都是2d的dp问题.
AtCoder Beginner Contest 205
A B C D
Codeforces Round #725 (Div. 3)F. Interesting Function
给两个数字l和r, 求从l加到r中间digit的变化个数是多少. 这题用的方法和D一样,就是先求R的答案, 然后减去L的答案, 具体的求法是通过观察: 比如21这个数, 从1->9 是9个1位改变, 9->10是1个2位, 10->19是9个1位改变, 19->20是2个1位改变. 20->21 是1个1位改变, 所以加起来就是21+2, 有次可推,数字123是123+12+1.
Codeforces Round #725 (Div. 3)D. Another Problem About Dividing Numbers
给三个数,a,b,k, 问a和b是不是能在k次(exactly) 下通过整除相等. 这个题情况比较多, 比如a和b互质, 比如k大于a和b. 反正就是交一次就对的都是大神. 这题思路是, 反正a和b一直和某数做整除, 最后就是1, 肯定相等啊, 所以只需要计算有多少质因子在a和b的和中.即可, 剩下就是各种corner cases.
Java神坑
一直听说Java的Arrays.sort()是O(n^2), 没有见识到它的厉害, 今天坑死了, 一直TLE…赶紧换了cpp
Codeforces Round #725 (Div. 3)C. Number of Pairs
给一组数和l还有r, 求这组数中任意两个数的和在[L,R]中. 先排序, 然后求[0,R], 然后再求[0,L-1], 两个相减即可.
Codeforces Round #725 (Div. 3)B. Friends and Candies
给一个n个数字的数组, 问最少可以取多少个数字, 使得分配给别的数字(包括自己),后让数组的值全相等. 一共n个数组, 那么全相等, 肯定就是sum % n == 0 才可能. 不然怎么分都分不出来. 然后因为要分给别的数, 所以只需要找到比sum/n大的数字, 即可., 因为反正这些大数都要分了才能变成sum/n, 是吧…..脑筋急转弯