正题

题目链接:https://www.luogu.com.cn/problem/P7405


题目大意

nnn个点在坐标轴上,qqq次每次所有点向一个方向移动若干步,每个点的权值是它第一次覆盖的区间长度(也就是一个区间只能贡献到第一次经过它的点)。

求所有点的最终权值。

1≤n,q≤2×1051\leq n,q\leq 2\times 10^51≤n,q≤2×105


解题思路

因为两个点的区间只会被这两个点覆盖,所以考虑求出每个区间被两边各占了多少。

先去掉无用的条件,求出一个数组fff满足正负交替表示一左一右,正负的绝对值各自递增。

然后在fff数组上二分出两个点覆盖的区间第一次相交的时候就可以计算各自被覆盖多少了。

时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=2e5+10;
ll n,m,Q,lmax,rmax,x[N],g[N],f[N],w[N];
signed main()
{scanf("%lld%lld",&n,&Q);for(ll i=1;i<=n;i++)scanf("%lld",&x[i]);for(ll i=1;i<=Q;i++){scanf("%lld",&g[i]);g[i]+=g[i-1];if(g[i]>rmax){if(f[m]<=0)rmax=f[++m]=g[i];else rmax=f[m]=g[i];}if(g[i]<lmax){if(f[m]>=0)lmax=f[++m]=g[i];else lmax=f[m]=g[i];}}w[1]-=lmax;w[n]+=rmax;for(ll i=1;i<n;i++){ll len=x[i+1]-x[i];ll l=0,r=m-2;while(l<=r){ll mid=(l+r)>>1;if(abs(f[mid])+abs(f[mid+1])>=len)r=mid-1;else l=mid+1;}if(abs(f[l])+abs(f[l+1])>=len){if(f[l+1]>0)w[i+1]-=f[l],w[i]+=len+f[l];else w[i]+=f[l],w[i+1]+=len-f[l];}else{if(f[l+1]>0)w[i+1]-=f[l],w[i]+=f[l+1];else w[i]+=f[l],w[i+1]-=f[l+1];}}for(ll i=1;i<=n;i++)printf("%lld\n",w[i]);return 0;
}

P7405-[JOI 2021 Final]雪玉【二分】相关推荐

  1. [JOI 2021 Final]有趣的家庭菜园( とてもたのしい家庭菜園 4)

    输入数据 1 5 3 2 2 3 1 输出数据 1 3 输入数据 2 5 9 7 5 3 1 输出数据 2 0 输入数据 3 2 2021 2021 输出数据 3 1 输入数据 4 8 12 2 34 ...

  2. Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))

    Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) 题号 题目 知识点 A Simply Strange Sor ...

  3. Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) A-F全题解

    Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) 文章目录 A. Simply Strange Sort B. ...

  4. [LOJ3014][JOI 2019 Final]独特的城市——树的直径+长链剖分

    题目链接: [JOI 2019 Final]独特的城市 对于每个点,它的答案最大就是与它距离最远的点的距离. 而如果与它距离为$x$的点有大于等于两个,那么与它距离小于等于$x$的点都不会被计入答案. ...

  5. [HFCTF 2021 Final]easyflask

    [HFCTF 2021 Final]easyflask 知识点:pickle反序列化,session伪造 文章目录 [HFCTF 2021 Final]easyflask pickle学习 关于pvm ...

  6. 「JOI 2016 Final」断层

    嘟嘟嘟 今天我们模拟考这题,出的是T3.实在是没想出来,就搞了个20分暴力(还WA了几发). 这题关键在于逆向思维,就是考虑最后的\(n\)的个点刚开始在哪儿,这样就减少了很多需要维护的东西. 这就让 ...

  7. Luogu P5103 「JOI 2016 Final」断层 树状数组or线段树+脑子

    太神仙了这题... 原来的地面上升,可以倒着操作(时光倒流),转化为地面沉降,最后的答案就是每个点的深度. 下面的1,2操作均定义为向下沉降(与原题意的变换相反): 首先这个题目只会操作前缀和后缀,并 ...

  8. 【2018.10.1】「JOI 2014 Final」年轮蛋糕

    题面 一看到求"最小值的最大值"这种问题,就能想到二分了. 二分答案,然后我们要把一圈分成三块,使这三块的大小都$\geq mid$.做法是把环展开成2倍长度的链,先钦定一个起点, ...

  9. 【JOI 2015 Final】铁路旅行

    铁路旅行 题目描述 JOI 国有 NNN 座城市,依次编号为 1,2,⋯,N1,2,\cdots ,N1,2,⋯,N :还有 N−1N-1N−1 条可双向通行的铁路,依次编号为 1,2,⋯,N−11, ...

最新文章

  1. Bqq服务器的缓存文件放什么目录,如何使文件系统缓存失效? - How to invalidate the file system cache? - 开发者知识库...
  2. 辞退了一名 2 年工作经验的前端工程师
  3. 【 Linux 】通用的vim简单配置方法
  4. 46.Express框架 GET 方法和POST 方法
  5. Javaweb 项目内所有页面都是404问题
  6. boost::gil::detail::convolve_2d用法的测试程序
  7. HDU-3065 病毒侵袭持续中 AC自动机又是一板子!
  8. Combox使用的一些技巧
  9. Linux之GDB调试命令
  10. leancloud的技术面试指南
  11. java swing 图片上加热点_外卖图片品牌全靠P,4元成本料理包加热后,平台上20元卖出...
  12. Terrasolid安装
  13. python获取域名对应的ip_Python实现通过解析域名获取ip地址的方法分析
  14. 电机控制系统php,基于FPGA的直流电机PWM控制系统(附带源码下载)
  15. Method annotated with @Bean is called directly. Use dependency injection instead.
  16. 统计各个分数段的人数python_怎么利用Excel统计各分数段的人数
  17. 怎样在微信中直接下载秒借类金融贷款APP,避免下载链接域名被微信屏蔽封杀的处理方式
  18. java-使用 flying-saucer 通过 xhtml 生成 pdf 文档支持 css 和 图片
  19. 进击的巨人 《兵王》6月28日启动新服【游戏资讯】
  20. 图片加载和它的内存们

热门文章

  1. 面试常见问题_软件实施工程师面试中的常见问题都有哪些呢?
  2. json 查询 java_怎样在java中查询mysql得到如下的json格式的结果?
  3. 计算机职称 计算机二级证,国家计算机二级证书含金量有多高
  4. c语言课程设计加密程序,C语言课程设计文件加密解密.doc
  5. mat opencv 修改roi_设置图片ROI(OpenCV学习笔记之二)
  6. 服务器运行慢都有哪些问题,服务器数据库的运行速度很慢问题
  7. html图片宽度高度等比例绽放,css图片自动绽放大小,左右,上下居中
  8. java if or android_RxJava switchIfEmpty操作符实现Android检查本地缓存逻辑判断
  9. 在栈中压入一个字符串c语言,面试题 31:栈的压入、弹出序列
  10. gre考试能用计算机么,新GRE考试必须知道的九大考场问题