思维题
现场数学推导,反证法
曼切斯特的流氓
007
展开
-
ACWing最长连续子序列(自己分析性质+双指针)
分析性质:连续两个数字绝对值小于等于1,并且序列中最大最小值差为1,那么也就是这个序列只有两个连续的数字,只存在两种数字,这两个数字差为1。利用双指针,j记录j到i的合法区间,每次判断区间内数字种类个数是否大于2,如果大于2那么cnt[j]–,知道将区间元素种类个数控制在2以内。原创 2023-05-01 23:54:07 · 65 阅读 · 0 评论 -
ACWing栈(哈希表)
从后向前输出,如果输出过了就不要输出了。原创 2023-05-01 23:16:19 · 91 阅读 · 0 评论 -
砝码称重(进制展开)
然后(m-a0)/n 得出m1=a1+a2。m每次取余n 那么m%n=a0。n99以此类推得出a1。依次类推得出a100。原创 2023-04-28 00:47:57 · 83 阅读 · 0 评论 -
凑数(二进制+逆向思维)
首先如果n为偶数,那么n除以等于2,这样的一次操作不需要代价,如果n为奇数那么n需要减等于1,这样需要代价为1以此类推可以得出最终的代价。我们不要正向去凑出来n,而是逆向将n分解为0。原创 2023-04-27 23:54:57 · 468 阅读 · 0 评论 -
技能升级(二分+多路归并+贪心)蓝桥杯
6、最后二分出来的x,可能导致最后加入的个数大于m,因为可能有相等情况,所以要减去多出来的个数乘以x。3、一共n个等差数列,所以每次优先在n个等差数列中,选择最大的一项升级(贪心+多路归并思想)5、需要在O(n)复杂度处理多路归并,所以在计算一个等差数列有多少项满足a[i]>=x。2、最多可以加m次,所以肯定加的次数越多越好。4、需要二分出来加入的第m项攻击力是多少。计算公式为 (a[i]-x)/b+1。1、首先每一个技能否是一个等差数列。(x为二分枚举的第m次攻击力)原创 2023-04-06 13:00:43 · 498 阅读 · 0 评论 -
选数异或(思维+异或运算+dp+预处理)
所以根据给出的左边界,判断这个左边界是否包含我们预处理出来的左边界,如果给出的L小于我们预处理的L,那么这个区间合法,如果大于我们预处理的L,那么这个区间不合法。我们可以知道每一次的R要么继承上一个R-1的最大左边界,要么就是他的a^x对应的b的下标存在,我们选择这两个中的最大值即可。由于每次查询给出一个区间[L,R] 询问这个区间是否存在任意两个数a,b使得a^b=x,我们通过。性质 a^b=x —> a=x ^ b —> b=x ^ a。如何预处理出每个R对应的最近左边界呢?原创 2023-04-05 11:21:30 · 119 阅读 · 0 评论 -
货币系统(完全背包求方案数+思维)
反证法:假设bi不属于序列a,bi可以被序列a中元素表示出来,然而序列a中元素又可以通过序列b表示出来,那么bi可以被自己所在的序列b表示出来,则bi一定不属于序列b。an 让你找出另外一组序列b1…bm使得序列a中能够表示的所有数序列b同样能够表示出来。让你求出序列b最小需要多少个元素。利用完全背包求出每个数字j能够被表示的方案数,最后统计方案数为1的j即为b序列中元素。那么我们只需要在序列a中找到不能够被其他元素表示的ai就可以的出序列b。,所以bi一定属于序列a。原创 2023-04-01 21:21:36 · 58 阅读 · 0 评论