》》点击进入原题测试《《

Input示例

Output示例

思路:刚开始以为结点存最大值就行了,然后大于左子树的最大值就能进入右子树;然后发现样例都过不了;后面发现,并不是这个样子,假如这个数小于等于右孩子最左边那个数的话,也不能进入有孩子,所以结点还得保存右孩子最左边的那个值;同时更新一个最大值,当输入值咸鱼等于a[0]或者大于最大值时跳过。

#include<climits>
#include<iostream>
#include<algorithm>
using namespace std; #define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define ll long long
const int maxn = 5e4 + ;
ll tree[maxn << ], mtree[maxn << ], a[maxn];
ll ma = INT_MIN; void build(int l, int r, int rt)
{
if (l == r){
tree[rt] = a[l];
mtree[rt] = a[l];
return;
}
int m = (l + r) >> ;
build(lson);
build(rson);
tree[rt] = max(tree[rt << ], tree[rt << | ]);
mtree[rt] = mtree[rt << ];
}
void update(int x, int l, int r, int rt)
{
if (l == r){
a[l] += ;
tree[rt] += ;
mtree[rt] += ;
if (a[l] > ma)ma = a[l];
return;
}
int m = (l + r) >> ;
if (tree[rt << ] < x&&x>mtree[rt << | ]) update(x, rson);
else update(x, lson);
tree[rt] = max(tree[rt << ], tree[rt << | ]);
mtree[rt] = mtree[rt << ];
}
void Print(int l, int r, int rt)
{
if (l == r){
cout << rt << " = " << tree[rt] << endl;
return;
}
cout << rt << " = " << tree[rt] << endl;
int m = (r + l) >> ;
if (l <= m)Print(lson);
if (r > m)Print(rson);
}
int main()
{
std::ios::sync_with_stdio(false);
int m, n; cin >> m >> n; for (int i = ; i <= m; i++){
cin >> a[i];
if (ma < a[i])ma = a[i];
}
build(, m, ); int temp;
while (n--){
cin >> temp;
if (temp <= a[] || temp>ma)
continue;
update(temp, , m, );
//Print(1, m, 1);
}
for (int i = ; i <= m; i++){
if (i != )cout << endl;
cout << a[i];
} }

最新文章

  1. Ext小总结
  2. git .gitignore
  3. jQuery-认识JQuery,jQuery选择器
  4. Ubuntu中vi常用命令
  5. paip.字符串操作uapi java php python总结..
  6. 黑马程序员_Java基本数据的自动拆装箱及享元设计模式视频学习笔记
  7. 近期H5项目开发小结
  8. EOJ-1708//POJ3334
  9. 网页、JavaScript 的DOM操作
  10. Java 之 HTML
  11. Asp.Net 常用工具类之Office-文档操作(6)
  12. EF 中 Code First 的数据迁移以及创建视图
  13. dotweb框架之旅 [二] - 常用对象-App(dotweb)
  14. iOS图形手势识别框架SGGestureRecognizer
  15. Http和Https有什么区别
  16. 带着新人学springboot的应用07(springboot+RabbitMQ 下)
  17. 前端使用Javascrip实现图片轮播
  18. [LeetCode] 系统刷题4_Binary Tree &amp; Divide and Conquer
  19. windows 2003 IIS 设置 FTP被动模式
  20. vue-devtools chrome 开发工具

热门文章

  1. 用户能够在下次登录系统时被重新配置---或win10早期更新不成功的bug就需要删除多余的登陆用户
  2. codeforces 402E - Strictly Positive Matrix【tarjan】
  3. 使用Gitalk实现静态页面评论的功能
  4. Classic BADI总结
  5. 一张图带你了解-常见面试之JUC包详解
  6. 自动生成 html5 小页面
  7. GitHub安装使用教程
  8. Previous operation has not finished; run &#39;cleanup&#39; if it was interrupted.SVN报错
  9. 【转】Java实现将文件或者文件夹压缩成zip
  10. Scala-基础-函数(1)