bzoj2527

首先环可以变成链来处理,对于l>r的情况就是修改区间[1,r],[l,mx]
然后不难想到整体二分,二分答案k,然后算1~k场流星雨对国家的贡献
然后判定将国家划分变成子问题解决,没什么难的
终于不是tle,poi良心了一把

  1 type way=record
  2        po,next:longint;
  3      end;
  4      que=record
  5        p,n:longint;
  6      end;
  7      an=record
  8        l,r,v:longint;
  9      end;
 10 var a:array[0..300010] of an;
 11     qq,q:array[0..300010] of que;
 12     e:array[0..300010] of way;
 13     c:array[0..300010] of int64;
 14     p,ans,h:array[0..300010] of longint;
 15     v:array[0..300010] of boolean;
 16     tot,t,j,n,m,x,i:longint;
 17     s:int64;
 18 
 19 function lowbit(x:longint):longint;
 20   begin
 21     exit(x and (-x));
 22   end;
 23 
 24 procedure add(x,y:longint);
 25   begin
 26     e[i].po:=i;
 27     e[i].next:=p[x];
 28     p[x]:=i;
 29   end;
 30 
 31 procedure ins(x:longint;w:int64);
 32   begin
 33     while x<=n do
 34     begin
 35       if not v[x] then  //清理标记
 36       begin
 37         inc(tot);
 38         h[tot]:=x;
 39         v[x]:=true;
 40       end;
 41       c[x]:=c[x]+w;
 42       x:=x+lowbit(x);
 43     end;
 44   end;
 45 
 46 function ask(x:longint):int64;
 47   begin
 48     ask:=0;
 49     while x>0 do
 50     begin
 51       ask:=ask+c[x];
 52       x:=x-lowbit(x);
 53     end;
 54   end;
 55 
 56 procedure work(f,t,l,r:longint);
 57   var mid,l1,l2:longint;
 58   begin
 59     if f>t then exit;
 60     if l>r then exit;
 61     mid:=(l+r) shr 1;
 62     tot:=0;
 63     for i:=l to mid do
 64       if a[i].l<=a[i].r then
 65       begin
 66         ins(a[i].l,a[i].v);
 67         ins(a[i].r+1,-a[i].v);
 68       end
 69       else begin
 70         ins(1,a[i].v);
 71         ins(a[i].r+1,-a[i].v);
 72         ins(a[i].l,a[i].v);
 73       end;
 74 
 75     l1:=f;
 76     l2:=t;
 77     for i:=f to t do
 78     begin
 79       j:=p[q[i].p];
 80       s:=0;
 81       while j<>0 do
 82       begin
 83         s:=s+ask(e[j].po);
 84         if s>=q[i].n then
 85         begin
 86           qq[l1]:=q[i];
 87           inc(l1);
 88           ans[q[i].p]:=mid;
 89           break;
 90         end;
 91         j:=e[j].next;
 92       end;
 93       if s<q[i].n then
 94       begin
 95         q[i].n:=q[i].n-s;  //对于还不够的国家,直接把这部分贡献减去即可,下次直接处理mid之后的流星雨的贡献
 96         qq[l2]:=q[i];
 97         dec(l2);
 98       end;
 99     end;
100     for i:=1 to tot do
101     begin
102       c[h[i]]:=0;
103       v[h[i]]:=false;
104     end;
105     for i:=f to t do
106       q[i]:=qq[i];
107     work(f,l1-1,l,mid-1);
108     work(l2+1,t,mid+1,r);
109   end;
110 
111 begin
112   readln(m,n);
113   for i:=1 to n do
114   begin
115     read(x);
116     add(x,i);
117   end;
118   for i:=1 to m do
119   begin
120     read(q[i].n);
121     q[i].p:=i;
122   end;
123   readln(t);
124   for i:=1 to t do
125     readln(a[i].l,a[i].r,a[i].v);
126   work(1,m,1,t);
127   for i:=1 to m do
128     if ans[i]=0 then writeln('NIE')
129     else writeln(ans[i]);
130 end.
View Code

 

