C. Rooks Defenders Codeforces Round #791 (Div. 2)(树状数组!)

news2024/11/19 15:28:12

传送门

题意:给你一个n*n的棋盘,然后给你一个t(t只能为1,2,3),对于不同的t产生不同的影响:

t=1时,给你一个点的坐标x,y,在这个点上生成一辆坦克(保证在这之前没有坦克)

t=2时,给你一个点的坐标x,y,把这个点上的坦克移除(保证在这之前这个点有坦克)

t=3时,给你两个点的坐标x1,y1,x2,y2,让你求两个点生成的矩阵的所有点能不能保证有一辆坦克能攻击到他,如果可以输出“Yes”,否则输出“No”。

注:每个坦克可以攻击的范围是他的一行和一列的所有格子。

思路:因为要求范围内的值,然后就是 前缀和处理,但是因为时间复杂度是1e5,所以得用树状数组减少复杂度,先创建两个,一个用来计算x(行)的前n项的和,代表有多少坦克,一个是计算y(列)的前n项和,然后这样可以计算某个范围内有多少辆坦克,但是因为我们要求的是范围内的所有的点都能被坦克攻击,那么就要保证要么每一行都有一个坦克要么每一列都有一辆坦克 ,但是我们目前的数组还求不出,(可能某一行有多个坦克)

那么我们可以再创建两个数组stx和sty,当t为1 的时候并且当前x(y)的坦克数量为1 的时候就在stx数组上加一个1表示这个地方有坦克,(t等于2同理坦克数量为0 的时候st--代表没有坦克)。

然后t等于3因为st数组存的是当前行(列)有没有坦克,那么可以用st数组来计算满不满足当前条件。

代码:

/**
*  ┏┓   ┏┓+ +
* ┏┛┻━━━┛┻┓ + +
* ┃       ┃
* ┃   ━   ┃ ++ + + +
*  ████━████+
*  ◥██◤ ◥██◤ +
* ┃   ┻   ┃
* ┃       ┃ + +
* ┗━┓   ┏━┛
*   ┃   ┃ + + + +Code is far away from  
*   ┃   ┃ + bug with the animal protecting
*   ┃    ┗━━━┓ 神兽保佑,代码无bug 
*   ┃  	    ┣┓
*    ┃        ┏┛
*     ┗┓┓┏━┳┓┏┛ + + + +
*    ┃┫┫ ┃┫┫
*    ┗┻┛ ┗┻┛+ + + +
*/

#include<cstdio>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include<vector>
#include<queue>
#include<map>
#define sc_int(x) scanf("%d", &x)
#define sc_ll(x) scanf("%lld", &x)
#define pr_ll(x) printf("%lld", x)
#define pr_ll_n(x) printf("%lld\n", x)
#define pr_int_n(x) printf("%d\n", x)
#define ll long long 
using namespace std;

const int N=100000+100;
int n ,m,h;
int xx[N],yy[N];
int stx[N],sty[N];

int lowbit(int x){return x&(-x);}

void add(int x,int sum,int a[])
{
	for(int i =x;i<=n;i+=lowbit(i))
	a[i]+=sum;
}	

int get(int x,int a[])
{
	int res=0;
	for(int i =x;i;i-=lowbit(i))
	{
		res+=a[i];
	}
	return res;
}


