F - Desktop Rearrangement

news2024/11/16 13:51:49

大意: 

给你一个桌面状态,每次俩种操作桌面可以表示为一个大小为n×m的矩形矩阵,由字符'.'(桌面上的空单元格)和'*'(一个图标)组成。

操作:

输入<x,y>表示改变其状态的单元格的位置(如果该单元格以前包含图标,则图标被移除,否则,在该单元格中出现一个图标)。

输出:

在该状态桌面下达到合法状态的最小移动次数

#include<iostream>
#include<algorithm>
#include<vector>
#include<bitset>
#include<cmath>
#include<set>
#include<climits>
#include<map>
#include<cstring>
using i64 = int64_t;
using namespace std;
#define endl '\n'
//#define int i64
const int maxn = 1e3 + 10;
char G[maxn][maxn];
int sum[maxn * maxn];//前 i 个位置共有多少个 * 号
int n,m,cnt = 0;
int x, y;
int lowbit(int x)
{
    return x & -x;
}

void add(int x, int c)
{
    for(; x <= n * m; x += lowbit(x)) sum[x] += c;
}

int ask(int x)
{
    int res = 0;
    for (; x; x -= lowbit(x)) res += sum[x];
    return res;
}

int get(int x, int y)
{// 以列为单位映射
    return (y - 1) * n + x;
}

void solve()
{
    scanf("%d %d",&x,&y);
    int t = get(x, y);
    if(G[x][y] == '*')
    {
        G[x][y] = '.';
        add(t, -1);
        cnt --;
    }
    else
    {
        G[x][y] = '*';
        add(t, 1);
        cnt++;
    }
        //  for(int i = 1; i <= n; i ++ ){
    	// for(int j = 1; j <= m; j ++ )
        //     cout << G[i][j];
        //     cout << endl;
        //  }
      //  cout << cnt << endl;
    cout << cnt - ask(cnt) << endl;
}

signed main()
{
   //cin.tie(0) -> sync_with_stdio(false);
    int T = 1;
    cin >> n >> m >> T;
    for(int i = 1; i <= n; i++)
    scanf("%s", G[i] + 1);
    for(int i = 1; i <= n; i ++ )
        for(int j = 1; j <= m; j ++ )
            if(G[i][j] == '*') add(get(i, j), 1), cnt++;
    while(T--)
        solve();
    return 0;
}

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

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

相关文章

如何在.NET 自动安装包项目(Visual Studio Installer Projects)中设置安装包自动安装 .NET Framework环境

如何在.NET 自动安装包项目(Visual Studio Installer Projects)中设置安装包自动安装 .NET Framework环境 前言 ​ Microsoft Visual Studio Installer Projects是一组用于创建安装程序的工具&#xff0c;它是Microsoft Visual Studio的扩展。这些工具允许开发人员在Visual St…

Java开发基础系列(二):数据类型

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Java开发基础系列(二):数据类型 ⏱️ 创作时间&#xff1a; 2023年07月…

生产消费者模型

生产消费者模型概念 生产消费者模型实际上就是通过一个容器&#xff0c;将生产者和消费者之间的强耦合问题解决掉。 没有使用生产者消费者模型时&#xff0c;生产者和消费者之间直接相互联通&#xff0c;两者之间强耦合&#xff0c;若是一方更换&#xff0c;那另一方也需要随之…

在 Jetpack Compose 中使用 ViewPager

简介 Jetpack Compose 是一个现代化的&#xff0c;声明式的 UI 工具包&#xff0c;让我们可以更方便地构建原生 Android UI。在本篇文章中&#xff0c;我们将会讨论如何在 Jetpack Compose 中使用 ViewPager。 什么是 ViewPager? ViewPager 是一个提供左右滑动切换视图的 U…

DynaSLAM代码详解(2) — Mask RCNN物体检测框架

目录 2.1 前言 2.2 Mask R-CNN优点 2.3 Mask R-CNN框架解析 (1) Mask R-CNN算法步骤 (2) Faster-R-CNN (3) FCN (4) ROIPooling和ROIAlign的分析与比较 (5) Mask R-CNN损失 参考链接&#xff1a; &#xff08;1&#xff09;Mask R-CNN网络详解_fcn太阳花的小绿豆_太…

Java开发专家阿里P6-P7面试题大全及答案汇总(持续更新)二十七、Ribbon和Feign的区别...

一、CPU100%问题如何快速定位 答案 1.执行top -c &#xff0c;显示进程运行信息列表 键入P (大写p)&#xff0c;进程按照CPU使用率排序 2.找到最耗CPU的线程 top -Hp 10765 &#xff0c;显示一个进程的线程运行信息列表 键入P (大写p)&#xff0c;线程按照CPU使用率排序 …

IDEA集成Maven

目录 配置Maven环境 创建Maven项目 Maven坐标 导入Maven项目 Maven依赖管理&#xff08;核心&#xff09; 配置Maven环境 两种方法 每没创建一个maven项目都需要在项目中配置一遍在所有设置中进行全局设置&#xff0c;适用于所有的maven项目 步骤 在idea的初始界面中找到所…

