题意:

要求动态求问是否有一个 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的更多相关文章

随机推荐

  1. 矩阵十题【六】 poj3070 Fibonacci

    题目链接:http://poj.org/problem? id=3070 题目大意:给定n和10000,求第n个Fibonacci数mod 10000 的值,n不超过2^31. 结果保留四位数字. 非 ...

  2. jQuery中slideToggle()的详细使用方法和解释

    $(selector).slideToggle(speed,callback) 参数       speed和callback Speed  可选.规定元素从隐藏到显示的速度,默认‘normal’可能 ...

  3. 小程序的生命周期 launchApp

    https://developers.weixin.qq.com/miniprogram/dev/api/launchApp.html?search-key=生命周期 launchApp(OBJECT ...

  4. ubuntu16.04+cuda8.0+cudnn5.0+caffe

    ubuntu安装过程(硬盘安装)http://www.cnblogs.com/zhbzz2007/p/5493395.html“但是千万不要用麒麟版!!!比原版体验要差很多!!!”开关机的时候电脑最上 ...

  5. SSL:Ubuntu证书配置

    CA证书的配置 Ubuntu上CA证书的配置可以通过工具ca-certificates来方便的进行.该工具默认是随Ubuntu安装的,如果没有可以通过下面的命令来安装: sudo apt-get in ...

  6. nginx负载均衡设置

    在nginx的配置文件[./conf/nginx.conf]中加入: upstream test.balance123.com { server 192.168.1.223:80; server 19 ...

  7. BZOJ 1601 [Usaco2008 Oct]灌水:最小生成树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1601 题意: Farmer John已经决定把水灌到他的n(1<=n<=300 ...

  8. 使用同一个目的port的p2p协议传输的tcp流特征相似度计算

    结论: (1)使用同一个目的port的p2p协议传输的tcp流特征相似度高达99%.如果他们是cc通信,那么应该都算在一起,反之就都不是cc通信流. (2)使用不同目的端口的p2p协议传输的tcp流相 ...

  9. linux 进程学习笔记-等待子进程结束

    <!--[if !supportLists]-->Ÿ <!--[endif]-->等待子进程结束 pid_t waitpid(pid_t pid, int *stat_loc, ...

  10. POJ3468 A Simple Problem with Integers(数状数组||区间修改的RMQ问题)

    You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of op ...