int main()
{
	int t;
	cin>>n>>m;
	while(m--)
	{
		int t,x,y,x1,x2,y1,y2 ;
		sc_int(t);
		if(t==1)
		{
			sc_int(x),sc_int(y);
			add(x,1,xx),add(y,1,yy);
			if(get(x,xx)-get(x-1,xx)==1)
			add(x,1,stx);
			if(get(y,yy)-get(y-1,yy)==1)
			add(y,1,sty);			
		}
		else if(t==2)
		{
			sc_int(x),sc_int(y);
			add(x,-1,xx),add(y,-1,yy);
			if(get(x,xx)-get(x-1,xx)==0)
			add(x,-1,stx);
			if(get(y,yy)-get(y-1,yy)==0)
			add(y,-1,sty);				
		}
		else {
			sc_int(x1),sc_int(y1);
			sc_int(x2),sc_int(y2);			
			if(get(x2,stx)-get(x1-1,stx)==x2-x1+1||get(y2,sty)-get(y1-1,sty)==y2-y1+1)
			printf("YES\n");
			else printf("No\n");
		}
	}
	
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模拟实战从外网打点渗透到内网域控的笔记

信息收集 本次项目是一个是模拟渗透测试 电信诈骗网站&#xff0c;境外人员依赖该网站通过优惠卷诱导受害者进行消费&#xff0c; 诈骗受害人金钱。 前台地址 项目拓扑图 http://ip/user.php?moddo&actlogin&fromtohttp%3A%2F%2F43.143.193.216%2F 后台地址 http…

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令

文章目录一、RabbitMQ安装1.1 二进制安装1.2 rabbitmqctl工具1.3 docker安装二、rabbitmq基础命令2.1 多租户与权限类2.1.1 创建虚拟主机2.1.2 查看虚拟主机信息2.1.3 删除虚拟主机2.1.4 给用户授权2.1.5 清除用户权限2.1.6 查看权限2.2 用户管理类2.2.1 创建用户2.2.2 查看用户…

爱心源码动图-Html网页运行

程序示例精选 爱心源码动图-Html网页运行 如需安装运行环境或远程调试&#xff0c;见文章底部微信名片&#xff01; 前言 Html写的追女生神器-爱心动图&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读&#xff0c;对学习与使用Html有较好的帮助。 文章目录 一、所需工具…

Redis高可用之主从复制、哨兵、cluster集群

Redis高可用之主从复制、哨兵、cluster集群Redis 高可用什么是高可用Redis的高可用技术Redis主从复制主从复制的作用主从复制流程搭建Redis主从复制所有节点安装Redis修改master节点的配置文件修改slave节点的配置文件验证主从效果Redis哨兵模式哨兵模式的作用哨兵结构故障转移…

Redis集群模式

目录 前言 一、集群的作用 二、集群模式的数据分片 三、集群模式的主从复制模型 四、Redis集群模式 Redis集群部署 开启群集功能 修改所有集群服务的配置文件端口&#xff0c;使其不一致 启动集群 集群测试 前言 1、集群&#xff0c;即 Redis Cluster&#xff0c; …

模型效果差?我建议你掌握这些机器学习模型的超参数优化方法

模型优化是机器学习算法实现中最困难的挑战之一。机器学习和深度学习理论的所有分支都致力于模型的优化。 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数。超参数与一般模型参数不同&#xff0c;超参数是在训练前提前设置的。举例来说&a…

CKA考试Tips

前言 今年黑五的双证套餐的折扣比双11时还便宜个200多,不到2000&#xff0c;应该是史低吧,反正比前年低。即使考试前看了各种避坑技巧&#xff0c;虽然通过了但是结果还是因为各种问题导致时间不够没做完扣分&#xff0c;于是下面总结一下参加CKA/CKS考试时候的技巧。 报名及考…

[基因遗传算法]进阶之四:实践VRPTW

参考资料: 《旅行商问题(TSP)、车辆路径问题(VRP,MDVRP,VRPTW)模型介绍》 本文对《基于GA算法解决VRPTW》的分析和思考.具体的代码可以参考 《Python实现(MD)VRPTW常见求解算法——遗传算法&#xff08;GA&#xff09;》 . 文章目录壹、VRPTW一. 定义类二、数据读取三. 构造初…

JVM调优手段

JDK提供命令工具 jstat 是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据&#xff0c;在没有 GUI图形界面&#xff0c;只提供了纯文本控制台环境的服务器上&#xff0c;它将是运行期定位虚拟…

博球一看,CSDN与你共观世界杯

2022卡塔尔世界杯不知不觉已接近尾声&#xff0c;不仅让人感叹&#xff0c;乌拉圭&#xff0c;巴西&#xff0c;葡萄牙都已淘汰&#xff0c;四强诞生分别是阿根廷&#xff0c;法国&#xff0c;摩洛哥&#xff0c;克罗地亚&#xff0c;非常期待梅西和魔笛的对决&#xff0c;也希…

电子学会2020年12月青少年软件编程(图形化)等级考试试卷(三级)答案解析

目录 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 二、判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 三、编程题【该题由测评师线下评分】&#xff08;共3题&#xff0c;共30分&#xff09; 青少年软件…

【云计算与大数据技术】虚拟化简介及虚拟化的分类讲解(图文解释 超详细)

一、虚拟化简介 1&#xff1a;什么是虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是在真实的、独立的物理硬件基础上运行。这种以优化资源、简化软件的重新配置过程为目的的解决方案就是虚拟化技术 虚拟化架构就是在一个物理硬件机器上同时运行多个不同应用的独立的虚拟系…

r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现|视频

Glmnet是一个通过惩罚最大似然关系拟合广义线性模型的软件包。正则化路径是针对正则化参数λ的值网格处的lasso或Elastic Net&#xff08;弹性网络&#xff09;惩罚值计算的。 最近我们被客户要求撰写关于LASSO的研究报告&#xff0c;包括一些图形和统计输出。该算法非常快&am…

电子学会2020年12月青少年软件编程(图形化)等级考试试卷(四级)答案解析

目录 一、单选题&#xff08;共15题&#xff0c;每题2分&#xff0c;共30分&#xff09; 二、判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 三、编程题【该题由测评师线下评分】&#xff08;共4题&#xff0c;共50分&#xff09; 青少年软件…

51单片机——LED 点阵点亮一个点,小白详解

LED点阵介绍&#xff1a; LED点阵是由发光二极管排列组成的显示器件&#xff0c;在我们生活中的电器中随处可见&#xff0c;被广泛用于汽车报站器&#xff0c;广告屏等。 通常用用较多的是8*8点阵&#xff0c;然后使用多个8*8点阵组成不同分辨率的LED点阵显示屏&#xff0c;比如…

kubernetes--kube-proxy组件深入理解

文章目录kube-proxy的工作原理netfilter的运行机制ipvs和iptables有什么区别&#xff1f;iptables在网络栈的hook点更多&#xff0c;而ipvs的hook点很少iptables的hook点ipvs的hook点如何切换&#xff1f;ipvs安装为何推荐ipvs&#xff1f;为什么iptables或者ipvs在每个节点上都…

面试官:你会几种分布式 ID 生成方案???

1. 为什么需要分布式 ID 对于单体系统来说&#xff0c;主键 ID 常用主键自动的方式进行设置。这种 ID 生成方法在单体项目是可行的&#xff0c;但是对于分布式系统&#xff0c;分库分表之后就不适应了。比如订单表数据量太大了&#xff0c;分成了多个库&#xff0c;如果还采用…

基于java+springboot+mybatis+vue+mysql的福聚苑社区团购

项目介绍 随着互联网的发展&#xff0c;各种团购模式也越来越多&#xff0c;尤其是最近几年的社区团购模式更是如火如荼的在进行着&#xff0c;我了能够让大家品味到更多的瓜果蔬菜&#xff0c;我们通过java语言&#xff0c;springboot框架、前端vue技术、数据库mysql开发了本…

使用Hilt搭建隔离层架构

在我们的日常编码的过程中&#xff0c;常常会遇到这种需求。例如&#xff1a;这个版本我们使用okhttp作为网络通信库&#xff0c;如果下个版本我们想要用volley作为网络通信库&#xff0c;那该怎么办呢&#xff1f;我们总不能对使用okhttp的地方一个个改成volley吧&#xff01;…

上班都在刷的Java八股文,老板都想要一份?

今天心血来潮刷刷牛客看到这&#xff0c;小伙在上班刷八股文被老板逮到&#xff01;真行啊&#xff0c;结果还让他给老板也发一份&#xff0c;感觉过不了多久就跟老板一起提桶跑路了 说到这&#xff0c;我最近也整理了GitHub上高标星的面试八股文&#xff0c;这种金九银十的节骨…