没必要用线段树

只是想练习一下

#pragma GCC optimize(2)
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <string>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <ctime>
#include <vector>
#include <fstream>
#include <list>
#include <iomanip>
#include <numeric>
using namespace std;
typedef long long ll;const int MAXN = 1e6 + 100;ll arr[MAXN] = {0};ll tree[MAXN * 4 + 10] = {0};void buildtree(int now, int l, int r)
{if(l == r){tree[now] = arr[l];return ;}int mid = l + (r - l) / 2;buildtree(now * 2, l, mid);buildtree(now * 2 + 1, mid + 1, r);tree[now] = max(tree[now * 2], tree[now * 2 + 1] );}ll find(int now, int l, int r, int x, int y)
{if(r < x || l > y)return -1;if(x <= l && y >= r)return tree[now];int mid = l + (r - l) / 2;ll ans = 0;ans = max(ans, find(now * 2, l, mid, x, y) );ans = max(ans, find(now * 2 + 1, mid + 1, r, x, y) );return ans;}ll findt(int now, int l, int r, int x, int y)
{if(r < x || l > y)return -1;if(x <= l && y >= r)return tree[now];int mid = l + (r - l) / 2;ll ans = 0;ans = max(ans, find(now * 2, l, mid, x, y) );ans = max(ans, find(now * 2 + 1, mid + 1, r, x, y) );return ans;}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T;cin>>T;for(int m = 1; m <= T; m++){memset(arr, 0, sizeof(arr));memset(tree, 0, sizeof(arr));int len;cin>>len;for(int i = 1; i <= len; i++){cin>>arr[i];}ll ans = 0;buildtree(1, 1, len);for(int i = 1; i <= len; i++){ans = max(ans,  findt(1, 1, len, i + 1, len) - arr[i]);}cout<<"Case #"<<m<<": "<<ans<<endl;}return 0;
}

[线段树][ZZNUOJ]易水寒相关推荐

  1. 二逼平衡树——树套树(线段树套Splay平衡树)

    题面 Bzoj3196 解析 线段树和Splay两棵树套在一起,常数直逼inf,但最终侥幸过了 思路还是比较简单, 在原数组维护一个下标线段树,再在每一个线段树节点,维护一个对应区间的权值Splay. ...

  2. 线段树——HDU - 1698

    题目含义 就是初始化一堆数为1 可以经过操作把一个区间的数都改变 并求这堆数的总大小 题目分析 有一个 #include<iostream> #include<stdio.h> ...

  3. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  4. 【线段树分治 线性基】luoguP3733 [HAOI2017]八纵八横

    不知道为什么bzoj没有HAOI2017 题目描述 Anihc国有n个城市,这n个城市从1~n编号,1号城市为首都.城市间初始时有m条高速公路,每条高速公路都有一个非负整数的经济影响因子,每条高速公路 ...

  5. [bzoj1582][Usaco2009 Hol]Holiday Painting 节日画画_线段树

    Holiday Painting 节日画画 bzoj-1582 Usaco-2009 Hol 题目大意:给定两个n*m的01网格图.q次操作,每次将第二个网格图的子矩阵全部变成0或1,问每一次操作后两 ...

  6. codefores 786B. Legacy(最短路,线段树优化拆点,好题)

    题目链接 B. Legacy time limit per test2 seconds memory limit per test256 megabytes inputstandard input o ...

  7. 【题解】BZOJ 3065: 带插入区间K小值——替罪羊树套线段树

    题目传送门 题解 orz vfk的题解 3065: 带插入区间K小值 系列题解 一 二 三 四 惨 一开始用了一种空间常数很大的方法,每次重构的时候merge两颗线段树,然后无限RE(其实是MLE). ...

  8. 树链剖分+线段树 HDOJ 4897 Little Devil I(小恶魔)

    题目链接 题意: 给定一棵树,每条边有黑白两种颜色,初始都是白色,现在有三种操作: 1 u v:u到v路径(最短)上的边都取成相反的颜色 2 u v:u到v路径上相邻的边都取成相反的颜色(相邻即仅有一 ...

  9. bzoj1095: [ZJOI2007]Hide 捉迷藏 线段树维护括号序列 点分治 链分治

    这题真是十分难写啊 不管是点分治还是括号序列都有一堆细节.. 点分治:时空复杂度$O(n\log^2n)$,常数巨大 主要就是3个堆的初始状态 C堆:每个节点一个,为子树中的点到它父亲的距离的堆. B ...

最新文章

  1. 王子朝:一种高效且容错的方法用于协作车辆定位
  2. MyBatis-plus使用
  3. HSRP和VRRP在企业网中的应用
  4. 宜出行热力图怎么抓取_滴滴听不到单怎么办?七个小技巧
  5. 全自动采集新闻站源码-单站自动采集新闻源码(seo标题伪原创)
  6. MTK 驱动(60)---Audio驱动开发之音频链路
  7. 新建jsp报错“The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path”...
  8. php 监听条码枪输入,一起看看js获取扫码枪输入数据的方法
  9. 自适应网页设计(Responsive Web Design)(转)
  10. 遗传算法求解TSP问题-python实现
  11. Unity游戏开发经验点滴
  12. CCF-CSP历年真题大全附题解(202209已更)
  13. 计算机网络之域名、主机名、IP地址和URL
  14. 停车场反向寻车实现方法和算法
  15. 1.5万倍超高回报率、融合盲盒玩法背后,NFT仍是巨鲸乐园
  16. 解读数据分析是神马?
  17. 拼图软件那个好用?好用的拼图软件分享
  18. html 实体编码转换成原字符
  19. 我的 C 语言学习生涯记——纪念 Dennis M. Ritchie
  20. Linux清理GPU显存

热门文章

  1. 合肥-NIO蔚来汽车JAVA开发
  2. python哪个方向工资高_学完Python的7大就业方向,哪个行业才能赚钱多?
  3. 技术如何转产品——1+12?
  4. win32k.sys 映射地址
  5. oracle判断字符串以什么开头_oracle 如何查找特定字母开头的某个字段?
  6. mac Anaconda matplotlib 中文乱码问题
  7. QT实现应用程序重启
  8. hadoop 错误锦集
  9. 如何玩转短视频提升影响力?
  10. Win10 Hyper-V设置文件、访问USB设备