[noi38]游戏
用线段数维护一段区间内的两个信息:1.需要多少经验就可以让有一个人升级,2.等级和。单点修改直接暴力做就可以,区间修改考虑如果这个区间不会产生升级就不递归下去而是打上懒标记。
考虑这个算法的时间复杂度:单点修改的时间复杂度为$o(log_{2}n)$,而区间修改由于每一个点最多升级n+q次,总时间复杂度为$o((n+q)log_{2}m)$,可以过。
- 1 #include<bits/stdc++.h>
- 2 using namespace std;
- 3 #define N 1000001
- 4 #define L (k<<1)
- 5 #define R (L+1)
- 6 #define mid (l+r>>1)
- 7 int n,m,q,p,x,y,z,mi[N],f[N],lazy[N],a[N];
- 8 void up(int k){
- 9 f[k]=f[L]+f[R];
- 10 mi[k]=min(mi[L],mi[R]);
- 11 }
- 12 void down(int k){
- 13 lazy[L]+=lazy[k];
- 14 mi[L]-=lazy[k];
- 15 lazy[R]+=lazy[k];
- 16 mi[R]-=lazy[k];
- 17 lazy[k]=0;
- 18 }
- 19 void update(int k,int l,int r,int x,int y,int z){
- 20 if ((l>y)||(x>r))return;
- 21 if ((x<=l)&&(r<=y)){
- 22 mi[k]-=z;
- 23 if (mi[k]>0){
- 24 lazy[k]+=z;
- 25 return;
- 26 }
- 27 if (l==r){
- 28 mi[k]-=a[f[k]+1];
- 29 f[k]=upper_bound(a+1,a+m+1,-mi[k])-a-1;
- 30 mi[k]+=a[f[k]+1];
- 31 return;
- 32 }
- 33 }
- 34 down(k);
- 35 update(L,l,mid,x,y,z);
- 36 update(R,mid+1,r,x,y,z);
- 37 up(k);
- 38 }
- 39 void update(int k,int l,int r,int x,int y){
- 40 if (l==r){
- 41 f[k]=upper_bound(a+1,a+m+1,y)-a-1;
- 42 mi[k]=a[f[k]+1]-y;
- 43 return;
- 44 }
- 45 down(k);
- 46 if (x<=mid)update(L,l,mid,x,y);
- 47 else update(R,mid+1,r,x,y);
- 48 up(k);
- 49 }
- 50 int query(int k,int l,int r,int x,int y){
- 51 if ((l>y)||(x>r))return 0;
- 52 if ((x<=l)&&(r<=y))return f[k];
- 53 down(k);
- 54 return query(L,l,mid,x,y)+query(R,mid+1,r,x,y);
- 55 }
- 56 int main(){
- 57 scanf("%d%d%d",&n,&m,&q);
- 58 for(int i=1;i<=m;i++)scanf("%d",&a[i]);
- 59 a[m+1]=0x3f3f3f3f;
- 60 for(int i=1;i<=n;i++){
- 61 scanf("%d",&x);
- 62 update(1,1,n,i,x);
- 63 }
- 64 for(int i=1;i<=q;i++){
- 65 scanf("%d%d%d",&p,&x,&y);
- 66 if (p==1){
- 67 scanf("%d",&z);
- 68 update(1,1,n,x,y,z);
- 69 }
- 70 if (p==2)update(1,1,n,x,y);
- 71 if (p==3)printf("%d\n",query(1,1,n,x,y));
- 72 }
- 73 }
[noi38]游戏的更多相关文章
- 使用HTML5开发Kinect体感游戏
一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...
- jQuery实践-网页版2048小游戏
▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...
- Unity游戏内版本更新
最近研究了一下游戏内apk包更新的方法. ios对于应用的管理比较严格,除非热更新脚本,不太可能做到端内大版本包的更新.然而安卓端则没有此限制.因此可以做到不跳到网页或应用商店,就覆盖更新apk包. ...
- 游戏服务器菜鸟之C#初探一游戏服务
本人80后程序猿一枚,原来搞过C++/Java/C#,因为工作原因最后选择一直从事C#开发,因为读书时候对游戏一直比较感兴趣,机缘巧合公司做一个手游的项目,我就开始游戏服务器的折腾之旅. 游戏的构架是 ...
- iOS审核这些坑,腾讯游戏也踩过
作者:Jamie,专项技术测试工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. WeTest 导读 在App上架苹果应用商店的过程中,相信大多数iOS开 ...
- 漫谈C#编程语言在游戏领域的应用
0x00 前言 随着微软越来越开放,C#也变得越来越吸引人们的眼球.而在游戏行业中,C#也开始慢慢地获得了关注.这不, 网易绝代双娇手游团队已经全面使用.Net Core支持前后端统一C#开发,跨平台 ...
- 解构C#游戏框架uFrame兼谈游戏架构设计
1.概览 uFrame是提供给Unity3D开发者使用的一个框架插件,它本身模仿了MVVM这种架构模式(事实上并不包含Model部分,且多出了Controller部分).因为用于Unity3D,所以它 ...
- 趣说游戏AI开发:曼哈顿街角的A*算法
0x00 前言 请叫我标题党!请叫我标题党!请叫我标题党!因为下面的文字既不发生在美国曼哈顿,也不是一个讲述美国梦的故事.相反,这可能只是一篇没有那么枯燥的关于算法的文章.A星算法,这个在游戏寻路开发 ...
- 拼图小游戏之计算后样式与CSS动画的冲突
先说结论: 前几天写了几个非常简单的移动端小游戏,其中一个拼图游戏让我郁闷了一段时间.因为要获取每张图片的位置,用`<style>`标签写的样式,直接获取计算后样式再用来交换位置,结果就悲 ...
随机推荐
- 树莓派3B搭建NODE-RED运行环境并构建数据流
树莓派3B搭建NODE-RED运行环境并构建数据流 树莓派搭建Node-RED环境 树莓派自2015年开始是默认就带NODE-RED的,但是如今已是2018年:)自带的版本已经很老了,可通过下面的命令 ...
- 中国唯一入选 Forrester 领导者象限,阿里云 Serverless 全球领先
3 月 26 日消息,权威咨询机构 Forrester 发布 2021 年第一季度 FaaS 平台评估报告,阿里云函数计算凭借在产品能力.安全性.战略愿景和市场规模等方面的优势脱颖而出,产品能力位列全 ...
- 题解 [HAOI2016]字符合并
题目传送门 Description 有一个长度为 \(n\) 的 \(01\) 串,你可以每次将相邻的 k 个字符合并,得到一个新的字符并获得一定分数. 得到的新字符和分数由这 k 个字符确定.你需要 ...
- 【分享】 一款自用的Anki卡片模板:黄子涵单词卡片 v1
[分享] 一款自用的Anki卡片模板:黄子涵单词卡片 v1 说明 第一代的功能 主要有两部分组成:英文和含义,目前主要是为自己记忆Web前端一些常用的单词而服务 有美美哒背景图,本来想修改为随机背景图 ...
- C# 三种方式实现Socket数据接收(经典)
Stream.Read 方法 当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节数. 语法: public abstract int Read(byte[] buffer, in ...
- SpringBoot-thymeleaf-静态资源引入和接管
引入前端 templates下放html页面 static下放css.js.image等静态资源 添加thymeleaf命名空间 <html lang="en" xmlns: ...
- Oracle12C安装教程
准备工作 网盘链接: https://pan.baidu.com/s/1gffHbOjImk1SfezdWO2Bpw 提取码: imft Oracle12C的安装 1.分别解压"winx64 ...
- Windows Terminal 和 WSL
Windows Terminal ,配置启动目录为 WSL : \\wsl$\Ubuntu\home
- FastAPI 学习之路(五十四)startup 和 shutdown
我们在实际的开发中呢,总会遇到这样的场景,我们想在启动或者终止的时候,做一些事情,那么应该如何实现呢,其实也是很简单.fastapi提供了这样的操作. 那么我们看下具体是怎么实现的呢 app = Fa ...
- AFO记
希望永远也不要动笔写这个. 发以自勉