首页 > 其他分享 >kuhu另类解法

kuhu另类解法

时间:2024-02-24 09:02:28浏览次数:22  
标签:le log 题解 另类 2x kuhu 贡献 解法

escape from whk 3题解

题目大意

定义两个不同质因数为kuhu,当且仅当两数和为2的整数次方.

  1. 给定若干询问\([l,r]\),问在区间中取出若干的元素,使得元素两两间不为kuhu,最大的元素个数\(f(l,r)\)
  2. 求\(\sum_{1\le l\le r\le n}f(l,r)\)

题解

Part1

如图,对于一个右端点,找到一个最接近它的2的整数次方x


)

我们发现,对于\([x+1,r]\)和\([2x-r,x-1]\)两段只能选择一段,但\([x+1,r]\)的影响更小(因为选择了另一个会影响前面),所以就直接选择\([x,r]\),然后就不能选择\([2x-r,x-1]\),所以答案就是\(ask(l,r)=ask(l,2x-r-1)+r-x+1\)

我们发现这样递归,x每次都会变小,所以是\(\log n\)的单次查询,时间复杂度\(O(m\log n+num·n^2\log n)\),可以获得75分

Part2

现在的问题就是如何处理第二问。

我们令\(s_r=\sum_{l=1}^rf(l,r)\)

考虑分类讨论:

  1. \(l\in[x,r]\),贡献为\(r-l\),总贡献为\(\frac{(r-x+1)(r-x+2)}{2}\)
  2. \(l\in[2x-r,x-1]\),贡献为\(r-x+1\)
  3. \(l\in[1,2x-r-1]\),贡献为\(f(l,2x-r-1)+r-x+1\)

综合三种,可以得出递推式:\(s_r=\frac{(r-x+1)(r-x+2)}{2}+(x-1)(r-x+1)+s_{2x-r-1}\)

总时间复杂度为\(O(m\log n+n)\),而且非常好打,并且爆标了。

标签:le,log,题解,另类,2x,kuhu,贡献,解法
From: https://www.cnblogs.com/zhy114514/p/18028264

相关文章

  • 【持续更新中】【解题报告】你非得用贪心解深搜题吗?——搜索题迷惑解法大赏
    寒假THOI集训部分深搜题目(另类)题解今日推歌:《カブってこうぜぇfeat.可不》-タケノコ少年特别可爱的一个歌,,,Before集训时候做题做出的怪异解法和迷惑大赏,真实有用的成分低于迷惑成分除了深搜以后(可能)还会有广搜题本篇没有任何以贪心为正解的题,也(几乎)没有以正解(搜索)做出来......
  • 一类经典问题的若干解法
    标题指的是这类问题:我们经常会看见求\(\sum\limits_{x=l}^r\sum\limits_{y=x}^rf(x,y)\)这类问题。我们常常能够通过智慧将\(f(x,y)\)转化为二维平面上的点,然后发现所有\(f\)可以用一些矩形加来表示。通常这里面矩形加的次数是\(\mathcalO(n)\)或者\(\mathcalO(n\log......
  • Poj 1077 Eight!(BFS模板解法)
    吃完晚饭,啃着tomato来poj上提交,结果不支持unordered_map,吐血啦,看来还是要用BFS+康托展开,还想再写一篇双向BFS的,对这道题算是圆满了*_*,但是要用G++提交,C++会报错我也不知道为嘛#include<iostream>#include<cstring>#include<queue>#include<unordered_map>usingnamespaces......
  • leetcode 42 单调栈解法
    Problem:42.接雨水目录思路解题方法复杂度Code思路作为自己独立完成的第一道困难题,我觉得有必要纪念一下。就是单调栈的思路,不过需要减去栈中的每一项才是雨水的体积。最后一个因为不是柱子,所以在结束循环时可能会出现栈未空的情况,需要倒着再考虑一遍。解题方法遇到比当......
  • A+B问题1+105种解法
    个人写法应该没有更短的了吧,挑战世界最短a,b;main(){scanf("%d%d",&a,&b);printf("%d",a+b);}要测试点这里以下转自\(AcWing\)=================原作者为Conan15。要测试点温馨提示:此题解适合人群为算法学习者,不那么适合语法基础课还没学完的学生为了不误导初学者先......
  • 1.25 两道结论题的解法与思考
    背景1:今天确实没啥好活可以整。背景2:今天确实被两道结论题整破防了。背景3:拒绝偷跑!卑力下降!背景4:当学校寒假的学科答疑和做题冲突的时候,果断选择做题!背景5:背景怎么成碎碎念了。背景6:原来是吐槽役。1.ARC094FNormalization给定\(\Sigma=\{a,b,c\}\)的串,每次可以......
  • 1.24 两道树上问题的解法与思考
    内容过于简单,勿喷。1.1P6072Path(双log)选择两条简单路径,满足没有重合的点,且边权异或和之和最大。\(n\le10^5\)。我们可以把问题转化为选出一个\(u\),令在子树内选出两个点的异或和最大为\(f_u\),子树外为\(g_u\),那么我们需要求\(f_u+g_u\)的最大值。首先,通过DSUont......
  • 洛谷 P9579「Cfz Round 1」Elevator 另类题解
    一个赛时想到的另类DP做法。Solution容易将原题转化为一个人乘电梯每次上下一层。对于\(a_i<b_i\)是好处理的,记\(\displaystylem=\max_{1\leqi\leqn}\{a_i,b_i\}\),只需要跑到\(m\)即可解决所有这种条件。对于\(a_i>b_i\)的条件,我们除了到\(m\)外,还需要额外地从......
  • python 有效的数独 多种解法
    解法一:暴力枚举法最简单的方法是对于每一行、每一列和每一个3x3的九宫格,分别判断其中是否有重复的数字。具体实现如下:classSolution:defisValidSudoku(self,board:List[List[str]])->bool:#检查行foriinrange(9):nums=set()......
  • python 在排序数组中查找元素的第一个和最后一个位置 多种解法
    二分查找:基于二分查找的算法可以在O(logn)的时间复杂度内解决该问题。具体实现方式是,先使用二分查找找到该元素的位置,然后向左和向右扩展,直到找到第一个和最后一个位置。代码如下:defsearchRange(nums,target):defbinarySearch(nums,target,lower):left,righ......