首页 技术 正文
技术 2022年11月14日
0 收藏 950 点赞 3,239 浏览 1437 个字

传送门

线段树菜题。

题意:有一些卡牌,正反各有一个数,你可以任意翻转,每次操作会将两张卡牌的位置调换,你需要在每次操作后回答以现在的卡牌顺序能否通过反转形成一个单调不降的序列。


思路:

对于一个线段树节点[l,r][l,r][l,r]维护两个值mn[0/1]mn[0/1]mn[0/1]表示第lll张牌为正/反面朝上的时候如果这个区间单调不减第rrr个数最小值是多少,如果不合法就赋为infinfinf,然后按照根节点的mnmnmn判断即可。

代码:

#include<bits/stdc++.h>#define ri register int#define lc (p<<1)#define rc (p<<1|1)#define mid (T[p].l+T[p].r>>1)using namespace std;inline int read(){int ans=0;char ch=getchar();while(!isdigit(ch))ch=getchar();while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();return ans;}const int N=2e5+5,inf=0x3f3f3f3f;struct Node{int l,r,mn[2];}T[N<<2];int n,a[N][2];inline void pushup(int p){T[p].mn[0]=T[p].mn[1]=inf;if(T[lc].mn[0]<=a[mid+1][0])T[p].mn[0]=min(T[p].mn[0],T[rc].mn[0]);if(T[lc].mn[0]<=a[mid+1][1])T[p].mn[0]=min(T[p].mn[0],T[rc].mn[1]);if(T[lc].mn[1]<=a[mid+1][0])T[p].mn[1]=min(T[p].mn[1],T[rc].mn[0]);if(T[lc].mn[1]<=a[mid+1][1])T[p].mn[1]=min(T[p].mn[1],T[rc].mn[1]);}inline void build(int p,int l,int r){T[p].l=l,T[p].r=r;if(l==r){T[p].mn[0]=a[l][0],T[p].mn[1]=a[l][1];return;}build(lc,l,mid),build(rc,mid+1,r),pushup(p);}inline void update(int p,int k){if(T[p].l==T[p].r){T[p].mn[0]=a[T[p].l][0],T[p].mn[1]=a[T[p].l][1];return;}k<=mid?update(lc,k):update(rc,k),pushup(p);}int main(){n=read();for(ri i=1;i<=n;++i)a[i][0]=read(),a[i][1]=read();build(1,1,n);for(ri tt=read(),x,y;tt;--tt){x=read(),y=read();swap(a[x][0],a[y][0]),swap(a[x][1],a[y][1]);update(1,x),update(1,y);puts((T[1].mn[0]<inf||T[1].mn[1]<inf)?"TAK":"NIE");}return 0;}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,499
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,913
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,746
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,503
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,142
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,305