首页 > 其他分享 >Happy Sugar Life,but 2.73 kb

Happy Sugar Life,but 2.73 kb

时间:2024-07-28 11:51:43浏览次数:14  
标签:kb Life 分块 值域 2.73 差分 贡献 text 序列

\(\text{poly log}\) 的感觉太难写了,那么考虑分块,先记询问的序列限制为 \([l,r]\),值域限制为 \([x,y]\),一个支配对为两个部分。

  1. 散块内部。
  2. 散块对散块。
  3. 整块内部。
  4. 整块对整块。
  5. 散块对整块。

同样是 \(5\) 种贡献。

可以发现贡献 \(2,5\) 的序列不交,且两个部分一定有一个的长度 \(\le \sqrt n\),那么可以枚举它的元素,然后查询另一部分值域在 \([x,y]\) 的点的数量,那么可以对序列差分,并维护一个 \(\text{O}(1)\) 查询的值域分块。

考虑贡献 \(3\),序列固定,但是不好确定值域的限制 \([l,r]\),那么可以用二维数组来限制它,考虑记 \(f_{l,r}\) 表示值域在 \([l,r]\) 的贡献,那么可以先离散化一下,然后做容斥区间 \(\text{dp}\),\(f_{l,r}=f_{l+1,r}+f_{l,r-1}-f_{l+1,r-1}+(pos_l<pos_r)\)。

再考虑贡献 \(1\),看见题解区有常数极大且不是很好写的类 \(\text{dp}\) 做法和复杂度不太正确的分治做法,只能说太抽象了。这边提供一个简单的做法,肯定是先要枚举每个块的,那么同样考虑在序列上差分,如果说我们像贡献 \(2,5\) 那样差分,会少减去一部分在 \(l-1\) 前另一部分在 \([l,r]\) 的,考虑换一个方式,如果扫到一个 \(l\),我们先用值域分块内已经有的,再枚举这个询问的区间,减去它们之间的贡献,如果扫到一个块内的元素,便加上值域分块中有的元素对它的贡献。

最后考虑贡献 \(4\),感觉不太可以序列分块,但是又觉得只能差分,那么换一个维度,在值域上差分,贡献为 \(([1,y]_{\text{ans}}-[1,x-1]_{\text{ans}})-[1,x-1]_{\text{num}} \times [x,y]_{\text{num}}\),感觉两个部分只能分开维护,考虑前半部分,在值域上从小到大扫,但是不能直接枚举每次询问包含的块包含的元素来计算贡献,还是可以直接用二维数组限制,那么可以记 \(g_{l,r}\) 表示块 \([l,r-1]\) 对块 \(r\) 的贡献,那就可以直接做了;考虑后半部分,可以发现这两个矩形不交,自然想到扫每个块,同样需要此次查询块内的值域在 \([p,q]\) 的点,也需要离散化,可以和贡献 \(3\) 一起做,再对每个询问记录 \(cnt_i\) 表示它包含的块的前缀的 \([1,x-1]_{\text{num}}\) 的和即可。

\(\text{code}\)

标签:kb,Life,分块,值域,2.73,差分,贡献,text,序列
From: https://www.cnblogs.com/zyxawa/p/18328048

相关文章

  • 【操作系统/C++ malloc 1KB和1MB 有什么区别?brk | mmap】
    关于malloc如何根据请求的内存大小选择使用brk还是mmap的机制,是glibc(GNUCLibrary)中malloc实现的一个常见策略,尽管具体的阈值(如128KB)可能会因glibc的不同版本或配置而有所不同。brkbrk是一个系统调用,用于改变数据段的结束地址(即“程序断点”)。在UNIX和类U......
  • 【YOLOv8改进- Backbone主干】BoTNet:基于Transformer,结合自注意力机制和卷积神经网络
    YOLOv8目标检测创新改进与实战案例专栏专栏目录:YOLOv8有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLOv8基础解析+创新改进+实战案例介绍摘要我们提出了BoTNet,这是一种概念上简单但功能强大的骨干......
  • Android开发 - 滑动条监听进度setOnSeekBarChangeListener方法解析
    setOnSeekBarChangeListener方法的参数是一个SeekBar.OnSeekBarChangeListener类型的对象,该对象中包含了三个方法:onProgressChanged(SeekBarseekBar,intprogress,booleanfromUser):当SeekBar的进度发生变化时就会调用这个方法。在这个方法中,我们可以获取SeekBar滑动条的当......
  • QTreeView 样式设置以及Checkbox复选框样式设置
    这种样式设置如下QTreeView{background:#303033;font-size:16px;color:rgba(255,255,255,1);border:0px;}QTreeView::item{background:#303033;height:40px;}QTreeView::branch{background:#303033;}QTreeView::item:hover{......
  • tkcalendar 与 ttkbootstrap 兼容性问题
    我在python脚本中使用ttkbootstrap。我尝试使用ttkbootstrap中的DateEntry,但它不会像tkcalendar那样触发事件(至少我找不到任何东西),而且我喜欢tkcalendar侧面有一个星期计数器。所以我会喜欢使用tkcalendarDateEntry而不是ttkbootstrapDateEntry。现在,它本身......
  • Kbdgkl.dll的功能与其损坏后的修复步骤
    kbdgkl.dll是一个动态链接库(DynamicLinkLibrary)文件,通常与Windows操作系统中的键盘布局和输入法支持相关。这个DLL文件负责处理特定语言的键盘输入,例如,kbdgkl.dll可能与希腊语键盘布局相关联,用于在Windows系统中正确解析和显示希腊字母。当kbdgkl.dll文件损坏或缺失时,解决k......
  • OpenCV 遍历Mat,像素操作,使用TrackBar 调整图像的亮度和对比度 C++实现
    文章目录1.使用C++遍历Mat,完成颜色反转1.1常规遍历方式1.2迭代器遍历方式1.3指针访问方式遍历(最快)1.4不同遍历方式的时间对比2.图像像素操作,提高图像的亮度3.TrackBar进度条操作3.1使用TrackBar调整图像的亮度3.2使用TrackBar调整图像的对比度1.使用C++遍历M......
  • OpenAI入门指南 aidoczh.com 上线OpenAI Cookbook中文版
    文章目录1、网址地址(1)中文地址(2)官网地址2、OpenAICookbook介绍3、内容导航1、网址地址(1)中文地址openai-cookbook中文网址http://www.aidoczh.com/docs/openai_cookbook/openai-cookbook中文项目已经放在github上https://github.com/aidoczh/openai-cookbook-z......
  • MaxKB添加本地ollama大模型遇到API域名无效的问题
    MaxKB添加本地ollama大模型遇到API域名无效的问题前期的安装过程下载ollama,直接安装添加环境变量,使得下载模型到指定文件夹docker部署MaxKB打开添加模型API域名无效解决办法添加环境变量给ollama在“系统变量”或“用户变量”中点击“新建…”。输入变量名OLLAMA_......
  • Windows图形界面(GUI)-DLG-C/C++ - 滑动条(Trackbar)
    公开视频-> 链接点击跳转公开课程博客首页-> ​​​​​​链接点击跳转博客主页目录滑动条(Trackbar)使用场景初始控件控件消息示例代码滑动条(Trackbar)使用场景音量控制亮度调节视频播放进度控制任何需要用户在特定范围内选择值的场景初始控件TBM_......