Matrix 【POJ - 2155】【二维线段树+永久化标记】

2023-11-19

题目链接


  挺好的一道题,一开始用lazy标记往下推,总是推不出样例的正解,然后就去看了相关博客,发现却确实如此,在这里是无法用lazy标记来层层推的,并且还会出现超内存的情况,所以,便改用了永久化标记来解这道题。

  还有一件是,关于discuss里的讨论区有一块这样的讨论:

1
2 10
C 2 1 2 2
Q 2 3
C 2 1 2 1
Q 1 1
C 1 1 2 1
C 1 2 1 2
C 1 1 2 2
Q 1 1
C 1 1 2 1
Q 2 1

相信很多人是过不了上面的数据的吧!——但是你们就没发现数据本身就错了吗。。。它开的N*N的空间不对啊,怎能询问空间外的点呢?应改为:

正确样例

1
3 10
C 2 1 2 2
Q 2 3
C 2 1 2 1
Q 1 1
C 1 1 2 1
C 1 2 1 2
C 1 1 2 2
Q 1 1
C 1 1 2 1
Q 2 1

那么,我相信大家就都能过了吧。


#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#define lowbit(x) ( x&(-x) )
#define efs 1e-6
#define pi 3.141592653589793
#define e 2.718281828459045
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int maxN = 1005;
int N, Q;
short int tree[maxN<<2][maxN<<2];
void pushup(int rt, int X0)
{
    tree[X0][rt] = tree[X0][rt<<1] + tree[X0][rt<<1|1];
}
void update_In(int rt, int X0, int l, int r, int ql, int qr)
{
    if(ql == l && qr == r)
    {
        tree[X0][rt]^=1;
        return;
    }
    int mid = (l + r)>>1;
    if(ql>mid) update_In(rt<<1|1, X0, mid+1, r, ql, qr);
    else if(qr<=mid) update_In(rt<<1, X0, l, mid, ql, qr);
    else
    {
        update_In(rt<<1, X0, l, mid, ql, mid);
        update_In(rt<<1|1, X0, mid+1, r, mid+1, qr);
    }
}
void update_Out(int rt, int l, int r, int qlx, int qly, int qrx, int qry)
{
    if(qlx == l && qrx == r)
    {
        update_In(1, rt, 1, N, qly, qry);
        return;
    }
    int mid = (l + r)>>1;
    if(qlx>mid) update_Out(rt<<1|1, mid+1, r, qlx, qly, qrx, qry);
    else if(qrx<=mid) update_Out(rt<<1, l, mid, qlx, qly, qrx, qry);
    else
    {
        update_Out(rt<<1, l, mid, qlx, qly, mid, qry);
        update_Out(rt<<1|1, mid+1, r, mid+1, qly, qrx, qry);
    }
}
int query_In(int rt, int X0, int l, int r, int qy, int sum)
{
    sum^=tree[X0][rt];
    if(l == r) return sum;
    int mid = (l + r)>>1;
    if(qy>mid) return query_In(rt<<1|1, X0, mid+1, r, qy, sum);
    else return query_In(rt<<1, X0, l, mid, qy, sum);
}
int query_Out(int rt, int l, int r, int qx, int qy, int sum)
{
    sum^=query_In(1, rt, 1, N, qy, 0);
    if(l == r) return sum;
    int mid = (l + r)>>1;
    if(qx>mid) return query_Out(rt<<1|1, mid+1, r, qx, qy, sum);
    else return query_Out(rt<<1, l, mid, qx, qy, sum);
}
int main()
{
    int T;  scanf("%d", &T);
    int Cas = 0;
    while(T--)
    {
        if(Cas++ > 0) printf("\n");
        scanf("%d%d", &N, &Q);
        memset(tree, 0, sizeof(tree));
        while(Q--)
        {
            char s[3];
            scanf("%s", s);
            if(s[0] == 'C')
            {
                int lx, ly, rx, ry;
                scanf("%d%d%d%d", &lx, &ly, &rx, &ry);
                update_Out(1, 1, N, lx, ly, rx, ry);
            }
            else
            {
                int x, y;
                scanf("%d%d", &x, &y);
                printf("%d\n", query_Out(1, 1, N, x, y, 0));
            }
        }
    }
    return 0;
}

 

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

Matrix 【POJ - 2155】【二维线段树+永久化标记】 的相关文章

