随笔分类 - 题解
摘要:思路 很不错的人类智慧题。 拿到以后,完全没有思路,看到数据范围,感觉是什么 \(n^2\log n\) 的逆天做法,但是又完全没思路,看后面的题感觉没希望,就在这道题死磕。 先打了个暴力程序,发现平方数太多,没什么规律,就拿了个 map 统计一下那些出现数字方案拥有的平方数比较多 程序如下: #i
阅读全文
摘要:思路 很不错的人类智慧题。 拿到以后,完全没有思路,看到数据范围,感觉是什么 \(n^2\log n\) 的逆天做法,但是又完全没思路,看后面的题感觉没希望,就在这道题死磕。 先打了个暴力程序,发现平方数太多,没什么规律,就拿了个 map 统计一下那些出现数字方案拥有的平方数比较多 程序如下: #i
阅读全文
摘要:思路 首先,我们可以考虑两个人会怎么操作,如果是选择了两个偶数和两个奇数,那么答案不会减小,如果选择了一个奇数一个偶数,那么答案会减小一。 所以想使答案大的人应该尽量选择前一种方案,想使答案小的人应该尽量选择后一种方案。 但这还不是最优的,想使答案大的人在可以选择两个奇数时,绝对不会选择两个偶数,因
阅读全文
摘要:思路 首先,我们可以考虑两个人会怎么操作,如果是选择了两个偶数和两个奇数,那么答案不会减小,如果选择了一个奇数一个偶数,那么答案会减小一。 所以想使答案大的人应该尽量选择前一种方案,想使答案小的人应该尽量选择后一种方案。 但这还不是最优的,想使答案大的人在可以选择两个奇数时,绝对不会选择两个偶数,因
阅读全文
摘要:思路 看到题目要求求一个数 \(x\),满足它的最大的两个因数分别是 \(a\) 和 \(b\),并且规定一个数本身不是他的因数。 首先 \(x\) 需要是 \(a\) 和 \(b\) 的倍数,所以想到最小公倍数,如果不考虑最小公倍数等于 \(b\),最小公倍数就一定是答案,因为最小公倍数是最小的满
阅读全文
摘要:思路 看到题目要求求一个数 \(x\),满足它的最大的两个因数分别是 \(a\) 和 \(b\),并且规定一个数本身不是他的因数。 首先 \(x\) 需要是 \(a\) 和 \(b\) 的倍数,所以想到最小公倍数,如果不考虑最小公倍数等于 \(b\),最小公倍数就一定是答案,因为最小公倍数是最小的满
阅读全文
摘要:思路 简简单单构造题,就是要认真读题,是能且只能满足两个条件。 我们可以考虑每种数字,如果数字只有一个,是不能满足任何一个条件的,那就随便给一个 \(b\) 即可。 如果这个数字有多个,那么就只能有两种 \(b\),否则就会满足三个条件,所以一种数字最多满足一种条件。 所以,如果只有一个或者甚至没有
阅读全文
摘要:思路 简简单单构造题,就是要认真读题,是能且只能满足两个条件。 我们可以考虑每种数字,如果数字只有一个,是不能满足任何一个条件的,那就随便给一个 \(b\) 即可。 如果这个数字有多个,那么就只能有两种 \(b\),否则就会满足三个条件,所以一种数字最多满足一种条件。 所以,如果只有一个或者甚至没有
阅读全文
摘要:思路 首先可以知道答案的下界就是序列 \(a\) 原来的 LIS,现在需要做的就是尽可能地保持答案不增加。 可以肯定的是,将序列 \(b\) 从大到小地插入序列 \(a\) 是不劣的,并且如果在 \(a_i\) 前插入的都是 \(\ge a_i\) 的不会使答案增加,可以感性理解,如果原来的 LIS
阅读全文
摘要:思路 首先可以知道答案的下界就是序列 \(a\) 原来的 LIS,现在需要做的就是尽可能地保持答案不增加。 可以肯定的是,将序列 \(b\) 从大到小地插入序列 \(a\) 是不劣的,并且如果在 \(a_i\) 前插入的都是 \(\ge a_i\) 的不会使答案增加,可以感性理解,如果原来的 LIS
阅读全文
摘要:思路 实际上,如果你会简单版本,那么困难版本也没有那么难了。 同样考虑构造一种通解,如下, 红色的格子改为 X,绿色的格子改为 O,就是一种通解,同样的,这样改可能会超过棋子总数的 \(\frac 1 3\)。 同样考虑将棋子按照位置分类,假如该棋子的位置是 \((i,j)\),那么按照 \((i+
阅读全文
摘要:思路 实际上,如果你会简单版本,那么困难版本也没有那么难了。 同样考虑构造一种通解,如下, 红色的格子改为 X,绿色的格子改为 O,就是一种通解,同样的,这样改可能会超过棋子总数的 \(\frac 1 3\)。 同样考虑将棋子按照位置分类,假如该棋子的位置是 \((i,j)\),那么按照 \((i+
阅读全文
摘要:思路 如果去考虑 O 的摆放,再考虑那些改为 X,这样不好思考,实现也很不好写,所以我们可以考虑构造一种通解。 如果将上图所有标红的位置都放上 X,那么无论 O 如何放,都不可能胜利,而 X 因为原本就没有,所以摆上后也不可能胜利。 不过,因为更改的次数不能超过棋子总数的 \(\frac 1 3\)
阅读全文
摘要:思路 如果去考虑 O 的摆放,再考虑那些改为 X,这样不好思考,实现也很不好写,所以我们可以考虑构造一种通解。 如果将上图所有标红的位置都放上 X,那么无论 O 如何放,都不可能胜利,而 X 因为原本就没有,所以摆上后也不可能胜利。 不过,因为更改的次数不能超过棋子总数的 \(\frac 1 3\)
阅读全文
摘要:思路 首先,对于 \(a_i\) 他必须得不小于最后的 \(a_{i-1}\),所以每个数乘的次数都是固定的。 如果暴力去乘 \(2\) 直到不小于为止,将会超时,所以考虑使用其他的方法进行优化。 因为前后两个数可以同时乘以 \(2\),相对比值不会变化,所以我们可以考虑对于最开始的 \(a_{i-
阅读全文
摘要:思路 首先,对于 \(a_i\) 他必须得不小于最后的 \(a_{i-1}\),所以每个数乘的次数都是固定的。 如果暴力去乘 \(2\) 直到不小于为止,将会超时,所以考虑使用其他的方法进行优化。 因为前后两个数可以同时乘以 \(2\),相对比值不会变化,所以我们可以考虑对于最开始的 \(a_{i-
阅读全文
摘要:思路 如果每一次加或者删一个区间,再去暴力找有没有互不相交的区间的话,铁定 TLE。 那么,我们考虑维护有多少对互不相交的区间,那么每次加或者删一个区间,就去算这个区间对答案的贡献,然后再看答案是否为 \(0\) 即可快速判断有没有互不相交的区间。 现在考虑如何计算一个新加入或者删去的区间能让互不相
阅读全文
摘要:思路 如果每一次加或者删一个区间,再去暴力找有没有互不相交的区间的话,铁定 TLE。 那么,我们考虑维护有多少对互不相交的区间,那么每次加或者删一个区间,就去算这个区间对答案的贡献,然后再看答案是否为 \(0\) 即可快速判断有没有互不相交的区间。 现在考虑如何计算一个新加入或者删去的区间能让互不相
阅读全文
摘要:思路 大体上的思路应该和简单版本一致,建议先看本人关于简单版本的题解。 与简单版本不同的是,困难版本的 \(m\) 可以不为 \(1\),而是取遍 \([1,m]\) 中的整数,所以答案的总值会变大很多倍。 如果直接枚举 \(m\) 次,时间复杂度将会达到 \(O(mn\log n)\) 显然过不了
阅读全文
摘要:思路 大体上的思路应该和简单版本一致,建议先看本人关于简单版本的题解。 与简单版本不同的是,困难版本的 \(m\) 可以不为 \(1\),而是取遍 \([1,m]\) 中的整数,所以答案的总值会变大很多倍。 如果直接枚举 \(m\) 次,时间复杂度将会达到 \(O(mn\log n)\) 显然过不了
阅读全文