转载于:https://www.cnblogs.com/phile/p/4472945.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第17章:图像分割提取

第17章&#xff1a;图像分割提取一、用分水岭算法实现图像分割提取&#xff1a;1. 算法原理&#xff1a;2. 相关函数介绍&#xff1a;(1) 形态学函数回顾&#xff1a;(2) 距离变换函数distanceTransform&#xff1a;(3) 确定未知区域&#xff1a;(4) 函数connectedComponents对…

[转]可伸缩系统的架构经验

最近&#xff0c;阅读了Will Larson的文章Introduction to Architecting System for Scale&#xff0c;感觉很有价值。作者分享了他在Yahoo!与Digg收获的设计可伸缩系统的架构经验。在我过往的架构经验中&#xff0c;由于主要参与开发企业软件系统&#xff0c;这种面向企业内部…

【Linux技巧】cmake、make命令多线程编译,大大提高编译速度

目录获取最大可用线程数自动以最大线程数编译makecmake效果系统&#xff1a;Debian 获取最大可用线程数 nprocnproc命令可返回当前可用的最大线程数 树莓派3B (BCM2837)&#xff1a;4 RK3399 Pro&#xff1a;6 自动以最大线程数编译 make sudo make -j $(nproc)cmake su…

redis学习(九)——数据持久化

一、概述 Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的&#xff0c;然而当Redis重启后&#xff0c;所有存储在内存中的数据将会丢失&#xff0c;在很多情况下是无法容忍这样的事情的。所以&#xff0c;我们需要将内存中的数据持久化&#xff01;典型的需要持久…

【机器视觉学习笔记】生成高斯滤波器掩膜(C++)

目录原理二维高斯分布生成高斯掩膜&#xff08;小数形式&#xff09;源码及效果平台&#xff1a;Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文算法摘自高斯滤波(GaussianFilter)原理及C实现 —— 小武~~ 原理 高斯滤波和均值滤波一样&#xff0c;都是利用一个掩膜…

第18章:视频处理

第18章&#xff1a;视频处理一、VideoCapture类&#xff1a;1. VideoCapture类中相关方法介绍&#xff1a;(1) 初始化&#xff1a;(2) 初始化判断方法&#xff1a;(3) 捕获帧&#xff1a;(4) 释放&#xff1a;(5) 属性设置&#xff1a;(6) 捕获多摄像头(视频文件)数据&#xff…

C++的常量折叠(一)

前言 前几天女票问了我一个阿里的面试题&#xff0c;是有关C语言的const常量的&#xff0c;其实她一提出来我就知道考察的点了&#xff1a;肯定是const常量的内存不是分配在read-only的存储区的&#xff0c;const常量的内存分配区是很普通的栈或者全局区域。也就是说const常量只…

【机器视觉学习笔记】二值图像和灰度图像的膨胀、腐蚀、开运算、闭运算算法(C++)

目录二值图像原理腐蚀结构的原点设置在结构内部情况举例结构的原点设置在结构的外部情况举例膨胀结构的原点设置在结构的内部情况举例结构的原点设置在结构的外部情况举例开闭运算完整源码效果原图腐蚀运算膨胀运算开运算闭运算灰度图像原理腐蚀膨胀开闭运算完整源码效果原图腐…

【机器视觉学习笔记】二值图像连通区域提取算法(C++)

目录原理二值图像连通区域&#xff08;Connected Component&#xff09;连通区域分析&#xff08;Connected Component Analysis,Connected Component Labeling&#xff09;算法&#xff1a;Two-Pass&#xff08;两遍扫描法&#xff09;思路&#xff1a;Two-Pass算法的简单步骤…

【机器视觉学习笔记】Harris 角点检测算法(C++)

目录原理算法步骤优缺点源码效果原图输出平台&#xff1a;Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文摘自2、Harris角点检测算法 —— 诺亚方舟369 原理 Harris算子是对Moravec算子的改进&#xff0c;包括&#xff1a; &#xff08;1&#xff09;Harris算子用…