随机推荐

  • ChatGPT驱动下,网站AI客服该如何进步和创新

    在ChatGPT这个AI智能的驱动下 网站AI客服在进步和创新方面有很多潜力 由于GPT模型的强大语言处理能力和智能对话技巧 使得网站AI客服能够更准确和流畅地与用户交互 looklook今天总结了一些网站AI客服智能的进步和创新方向 以供
  • PLSQL安装步骤

    1 安装 下载PLSQL安装包 解压 默认安装 选择自己需要的版本安装 一路默认即可 2 添加客户端路径 解压instantclient 11 2 rar 放到自定义目录下 我是放在D盘下的Tools目录 没有配置客户端 是无法登陆的 所以
  • 什么是LLM大语言模型?

    什么是LLM大语言模型 大语言模型 英文 Large Language Model 缩写LLM 也称大型语言模型 是一种人工智能模型 旨在理解和生成人类语言 它们在大量的文本数据上进行训练 可以执行广泛的任务 包括文本总结 翻译 情感分析等
  • 美化你的Typora —— 关于MarkDown文档和newsprint.css的一点折腾

    这篇文章起源于我想美化一下Markdown样式 我在Typora官方的newsprint风格的基础上对其css进行了一系列的微调 提升了美观度和易用性 解决了如图像缩放分辨率降低 中英文字体设置等问题 文章目录 0 美化前后效果对比 1 代
  • [转] 解读IntelliJ IDEA的优缺点

    昨天去TW参加了pre class 就是类似于新员工入职前的培训 有很多很cool的东西 给我印象最深的就是IntelliJ IDEA了 coder么 刚才在网上搜了搜 发现很少有她的介绍资料 所以贴过来一个让大家看看 文章中有一句话值得大
  • ucGUI3.9版本快速移植构建

    ucGUI3 9版本快速移植构建 移植前提条件 涉及文件 移植过程 修改绘制驱动文件 修改配置文件 打包进工程 涉及的资源获取 在之前的博客中移植了STemwin5 32版本的 最近更换了 GD芯片所以STemwin没法用了 只有移植emw
  • LeetCode:三数之和&四数之和

    1 方法概述 1 前期处理 三数之和用三个指针 四数之和用四个指针 最开始都要进行从小到大的排序 2 粗处理 编写三数之和的时候第一个指针刚开始指向所给数组的第一个元素 第二个指针记为L指针 初始指向第一个指针所指元素的下一个元素 第三个指
  • 福兔迎春,春节快乐

  • ajax异步问题导致的刷新页面数据不更新

    ajax的async默认的设置值为true 这种情况为异步方式 就是说当ajax发送请求后 在等待server端返回的这个过程中 前台会继续 执行ajax块后面的脚本 直到server端返回正确的结果才会去执行success 也就是说这时候
  • Unity飞船摄像机360度环绕(逐步完善)

    极简版 目标飞船 public Transform target 摄像机距离 public float distance 100 void Update float mouseX Input GetAxis Mouse X float mo
  • Nginx知识总结

    1 简介 Nginx engine x 是一个高性能的HTTP和反向代理web服务器 同时也提供了 IMAP POP3 SMTP服务 Nginx是由伊戈尔 赛索耶夫为俄罗斯访问量第二的 Rambler ru站点开发的 第一个公开版本0 1
  • matlab制作旋转动态图,matlab 如何画动态图(绘图与旋转视图)

    效果图 在matlab中 作图是重要的一部分 那么对于三维的图像 如何将静态的改为动态的呢 首先 静态图的代码 t 0 0 1 20 i 1 200 这里只是画了一个点 而 绘图 效果图 在matlab中 作图是重要的一部分 那么对于三维的
  • docker compose 部署skywalking

    文章目录 前言 架构图 docker compose 脚本 整合springboot 前言 SkyWalking 是一个开源的 APM 系统 核心功能如下 服务 服务实例 端点指标分析 根本原因分析 服务拓扑图分析 服务 服务实例和端点依赖
  • 【SQL注入-12】http头部注入案例—基于Sqli-labs靶机(借助BurpSuite工具)

    目录 1 概述 1 1 User Agent概述 1 2 Referer 概述 2 实验平台及实验目标 2 1 实验平台 2 2 实验目标 3 User Agent注入案例 以sqli labs Less18为例 3 1 注入前准备 3 2
  • 【翻译】 DMA和get_user_pages()

    LWN net需要你 没有订阅者 LWN将根本不存在 请考虑注册订阅 帮助LWN继续出版 作者 Jake Edge 2018年12月12日 Linux管道工会议 在2018年Linux Plumbers大会 LPC 的RDMA微型会议上 J
  • 数据理解与数据准备

    1 数据类型 属性类型 属性的取值范围决定了属性的类型 定性数据 标称属性 多分类变量 二元属性 01变量 序数属性 有序分类变量 定量数据 区间标度属性 比率标度属性 区分这两种属性的原则是该属性是否有固定的零点 根据表现出来的数值特点
  • Spring关于数组、集合和Properties的注入

    在某个类中需要依赖其它类时 通常是new一个依赖类再调用类实例的方法 这种开发存在的问题是new的类实例不好统一管理 Spring提出了依赖注入的思想 即依赖类不由程序员实例化 而是通过Spring容器帮我们new指定实例并且将实例注入到需
  • prometheus实战指南

    一 prometheus概述 1 Prometheus简介 Prometheus是一套开源的系统监控报警框架 作为新一代的云原生监控系统 目前已经有上千个贡献者参与到Prometheus的研发工作上 并且超过120 项的第三方集成 Prom
  • 知识图谱快速入门

    图技术 利用neo4j networkx dgl python做图分析挖掘 1 最短路径算法dijkstra 2 基于networkx的隐性集团关系识别模型 3 基于Neo4j的担保社群型态分析挖掘 4 基于python求有向无环图中tar
  • Matrix 【POJ - 2155】【二维线段树+永久化标记】

    题目链接 挺好的一道题 一开始用lazy标记往下推 总是推不出样例的正解 然后就去看了相关博客 发现却确实如此 在这里是无法用lazy标记来层层推的 并且还会出现超内存的情况 所以 便改用了永久化标记来解这道题 还有一件是 关于discus