ASEMI整流桥2W10的结构特点和应用领域

编辑-Z 整流桥2W10是一种常用的电子元件&#xff0c;用于将交流电转换为直流电。本文将从工作原理、结构特点、应用领域和发展趋势四个方面对整流桥2W10进行详细阐述。 工作原理 整流桥2W10是由四个二极管组成的桥式整流电路。当输入的交流电信号通过整流桥时&#xff0c;根据…

文心大模型3.5完成内测

据报道&#xff0c;日前&#xff0c;百度文心大模型3.5版本已经完成内测应用&#xff0c;并在三大公开测试集上展现了出色的表现&#xff0c;其综合能力评测得分已经超过ChatGPT&#xff0c;部分中文能力甚至超越了GPT-4。 根据《中国科学报》的报道&#xff0c;3月份&#xf…

2023年全球零信任现状报告发布丨面临集成挑战,如何突破知易行难?

近日&#xff0c;专注网络与安全融合的全球网络安全领导者Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;宣布发布《2023年全球零信任现状报告》及其调查发现。该报告揭示了零信任安全当前部署和实施现状&#xff0c;以及 IT 团队在应对后疫情时代的混合办公模式的安…

还找不到好用的UI设计工具,来看这篇

即时设计是一个基于云的在线协作工具&#xff0c;专门为国产设计团队打造。与其它在线协作工具相比&#xff0c;即时设计具有更强的项目团队合作功能&#xff0c;也更容易实现上手操作。它可以帮助企业或团队从0到1的创建、测试和交付的设计项目。在即时设计的帮助下&#xff0…

更快地分割任何事物:面向移动应用的轻量级Sam

文章目录 摘要1、简介2、相关工作3、适合移动设备的SAM3.1、背景和项目目标3.2、提出方法 4、实验4.1、实验设置4.2、MobileSAM的性能与原版SAM相当4.3、MobileSAM优于FastSAM 5、结论 摘要 https://arxiv.org/pdf/2306.14289v2.pdf 分割任何事物模型(SAM)因其令人印象深刻的零…

健身器材BS EN ISO 20957标准

健身器材出口欧洲需要符合CE认证的 BS EN ISO 20957标准&#xff0c;而且 BS EN ISO 20957规定了固定训练设备的安全要求和试验方法&#xff0c;也就是固定训练设备在使用过程中的一般安全要求。这包括用于体育协会&#xff0c;教育机构&#xff0c;酒店&#xff0c;体育馆&…

Lazada官方运营服务商分享;店铺没流量?优化好标题是关键

一.商品标题简介 Q:商品标题是什么&#xff1f; A:商家上传商品时&#xff0c;填写的标题&#xff0c;会展示在PDP页面上端 Q:为什么商品标题很重要&#xff1f; A:商品标题可根据买家搜索的关键字来将商品呈现在搜索结果中&#xff0c;因此&#xff0c;需要在商品标题中尽…

欧科云链联合大湾区警方共话区块链安全

为了应对日益严峻的区块链衍生犯罪&#xff0c;日前欧科云链联合粤港澳大湾区警务人员在深圳开展了为期一天的三地警务研讨会&#xff0c;期间获得包括香港商报、澳门日报、澳门法治报、澳门商报、香港雅虎财经等多家港澳权威媒体的报道&#xff0c;引发三地警务机关的高度关注…

ceph故障解决

今天一早发现ceph集群出错&#xff0c;根据报错&#xff0c;可以判断出是时间不同步和一个存储池没有起来导致的 一、解决时间同步 1.1检查时间同步的ntp服务是否启动&#xff08;发现有两台服务器的ntp服务关闭了&#xff09; systemctl status ntp1.2 重启ntp服务(重启服…

超详细AI二维码制作教程:手把手教你如何用Stable Diffusion 生成一个创意二维码?

AI已来&#xff0c;未来已来! 来势汹汹的人工智能&#xff0c;如同创世纪的洪水&#xff0c;正在全世界的范围内引发一场史无前例的科技革命。AI正在改变世界&#xff01;而我们正是这场巨变的见证者。 今天我们要介绍的内容就是&#xff1a;如何利用AI工具Stable Diffusion&a…

python接口自动化(二十六)--批量执行用例 discover(详解)

简介  我们在写用例的时候&#xff0c;单个脚本的用例好执行&#xff0c;那么多个脚本的时候&#xff0c;如何批量执行呢&#xff1f;这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后&#xff0c;用 unittest 里面的 TextTestRunner 这里类的 run 方…

【Docker】Docker的部署含服务和应用、多租环境、Linux内核的详细介绍

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 &#x1f4d5;作者简介&#xff1a;热…

SSH 远程口令登录及免密登录

简介&#xff1a; SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机使用SSH协议登录另一台计算机我们就可以认为这种登录时安全的&#xff0c;即使被中途截获,密码也不会泄露 安装 1.服务器安装OpenSSH(CentOS系统默认安装了openssh) 1.yum install op…