CF1208D

题意;

给你一个数组,要求支持单点修改和单点查询

解法:

直接线段树搞一搞就没了。

CODE:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring> #define lson x << 1
#define rson x << 1 | 1
#define mid (l + r)/2 #define LL long long using namespace std; const int N = 200010; struct Tree {
LL minv;
LL sum;
}tree[N * 4]; int n, m, p[N];
LL s[N]; void pushup(int x) {
tree[x].minv = min(tree[lson].minv, tree[rson].minv);
}
void pushdown(int x) {
if (tree[x].sum) {
tree[lson].sum += tree[x].sum;
tree[rson].sum += tree[x].sum;
tree[lson].minv += tree[x].sum;
tree[rson].minv += tree[x].sum;
tree[x].sum = 0;
}
}
void build(int x, int l, int r) {
if (l == r) {
tree[x].minv = s[l];
return;
}
build(lson, l, mid);
build(rson, mid + 1, r);
pushup(x);
}
void update(int x, int l, int r, int ll, int rr, int v) {
if (ll > rr)return;
if (l >= ll && r <= rr) {
tree[x].sum += v;
tree[x].minv += v;
return;
}
pushdown(x);
if (ll <= mid) update(lson, l, mid, ll, rr, v);
if (rr > mid) update(rson, mid + 1, r, ll, rr, v);
pushup(x);
}
int query(int x, int l, int r) {
if (l == r) {
tree[x].minv = 1e18;
return l;
}
pushdown(x);
int ans = 0;
if (tree[rson].minv == 0)
ans = query(rson, mid + 1, r);
else ans = query(lson, l, mid);
pushup(x);
return ans;
} int main() {
scanf("%d",&n);
for(int i = 1; i <= n; i++)
scanf("%lld",&s[i]);
build(1, 1, n);
for(int i = 1; i <= n; i++) {
int x = query(1, 1, n);
p[x] = i;
update(1,1,n,x + 1,n,-i);
}
for(int i = 1; i <= n; i++)
printf("%d ",p[i]);
printf("\n");
return 0;
}

CF1208D的更多相关文章

  1. [CF1208D] Restore Permutation

    传送门 题意:有一个长为\(n\)的排列\(p\),设\(S_i=\sum_{j=1}^{i-1}p_j\cdot[p_j<p_i]\),给出\(S\),要求还原出\(p\).保证有解,\(n\ ...

随机推荐

  1. aspnet core 全局模型验证,统一api响应

    上手就来 新建一个模型验证过滤器,其中ApiResp是自定义的统一响应类. public class VldFilter:IActionFilter { /// <summary> /// ...

  2. ASP.NET WEB应用程序(.network4.5)MVC Razor视图引擎2

    https://www.bbsmax.com/A/gAJG67OXzZ/ 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASP ...

  3. jQuery_jQuery的基本使用

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. ipp 实现图像空间的转换

    下载:https://software.intel.com/en-us/parallel-studio-xe/choose-download/free-trial-cluster-windows-c- ...

  5. 华为Python面试题

    最近在网上偶然看到此题: 有两个序列a,b,大小都为n,序列元素的值任意整形数,无序: 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小 经过一番思索,我试着用穷举法 ...

  6. 2019年Java后端工程师常见面试题和感想

    来新公司有5个月了,从第二个月开始就参与公司后端工程师的面试工作了,包括校招在内,面试超过100个(包括40个校招的终面)应聘者了,应聘者中有超过10年的技术经理,有6年以上的高级开发,有3到5年的中 ...

  7. 3.Redis数据类型

    Redis的五大数据类型: 1.string(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. string类型是二进制安 ...

  8. Signal Processing and Pattern Recognition in Vision_15_RANSAC:Performance Evaluation of RANSAC Family——2009

    此部分是 计算机视觉中的信号处理与模式识别 与其说是讲述,不如说是一些经典文章的罗列以及自己的简单点评.与前一个版本不同的是,这次把所有的文章按类别归了类,并且增加了很多文献.分类的时候并没有按照传统 ...

  9. http服务详解(1)

    前言:要熟练掌握一个服务,首先需要非常了解这个服务的工作过程. 跨网络的主机间通讯 在建立通信连接的每一端,进程间的传输要有两个标志: IP地址和端口号,合称为套接字地址 socket address ...

  10. 向量的一种特殊乘法 element wise multiplication

    向量的一种特殊乘法 element wise multiplication 物体反射颜色的计算采用这样的模型: vec3 reflectionColor = objColor * lightColor ...