Permutacja
题意:
要求动态求问是否有一个 1~n 的排列,使得满足 $p_i \leq a_i$,给定 $a_i$ 初始值,接下来 m次单个位置修改,每次求问是否可以构造出来。
解法:
构造一序列使得 $cnt_i$ 表示 $a$ 序列当前 i 的个数,记 $suffix(i)$ 为此序列的后缀和。
那么可以构造出序列 <-> $ 0 \leq suffix(i) - (n-i+1)$,建权值线段树维护 $suffix(i) - (n-i+1)$ 即可。
#include <bits/stdc++.h> #define l(x) ch[x][0]
#define r(x) ch[x][1]
#define LL long long const int N = ; using namespace std; int totn,n,a[N];
int ch[N<<][];
LL minv[N<<],addv[N<<]; void update(int x)
{
minv[x] = min(minv[l(x)], minv[r(x)]);
} void push(int x)
{
if(addv[x]==) return;
addv[l(x)] += addv[x], minv[l(x)] += addv[x];
addv[r(x)] += addv[x], minv[r(x)] += addv[x];
addv[x] = ;
} int build(int l,int r)
{
int x = ++totn;
addv[x] = ;
if(l==r)
{
l(x) = r(x) = ;
minv[x] = -l;
return x;
}
int mid = (l+r)>>;
l(x) = build(l,mid);
r(x) = build(mid+,r);
update(x);
return x;
} void add(int x,int l,int r,int ql,int qr,LL qv)
{ push(x);
if(ql<=l && r<=qr)
{
addv[x] = qv;
minv[x] += qv;
return ;
}
int mid = (l+r)>>;
if(ql<=mid) add(l(x),l,mid,ql,qr,qv);
if(mid<qr) add(r(x),mid+,r,ql,qr,qv);
update(x);
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
a[i] = n-a[i]+;
}
build(,n);
for(int i=;i<=n;i++) add(,,n,a[i],n,);
int m;
scanf("%d",&m);
if(minv[]>=) puts("TAK");
else puts("NIE");
for(int i=,x,v;i<=m;i++)
{
scanf("%d%d",&x,&v);
v = n-v+;
add(,,n,a[x],n,-);
add(,,n,v,n,);
a[x] = v;
if(minv[]>=) puts("TAK");
else puts("NIE");
}
return ;
}
Permutacja的更多相关文章
随机推荐
- YII框架学习(二)
YII框架的增删改查 例:一个新闻表的增删改查: (1)首先使用gii工具生成控制器和模型 (2)控制器 <?php class NewsController extends Controlle ...
- 解决UICollectionView的Cell复用引起的布局混乱问题
解决UICollectionView的Cell复用引起的布局混乱问题 问题复现.gif 查了一下度娘发现没有好的解决办法,于是发动自己的聪明才智,终于找到如下解决办法(充分证明了自己动手丰衣足食啊
- VMware unrecoverable error解决方法
把开发环境部署在虚拟机里面,重装系统后不须要再反复部署开发环境. 可是有时候异常退出虚拟机会导致错误.之前出现打开虚拟机之后,系统分辨率错误,就是点击的位置和显示的位置不一样. 于是又一次关了虚拟机, ...
- uva--10714+找规律
题意: 一根长度为len的木棍上有n仅仅蚂蚁.蚂蚁们都以1cm/s的速度爬行;假设一仅仅蚂蚁爬到了木棍的端点,那么他就会掉下去;假设两仅仅蚂蚁碰到一起了,他们就会掉头往相反方向爬行.输入len和n仅仅 ...
- FPGA学习记录 - Quartus II 未使用管脚设置为三态输入
未使用管脚设置为三态输入 Assignments -> Device 或双击器件
- 【BZOJ3745】[Coci2015]Norma cdq分治
[BZOJ3745][Coci2015]Norma Description Input 第1行,一个整数N: 第2~n+1行,每行一个整数表示序列a. Output 输出答案对10^9取模后的结果. ...
- AWK命令使用
前言 文本处理三剑客中,grep强在文本查找,sed强在文本处理,现awk强在文本查找后的输出处理.awk可以在处理文本的过程中使用编程结构(变量.条件判断.循环)以及其内置的变量,这就是它强大的地方 ...
- PHP通过session id 实现session共享和登录验证的代码
先说说,这个机制的用途吧,到现在为止战地知道这个机制有两个方面的用途: 首先,多服务器共享session问题,这个大家应该都能够理解的,当一个网站的用户量过大,就会使用服务器集群,例如专门有一个登录用 ...
- Spring Boot2.0之web开发
1.关于静态资源的访问 在我们开发Web应用的时候,需要引用大量的js.css.图片等静态资源. Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则: /s ...
- 2-mybatis框架
mybatis是一个持久层的框架,是apache下的顶级项目. mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需 ...