爱线段树的好孩子[POI2014]KAR-Cards

2023-10-27

There are nn cards arranged on a table in a certain order.

Two integers are written on each card, one per side: the obverse and the reverse.

Initially all cards lie with the averse facing up.

Byteasar, The Great Illusionist, intends to perform (multiple times!) his signature Binary Search Card Manipulation. However, to present it, he needs the sequence of numbers as seen on the cards to be non-decreasing.

Thus, Byteasar may have to turn over some cards so that the numbers on their reverse sides become visible.

Furthermore, the illusion requires a participant from the audience.

Alas, some of the volunteers are deployed by Byteasar's competitors who want him to fail.

Each such supposititious volunteer, upon entering the scene, would swap two cards on the table in a lightning move of a hand. After each such swap, Byteasar can again turn over any cards he desires but nevertheless, he may not be able to perform his great illusion.

If that were to happen, he would be forced to turn to traditional illusions, such as pulling a rabbit out of a hat.

Write a program that determines, after each card swap, if Byteasar can perform his great illusion.

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

维护:当前选这个数右端点最小值为多少

#include<bits/stdc++.h>
using namespace std;
#define lc (p<<1)
#define rc (p<<1|1)
const int INF=1e9+7;
const int N=2e5+100;
inline void read(int &x){
    x=0;
    int f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=x*10+ch-'0';
        ch=getchar();
    }
    x*=f;
}
int a[N<<2][2];
struct Sgement_Tree{	
    int T[N<<2][2];
    void PushUp(int p,int l,int r){
        T[p][0]=T[p][1]=INF;
        int mid=(l+r)>>1;
        if(T[lc][0]<=a[mid+1][0])T[p][0]=min(T[p][0],T[rc][0]);
        if(T[lc][1]<=a[mid+1][0])T[p][1]=min(T[p][1],T[rc][0]);
        if(T[lc][0]<=a[mid+1][1])T[p][0]=min(T[p][0],T[rc][1]);
        if(T[lc][1]<=a[mid+1][1])T[p][1]=min(T[p][1],T[rc][1]);
    }
    void build(int p,int l,int r){
        if(l==r){
            T[p][0]=a[l][0];
            T[p][1]=a[l][1];
            return;
        }
        int mid=(l+r)>>1;
        build(lc,l,mid);
        build(rc,mid+1,r);
        PushUp(p,l,r);	
    }
    void Update(int p,int l,int r,int pos){
        if(l==r){
            T[p][0]=a[l][0];
            T[p][1]=a[l][1];
            return;
        }
        int mid=(l+r)>>1;
        if(pos<=mid)Update(lc,l,mid,pos);
        else Update(rc,mid+1,r,pos);
        PushUp(p,l,r);
    }
}Solution;
int n,m;
int main(){
//	freopen("test.in","r",stdin);
    read(n);
    for(int i=1;i<=n;++i)read(a[i][0]),read(a[i][1]);
    Solution.build(1,1,n);
    read(m);
    for(int i=1;i<=m;++i){
        int x,y;
        read(x);
        read(y);
        swap(a[x][0],a[y][0]);
        swap(a[x][1],a[y][1]);
        Solution.Update(1,1,n,x);
        Solution.Update(1,1,n,y);
        if(Solution.T[1][0]<INF||Solution.T[1][1]<INF)cout<<"TAK"<<'\n';
        else cout<<"NIE"<<'\n';
    }
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爱线段树的好孩子[POI2014]KAR-Cards 的相关文章

随机推荐

  • 二、Java代码实现冒泡排序

    冒泡排序描述 关键 相邻的两个元素进行比较 依次比较数组中相邻两个元素大小 若 a j gt a j 1 则交换两个元素 两两都比较一遍 就是一轮冒泡 结果是一轮冒泡后最大的元素排到了最后 重复以上的步骤 直到整个数组有序就行了 冒泡的优化
  • 字典序算法详解

    一 字典序 字典序 就是按照字典中出现的先后顺序进行排序 1 单个字符 在计算机中 25个字母以及数字字符 字典排序如下 0 lt 1 lt 2 lt lt 9 lt a lt b lt lt z 比如在 python 中 0 lt 9 l
  • R语言初学者必备的10个实用函数

    R语言初学者必备的10个实用函数 R语言是一种流行的数据分析和统计建模工具 它提供了丰富的函数和库来处理和分析数据 对于初学者来说 掌握一些常用的实用函数将使他们更加高效地使用R语言进行数据处理和可视化 本文将介绍10个初学者必备的实用函数
  • CPU上下文切换

    文章目录 CPU上下文切换 什么是CPU上下文 进程上下文切换 特权模式切换 进程上下文切换与系统调用的区别 什么时候会切换进程上下文 线程上下文切换 中断上下文切换 监控上下文切换 vmstat pidstat 减少上下文切换 CPU上下
  • 生命在于学习——网站Getshell的方法

    PS 本篇文章仅用于学习笔记记录 不可用于其他用途 一 通用getshell方法 1 任意文件上传 1 注意编程语言 asp aspx php jsp 2 上传成功 但是访问直接下载文件 以文本展示 原因 文件没有被解析 3 上传成功 蚁剑
  • Burp Suite软件常用模块

    目录 1 Proxy 代理模块 2 Repeater模块 请求重放 3 Intruder模块 入侵自动化攻击 Intruder的4种攻击模式 1 Sniper模式 狙击手模式 2 Battering ram模式 攻城锤模式
  • 解决HC05蓝牙模块主从配对失败及AT模式设置方案

    解决HC05蓝牙模块主从配对失败及AT模式设置方案 原创文章 转载请注明 本文为电脑端配置 关于连线 关于串口调试工具 关于AT指令与蓝牙模块配对 关于测试验证 原创文章 转载请注明 本文为电脑端配置 最近在做一个开源的Vorpal Hex
  • HBase拆分策略

    转载自 http blog javachen com 2014 01 16 hbase region split policy html Region 概念 Region是表获取和分布的基本元素 由每个列族的一个Store组成 对象层级图如
  • 图像相关算法整理

    图像相关算法整理 1 HE算法 灰度直方图均衡算法 原理 将原始图像的灰度直方图从比较集中地某个灰度区间变成全部灰度范围内的均匀分布 步骤 1 遍历每一帧图像中的所有像素 记录每个灰度值出现的像素个数 2 统计每个灰度值占总像素的百分比 即
  • C语言占位符 格式占位符

    常用占位符 d i 代表整数 f 浮点数 s 字符串 c char p 指针 fL 长log e 科学计数法 g 小数或科学计数法 C语言中的格式占位符 a A 读入一个浮点值 仅C99有效 c 读入一个字符 d 读入十进制整数 i 读入十
  • Dev-C++使用教程,将你编写第一个C语言代码,实现输出Hello world

    安装好Dev C 软件 方法 步骤 1 打开安装好的Dev C 软件 初始界面如下 2 然后选择左上角文件 依次选择新建 gt 源代码 或者使用快捷键ctrl n 新建一个项目 就可以编写代码了 3 这里以输出Hello world 为例
  • java基础

    java命名规范 驼峰命名 见名知意 1 项目名全部小写 2 包名全部小写 以域名开头 3 类名首字母大写 如果类名由多个单词组成 每个单词的首字母都要大写 如 public class MyFirstClass 4 变量名 方法名首字母小
  • Learning to Navigate in Cities Without a Map 理解

    问题定义 在真实世界中进行无定位辅助 类似于人直觉长距离导航 输入为当前的视觉输入和目标地点 输出就是接下来应该怎么走 才能到达目的地 PS Navigation相比于planning来说更加粗糙 就是不需要具体到某个地点 而是一个大概的方
  • 06黑马数据结构笔记之栈的链式存储(简单)

    06黑马数据结构笔记之栈的链式存储 简单 1 思想 同样以挂钩的方式存储数据 但栈的链式存储与上一篇顺序存储有点区别 顺序存储在数组的尾部满足先进后出 所以每次对栈顶即数组尾部进行插入删除就可以满足 而栈的链式存储在链表的头满足先进后出 所
  • 中国矿业大学徐海学院最不常见的网络工程计算机毕业设计题目推荐50例

    之前有矿业大学徐海学院的童鞋在后台找我们 最近要准备毕业设计了 不会选题 希望可以帮忙给一些毕业设计题目 我整整花了一周把之前做的答辩通过的毕业设计成品进行整理 并精选一些容易实现且不会刷下来的题目列举下 网络工程毕业设计题目推荐1 10题
  • 错误记录:Invalid bound statement (not found)

    场景 在跟随某课程学习 SpringBoot 使用 Mybatis 时出现该错误 查阅各种博客 基本上都说是某个参数配置错误 但仔细检查后 并没有发现任何错误 解决方法 后面偶然间发现某位博主的文件存放路径与视频课程中不同 尝试将 xml
  • mybatis mysql 乐观锁_MyBatis实现乐观锁和悲观锁

    使用mysql做数据库 mybatis做orm的系统中 mybatis的乐观锁和悲观锁实际上就是mysql的乐观锁和悲观锁 实例中使用springboot整合mybatis 一并记录了 添加依赖 mysql mysql connector
  • Python突破某网游游戏JS加密限制,进行逆向解密,实现自动登录

    前言 大家早好 午好 晚好吖 欢迎光临本文章 今天来分享一下如何使用Python突破某网游游戏JS加密限制 进行逆向解密 实现自动登录 逆向目标 目标 某 7 网游登录 主页 aHR0cHM6Ly93d3cuMzcuY29tLw 接口 aH
  • vscode炫酷写代码插件Power Mode

    老规矩先看下效果 第一 扩展栏搜索 Power Mode 安装 安装完了别忘了重启 第二 文件 gt 首选项 gt 设置 gt 点击在setting json中编辑 powermode enabled true 是否开启 powermode
  • 爱线段树的好孩子[POI2014]KAR-Cards

    There are nn cards arranged on a table in a certain order Two integers are written on each card one per side the obverse