CF1208D
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的更多相关文章
- [CF1208D] Restore Permutation
传送门 题意:有一个长为\(n\)的排列\(p\),设\(S_i=\sum_{j=1}^{i-1}p_j\cdot[p_j<p_i]\),给出\(S\),要求还原出\(p\).保证有解,\(n\ ...
随机推荐
- 奇妙的算法【9】YC每个小孩的糖果数,找公约数,最少硬币数
1,每个小孩的糖果数量是多少 有p个小孩,c个糖果,刚开始第1个小孩发一个糖果,第2个小孩发两个糖果,第p个小孩发p个糖果,如果糖果没有发完,就接着[注意]第1个小孩发p+1个糖果.....第p个小孩 ...
- Word文档转PDF方法探索
最近的项目中需要将Word转换为PDF文件,找了很多方法和组件,最后找到了一些方法,和大家分享. 一.使用微软官方自带转换方法 好处是写法方便,官方支持,缺点是需要在服务器上安装office,而且要配 ...
- Java Web 深入分析(3) CDN
CDN (Content Delivery NetWork) 内容分发网络,它是构筑在现有互联网基础上的一种先进的流量分配网络.区别于镜像,相当于是 CDN = 镜像(mirror) + 缓存(Cac ...
- SpringCloud"灰度部署"——动态刷新网关配置
通过Acutator和SpringCloudConfig完成"灰度部署"——动态刷新网关路由配置 先声明下,我这个可能是冒牌的灰度部署,技术有限,纯粹个人笔记分享. 前段时间接到了 ...
- vue路由(一)
“vue.js 路由允许我们通过不同的 URL 访问不同的内容.通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)”这段是从网上直接抄 ...
- springload热更新的优缺点
java开发web应用没有.net的方便快捷, 原因是传统开发模式下新增修改代码后要查看效果, 一般要重启应用, 导致浪费了许多无谓的时间,没有.net的高效, 任意更新文件实时生效. 但是有个叫sp ...
- centos 6升级 GCC 到4.8
centos 6升级 GCC 到4.8 安装最新版本的swoole 提示 pecl install swolle ... GCC 4.8 or later required. 首先想到的时候yum ...
- Nginx系列1.1:ubuntu16.04编译nginx-rtmp流媒体服务器
1.下载nginx和nginx-rtmp-module nginx官网:nginx.org tar.gz文件 解压缩命令: wget https://nginx.org/download/nginx- ...
- java与.net_20190726
特性与注解 方法首字母 Java没有ref和out关键字 Java的main方法与C#的Main方法不一样: Java的io类和C#不一样. java的jsp和aspx还是很类似的. Java的ser ...
- Codeforces 1179 D - Fedor Runs for President
D - Fedor Runs for President 思路: 推出斜率优化公式后,会发现最优点只可能来自凸斜率中的第一个元素和最后一个元素, 这两个元素不用维护凸斜率也能知道,就是第一个和上一个元 ...