首页 > 其他分享 >P1110题解

P1110题解

时间:2023-08-16 21:11:26浏览次数:52  
标签:P1110 一个 题解 treap 新加 vector

首先我们考虑第一种情况怎么处理,显然我们可以给原数列的每个数开一个\(vector\),每加一个数丢到对应的\(vector\)后面就行了。

再看第二个操作,你考虑新加一个数会有什么影响。
原来的两个\(vector\)是这样的:
image
新加一个数进去以后:
image
原来的\(|y-x|\)要删除,新增了\(|x-z|\)和\(|z-y|\),我们直接用一个\(fhq-treap\)维护任意相邻两项的差,每次只需要删除一个,增加两个,复杂度是对的。

最后是第三个操作,考虑新加一个数组单独给所有数排序,新加入一个数先二分找到插入位置,再新增两个差值,用另一个\(fhq-treap\)维护,而且不用删掉原来的。

为什么明明插入一个数,原来两边的差值没有了却不用删除呢?

这是显然的,如果它一开始就不是最优的当然不用管,如果是最优的,中间差一个数结果也不会更劣。

总结:这题的难度在于码力

标签:P1110,一个,题解,treap,新加,vector
From: https://www.cnblogs.com/wangwenhan/p/17636207.html

相关文章

  • 【题解】[ARC158C] All Pair Digit Sums
    传送门题目分析我们可以先从简单一点的情况开始分析,如果现在\(a_{[i]},a_{[j]}\)都不会进位,那么最后的\(f(a_{[i]}+a_{[j]})=f(a_{[i]})+f(a_{[j]})\)。证明如下:有两个数\(x=\overline{x_nx_{n-1}....x_1}\)和\(y=\overline{y_my_{m-1}...y_1}\)。令\(n\lem\),由于不会......
  • vscode git突然失效问题解决
    一:首先配置‘环境变量’打开电脑‘设置’----->关于--->高级系统设置---->环境变量------>用户和系统变量都设置一下,点击Path------->新建-------->将git-bash的应用程序地址粘贴到里面----->一直点击确定,直到退出(这里的应用程序地址看自己保存的bash.exe的位置)我的是:C:\Program......
  • 新生赛题解
    A题解:不会#include<bits/stdc++.h>#pragmaGCCoptimize("Ofast")#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<cmath>//#definedoublelongdoub......
  • P2073题解
    链接:P2073送花题意:有若干朵花,每个有两个属性(美丽值和价格)。你需要维护\(3\)种操作:1.添加一朵花(如果之前有价格相同的忽略此操作)2.删除最贵的花3.删除最便宜的花最后输出两个数:美丽值的总和和价格总和解法:经典的平衡树题。对于第一种操作,关键在于判重。先询问一下有......
  • 安防视频监控平台EasyNVR视频监控汇聚平台页面无法上传授权文件的问题解决方案
    TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端录像、云存储、录像检索与回看、告警等......
  • CF809E 题解
    一棵树,点权\(a_i(a_i\len)\),无边权,求\[\sum_{i\nej}\varphi(a_ia_j)\text{dis}(i,j)\]首先,你没有任何手段求\(10^{10}\)级别的一堆离散的\(\varphi\)。于是\[\varphi(xy)=\frac{\varphi(x)\varphi(y)\gcd(x,y)}{\varphi(\gcd(x,y))}\]然后一通莫反,枚举\(\gcd\)\[\sum......
  • CF1648E 题解
    就是\(m\)组询问补图的最小生成树上的树链最大值。有两种基本思路求这棵树。第一种,Kruskal,基于找到最小的边使两端点不连通。考虑补图中\((x,y)\)的边权,它是原图最小生成树上的树链最大值。从小到大枚举补图的边,相当于从小到大枚举原图最小生成树的边\((u,v,w)\),然后:令原图......
  • AT_agc064_a题解
    题面题目大意给定一个正整数\(N\),要求构造一个序列。对于每一个在\(1\)到\(N\)之间的整数\(i\),序列中包含了\(i\)个,并且将该序列首尾相接拼成环后,相邻两项之差大于等于\(1\)小于等于\(2\)。思路突破口是关于相邻两项之差的约束条件。(我一开始竟然只看见了“小于等......
  • CF1854D 题解
    CF1854DMichaelandHotel题解Links洛谷CodeforcesDescription这是一个交互题。有一个有\(n\)个点的内向基环树森林,zlsim位于\(1\)号节点,请你通过以下操作求出哪些节点(包括\(1\))可以通过从这两点开始沿边行走若干步汇至一点。给出两个参数\(u,k\)和点集\(S\),询......
  • P2034题解
    P2034题解题目描述给定一行\(n\)个非负整数\(a_1\cdotsa_n\)。现在你可以选择其中若干个数,但不能有超过\(k\)个连续的数字被选择。你的任务是使得选出的数字的和最大。题解正难则反,考虑将原问题转化为从\(a\)中选若干数使得,任意两数差不大于\(k\),求答案最小。观察......