[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>`标签写的样式,直接获取计算后样式再用来交换位置,结果就悲 ...
随机推荐
- VulnHub 实战靶场Breach-1.0
相比于CTF题目,Vulnhub的靶场更贴近于实际一些,而且更加综合考察了知识.在这里记录以下打这个靶场的过程和心得. 测试环境 Kali linux IP:192.168.110.128 Breac ...
- 深入思考软件工程,开启 DevOps 之旅
20 世纪 60 年代,软件开始脱离硬件,逐渐成为一个独立产业.至今,软件开发过程从瀑布模型.CMM/CMMI,到 20 年前敏捷的诞生,再到今天 DevOps 的火热,一代代软件人在思考和探索,如何 ...
- redis学习笔记-01 string类型命令
一.set key value set joker 123456 #设定key为joker,value为123456的数据 二.keys * keys * #用于查看该数据库中所有的key值 三.se ...
- mysql select语句查询流程是怎么样的
select查询流程是怎么样的 mysql select查询的数据是查询内存里面,如果没有查询的数据没有在内存,就需要mysql的innodb引擎读取磁盘,将数据加载的内存后在读取.这就体现了,mys ...
- Windows用cmd编译运行C程序
在Windows环境下用命令行编译运行程序 浙江大学-C语言程序设计进阶 配置gcc 准备一个Dev-cpp 找到gcc.exe所在目录 Dev-Cpp\MinGW64\bin 地址栏右键将地址复制为 ...
- [源码解析]PyTorch如何实现前向传播(2) --- 基础类(下)
[源码解析]PyTorch如何实现前向传播(2) --- 基础类(下) 目录 [源码解析]PyTorch如何实现前向传播(2) --- 基础类(下) 0x00 摘要 0x01 前文回顾 0x02 Te ...
- stm32f103系列引脚定义-功能图
器件功能和配置(STM32F103xx增强型) STM32F103xx增强型模块框架图 STM32F103xx增强型VFQFPN36管脚图 STM32F103xx增强型LQFP100管脚图 STM32 ...
- [个人开源]vue-code-view:一个在线编辑、实时预览的代码交互组件
组件简介 vue-code-view是一个基于 vue 2.x.轻量级的代码交互组件,在网页中实时编辑运行代码.预览效果的代码交互组件. 使用此组件, 不论 vue 页面还是 Markdown 文档中 ...
- Ubuntu Python2 和 Python3 共存 切换
例如 你写了代码 创建一个文件 在终端 vim test.py 然后写入代码 print "hello world" 接着运行代码 python test.py 会输出 hello ...
- POJ 1442 Air Raid(DAG图的最小路径覆盖)
题意: 有一个城镇,它的所有街道都是单行(即有向)的,并且每条街道都是和两个路口相连.同时已知街道不会形成回路. 可以在任意一个路口放置一个伞兵,这个伞兵会顺着街道走,依次经过若干个路口. 问最少需要 ...