剖析ASSERT函数

2019独角兽企业重金招聘Python工程师标准>>> &#xfeff;&#xfeff; 搜集与总结了assert函数的用法&#xff0c;记于此&#xff0c;以备后续与查找使用&#xff1a; ****身在Windows的世界&#xff0c;但还是深爱着我的它---Linux****I love Linux forever***** …

MSP430G2553 移植 Contiki RTOS 实时操作系统

目录新建工程移植过程关于时间多任务示例main.c内存使用情况效果平台&#xff1a;Code Composer Studio 10.4.0 MSP-EXP430G2 LaunchPad 试验板 MSP430G2553 LaunchPad™ Development Kit (MSP‑EXP430G2ET) contiki下载&#xff1a;contiki-os Github 本文参考自二、Contiki…

Raphael JS 矢量客户端开源框架

之前有基于svg进行矢量绘制&#xff0c;当时是自己写的一些js类库&#xff0c;最近项目中需要&#xff0c;对Raphael做了一些了解&#xff0c;总体不错。 Raphael可以对浏览器的兼容做的不错&#xff0c;基于IE的会自动使用vml进行绘制&#xff0c;其他浏览器基于svg进行绘制&a…

mac os x10.8下如何使用git与github

2019独角兽企业重金招聘Python工程师标准>>> 1、准备工作&#xff1a; 下载安装git客户端 http://code.google.com/p/git-osx-installer/downloads/list?can3(安装了git客户端&#xff0c;命令行中才有git命令) 注册github账号 https://github.com/ -->Pricing …

使用 VS 附加到进程 调试发布的网站

适用场景&#xff1a;调试已发布的网站。 1、把项目 bin 目录下的 pdb 文件复制到服务器上相应网站的 bin 目录下。 2、把VS的调试工具中的 x64 文件夹复制到服务器任意位置。 3、服务器中打开调试工具&#xff0c;并配置端口&#xff08;注意端口是否可用&#xff09;。 4、在…

Github git 命令下载加速

目录手动输入法批处理文件系统&#xff1a;Windows 10 20H2 手动输入法 在要下载到的目录按住shift右键 选择在此处打开Powershell窗口 如要下载的仓库地址&#xff1a; 通常的git命令下载&#xff1a; git clone https://github.com/apache/incubator-nuttx.gitCNPMJS.ORG…

MySql 自动更新时间为当前时间

字段类型 : timestamp默认值 : CURRENT_TIMESTAMP如果是创建时间&#xff0c;则下面的“根据当前时间戳更新”不勾选。转载于:https://blog.51cto.com/9625815/1630767

ZKP Mathematical Building Blocks (2)

MIT IAP 2023 Modern Zero Knowledge Cryptography课程笔记 Lecture 3: Mathematical Building Blocks (Yufei Zhao) Fiat Shamir heuristic Turn an interactive proof to a non-interactive proofP can simulate V whenever V picks a random valueP can simulate V’s ran…

【AVR ASF4库函数学习笔记】一、使用Microchip Studio图形化配置工程

目录新建工程配置点灯效果平台&#xff1a;Microchip Studio (原Atmel Studio 7) 欣世纪 DMAVR-L Atmega 128A - AU 新建工程 选择所用的芯片后点击CREATE NEW PROJECT创建工程 配置 设置CPU 根据所用晶振设置频率 点灯示例&#xff1a; D7由PE7控制&#xff0c;低电平点…

Jenkins部署Web项目到远程tomcat

原网址&#xff1a;http://blog.sina.com.cn/s/blog_b5fe6b270102v7xi.html 之前讲到的是如何构建一个项目&#xff0c;并且将代码进行编译、打包&#xff0c;那么打包完成最后的结果就需要发布到应用服务器&#xff0c;将项目部署成功。在之前的项目中我们采用的shell脚本来部…