题面

一个长度为M的正整数数组A,表示从左向右的地形高度。测试一种加农炮,炮弹平行于地面从左向右飞行,高度为H,如果某处地形的高度大于等于炮弹飞行的高度H(Ai >= H),炮弹会被挡住并落在i - 1处,则Ai−1 + 1。如果H <= A0,则这个炮弹无效,如果H > 所有的Ai,这个炮弹也无效。现在给定N个整数的数组B代表炮弹高度,计算出最后地形的样子。
例如:地形高度A = {1, 2, 0, 4, 3, 2, 1, 5, 7}, 炮弹高度B = {2, 8, 0, 7, 6, 5, 3, 4, 5, 6, 5},最终得到的地形高度为:{2, 2, 2, 4, 3, 3, 5, 6, 7}。
1 <= m, n <= 50000 0 <= Ai <= 1000000 0 <= Bi <= 1000000

分析

依次加入每个炮弹,线段树维护最大值,每次找出第一个高度大于等于当前炮弹飞行高度的位置,修改此位置前一个位置的高度。
感觉是个模拟..

代码

#include<bits/stdc++.h>
using namespace std;
#define N 50050
#define lc (p<<1)
#define rc (p<<1|1)
#define mid (t[p].l+t[p].r>>1)
int n,m,x,k;
int a[N];
struct email
{int l,r,maxx;
}t[N*4];inline void pushup(int p)
{t[p].maxx=max(t[lc].maxx,t[rc].maxx);
}inline void build(int p,int l,int r)
{t[p].l=l;t[p].r=r;if(l==r){t[p].maxx=a[l];return ;}int bm=l+r>>1;build(lc,l,bm);build(rc,bm+1,r);pushup(p);
}inline void update(int p,int x)
{if(t[p].l==t[p].r){t[p].maxx=a[x];return ;}if(x<=mid)update(lc,x);if(x>mid)update(rc,x);pushup(p);
}inline int query(int p,int x)
{if(t[p].l==t[p].r)return t[p].l;if(x<=t[lc].maxx)return query(lc,x);if(x>t[lc].maxx)return query(rc,x);
}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);build(1,1,n);for(int i=1;i<=m;i++){scanf("%d",&x);if(x<=a[1]||x>t[1].maxx)continue;k=query(1,x);a[k-1]++;update(1,k-1);}for(int i=1;i<=n;i++)printf("%d\n",a[i]);return 0;
}

转载于:https://www.cnblogs.com/NSD-email0820/p/9806373.html

【51NOD1287】加农炮相关推荐

  1. 51nod 1287: 加农炮 好题啊好题

    1287 加农炮 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 一个长度为M的正整数数组A,表示从左向右的地形高度. ...

  2. 解题报告:51nod 加农炮

    2017-10-07 16:15:16 writer:pprp 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 一个长度为M的正整数数 ...

  3. Qt4_你可以使用加农炮了

    简介 在这个例子中我们开始画一个蓝色可爱的小加农炮. lcdrange.h包含LCDRange类定义 lcdrange.cpp包含LCDRange类实现 cannon.h包含CannonField类定 ...

  4. NUC1170 加农炮

    加农炮 时间限制: 1000ms 内存限制: 65536KB 问题描述 四面体数是指一个以三角形为基的金字塔的总点数.一个用加农炮构建的5层三角形金字塔共含有35个炮弹.如下图: 请写程序计算加农炮的 ...

  5. 【BHOJ 女娲加农炮 |、||】贪心 | 优先队列 | 堆 | E

    这次我们通过两道例题来总结一下优先队列的用法和实现: 目录: [BHOJ 1512]女娲加农炮 [BHOJ 1517]女娲加农炮II [BHOJ 1512]女娲加农炮 核心:贪心 + 优先队列 URL ...

  6. 部落冲突-家乡防御建筑-加农炮(1级至20级)

    加农炮很适合防御单个目标.升级加农炮可以增强火力.注意!防御建筑在升级时不能开火! 1 防御模式 1.1 标准模式 1.2 连发模式 2 加农炮(1级) 3 加农炮(2级) 4 加农炮(3级) 5 加 ...

  7. 部落冲突-家乡防御建筑介绍(城墙、加农炮、箭塔、迫击炮、防空火箭、法师塔、空气炮、特斯拉电磁塔、炸弹塔、X连弩、地狱之塔、天鹰火炮、投石炮)

    1 城墙(1级至15级) 城墙是保护村庄.阻挡敌军的最好防线. 2 加农炮(1级至20级) 加农炮很适合防御单个目标.升级加农炮可以增强火力.注意!防御建筑在升级时不能开火! 部落冲突-家乡防御建筑- ...

  8. Python 小游戏—加农炮送特朗普上太阳

    美股熔断历史上只发生过4次,上上次熔断和上一次熔断,还要追溯到2020年3月9日和2020年3月13日,那两天我的记忆很深刻,那感觉,仿佛就在几天前. 话又说回来了,特朗普可是说过狠话的: 这是在20 ...

  9. 51NOD 1287 加农炮(不水的线段树)

    >>点击进入原题测试<< Input示例 9 11 1 2 0 4 3 2 1 5 7 2 8 0 7 6 5 3 4 5 6 5 Output示例 2 2 2 4 3 3 5 ...

最新文章

  1. 科技创新2030---“新一代人工智能”重大项目2018年度项目申报指南征稿
  2. Apache 'mod_accounting'模块SQL注入漏洞(CVE-2013-5697)
  3. 【django】配置Jinja2模板引擎【2】
  4. 里面怎么缓存图片_浏览器缓存原理总结
  5. weblogic11g集群配置
  6. Java 时断时续之————Java事件
  7. 只听几句话,百度AI就能模仿你的声音 | 附论文
  8. mysql转txt_MyToTxt-MySQL转Txt工具下载 v3.6 官方版 - 安下载
  9. Luogu P1963 [NOI2009]变换序列(二分图匹配)
  10. 杜比服务器系统安装,小编教你给Win10系统安装杜比音效驱动的方法
  11. MXY---Docker
  12. markdown下载
  13. win7 局域网共享文件
  14. 零基础如何从零开始运营微信公众号
  15. 新手选择蓝牙耳机要注意什么?双11发烧友疯狂推荐五款蓝牙耳机
  16. 小猿学python_小猿圈详解小白如何学习Python网络爬虫
  17. 稻盛和夫的人生法则,所谓人生赢家,不过是拥有“利他心”
  18. cp 命令 复制文件及目录
  19. 盘点世界十大著名黑客攻击事件
  20. 树莓派 ubuntu gpio_树莓派自动温控风扇

热门文章

  1. 我的第一个 Mono for Android 应用
  2. 【20160924】GOCVHelper综述
  3. SQL Server安装问题 mof 编译器无法连接到wmi服务器 不能在控件上调用Invoke或 BeginInvoke...
  4. Application failure. hr=0x80040101:Failed to initialize virtual machine.
  5. docker centos7 chrome 安装并且支持局域网远程调试
  6. DELL服务器利用OMSA修改BIOS设置
  7. 10年程序员总结的20几条经验教训
  8. proc_open 命令包含“有小问题
  9. mysql function 与 procedure
  10. 在进度面前,质量该不该打折?