Educational Codeforces Round 123 (Rated for Div. 2) D. Cross Coloring

news2024/9/23 19:25:02

Problem - D - Codeforces

翻译:

有一张纸,可以用大小为𝑛×𝑚:𝑛行和𝑚列的单元格表示。所有的细胞最初都是白色的。

𝑞操作已应用到工作表。他们的𝑖-th可以描述如下:

𝑥𝑖𝑦𝑖-选择一个𝑘非白色和颜色的整个行𝑥𝑖和整个列𝑦𝑖。新颜色应用于每个单元格,而不管该单元格在操作之前是否被着色。
应用所有𝑞操作后的纸张称为着色。如果存在至少一个单元格以不同的颜色着色,则两种着色是不同的。

有多少种不同的颜色?打印数字模998244353。

输入
第一行包含一个整数𝑡(1≤𝑡≤104)——测试用例的数量。

测试用例的第一行包含四个整数𝑛、𝑚、𝑘和𝑞(1≤𝑛,𝑚,𝑘,𝑞≤2⋅105)——纸张的大小、非白色颜色的数量和操作的次数。

下面的𝑞行中的𝑖-th包含了对𝑖-th操作的描述—两个整数𝑥𝑖和𝑦𝑖(1≤𝑥𝑖≤𝑛;1≤𝑦𝑖≤𝑚)—操作应用到的行和列。

𝑞对所有测试用例的和不超过2⋅105。

输出
对于每个测试用例,打印一个整数——对998244353模的不同颜色的数量。

例子
inputCopy
2
1 1 3 2
1
1
2 2 2 3
2 1
1
2 - 2
outputCopy
3.
4

思路:

根据已给的顺序来进行涂颜色,然后最后计算有多少种不同颜色的方案。正着模拟,我们就需要全部模拟一下,然后再bfs/dfs查找连通块的数量。数据范围过大会直接T掉。正难则反,我们倒着来的话,会发现我们只需要记录每行每列的数量就可以了,如果满足了行或者列就可以break,因为是最后涂的,所以不用担心被覆盖。

代码:

#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include <stdio.h>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<tuple>
#include<numeric>
#include<stack>
using namespace::std;
typedef long long  ll;
int n,t;
inline __int128 read(){
    __int128 x = 0, 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();
    }
    return x * f;
}
inline void print(__int128 x){
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        print(x / 10);
    putchar(x % 10 + '0');
}
const ll mod=998244353;
int m,k,q;
struct we{
    int x,y;
}c[200005];
bool h[200005],l[200005];
ll ksm(ll x,ll y){
    ll oper=1;
    while (y) {
        if (y&1) {
            oper=oper*x%mod;
        }
        x=x*x%mod;
        y>>=1;
    }
    return oper%mod;
}
void solv(){
    cin>>n>>m>>k>>q;
    
    for (int i =1; i<=n; i++) {
        h[i]=false;
    }
    for (int i =1; i<=m; i++) {
        l[i]=false;
    }
    
    for (int i=0; i<q; i++) {
        cin>>c[i].x>>c[i].y;
    }
    int na=0;
    int h1=0,l1=0;
    for (int i=q-1; i>=0; i--) {
        if (l1==m||h1==n) {
            break;
        }
        if (h[c[i].x]&&l[c[i].y]) {
            continue;
        }
        
        if (!h[c[i].x]) {
            h[c[i].x]=true;
            h1++;
        }
        if (!l[c[i].y]) {
            l[c[i].y]=true;
            l1++;
        }
        na++;
    }
    printf("%lld\n",ksm(k, na));
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(); cout.tie();
    cin>>t;
    while (t--) {
        solv();
    }
    return 0;
}
 

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

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

相关文章

前端工程化项目的思考

这是一篇个人使用前端工程开发项目的思考&#xff0c;希望可以帮助到你。完全是一篇综合概念应该是很多东西&#xff0c;我也不清楚会有多少字&#xff0c;估计会对刚刚开始的人看起来比较迷&#xff0c;但也是没有办法的事情 1.前端脚本语言开发的作者我想应该也想不到js会发展…

Spark

1 Spark作业提交流程 2 Spark提交作业参数 1&#xff09;在提交任务时的几个重要参数 executor-cores —— 每个executor使用的内核数&#xff0c;默认为1&#xff0c;官方建议2-5个 num-executors —— 启动executors的数量&#xff0c;默认为2 executor-memory —— executor…

【OpenCV学习】第9课:形态学操作的应用-提取水平线丶垂直线

仅自学做笔记用,后续有错误会更改 理论 图像在进行形态学操作的时候&#xff0c; 可以通过自定义的结构元素实现结构元素对输入图像的一些对象敏感丶对另外一些对象不敏感&#xff0c; 这样就会让敏感的对象改变而不敏感的对象保留输出。 通过使用两个最基本的形态学操作 - 膨…

华为云服务-运维篇-弹性负载均衡

文章目录一、什么是负载均衡二、我们为什么需要负载均衡1、生活中需要它的类似场景2、生活场景中协调者&#xff08;负载均衡)作用3、协调者&#xff08;负载均衡)引入后的变化三、华为云平台-如何做负载均衡弹性负载均衡-ELB四、总结一、什么是负载均衡 负载均衡构建在原有网…

【数据挖掘】薪酬分段对应工作经验/学历画柱状图【招聘网站的职位招聘数据预处理】

文章目录一.需求背景1.1 需求分析二.数据处理(对给定职位&#xff0c;汇总薪酬分段对应工作经验要求数据&#xff0c;画柱状图&#xff1b;)2.1 事前准备2,1 处理开始三.数据处理(对给定职位&#xff0c;汇总薪酬分段对应学历要求数据&#xff0c;画柱状图&#xff1b;)四.附源…

吉林大学 超星慕课 高级语言程序设计 实验08 结构化程序设计(2022级)

本人能力有限&#xff0c;发出只为帮助有需要的人。 建议同学们自己写完后再进行讨论。 其中的代码均没能在oj上进行测试&#xff0c;因此可能有误&#xff0c;请谅解。 除此以外部分题目设计深度优先搜索&#xff0c;因此可以分别用递归和堆栈实现&#xff0c;堆栈方法为了…

JavaScript进阶教程——异步编程、封装Ajax

异步编程 什么是同步与异步&#xff1a; 同步&#xff1a;一件事没做完&#xff0c;只能等待&#xff0c;完成之后再去做另一件事 异步&#xff1a; 两件事可以同时进行 前端开发中最常见的两种异步情况&#xff1a; ajax: 向后台请求数据计时器&#xff1a; setInterval se…

Python学习基础笔记四十一——sys模块

sys模块是与Python解释器交互的一个接口。 sys.argv 命令行参数List&#xff0c;第一个元素是程序本身路径 sys.exit(n) 退出程序&#xff0c;正常退出时exit(0),错误退出sys.exit(1) sys.version 获取Python解释程序的版本信息 sys.path 返…

ARM Cortex M3处理器概述

Cortex-M3概述 2004年ARM发布作为新型Corex处理器内核系列首款的Cortex-M3处理器。 STM32系列基于专为高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核。 STM32命名规则 STMF103xx系统结构 1.使用高性能的ARM Cortex-M3 32位RISC内核 2.工作频率为72MHZ 3.内…

shell脚本监控文件夹文件实现自动上传数据到hive表

sh createtb.sh “tablename;field1,field2,field3,field4,field5,field6,field7;partition1,partition2” 数据库名&#xff1a;observation &#xff08;脚本里写死了&#xff09; 表名&#xff1a;tablename 指定名&#xff1a;field1,field2,field3,field4,field5,field6,f…

分别使用Alpine、Docker制作jdk镜像

目录 制作 jdk 1.0 镜像 ——Docker 1.创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件 2.编写 Dockerfile 文件 3.执行Dockerfile文件&#xff0c;初次依赖镜像的时候会下载相应镜像 优化制作jdk镜像&#xff08;缩小内存大小&#xff09;——使用alpine …

【致敬世界杯】球迷(我)和足球的故事

目录 一、第一次接触足球 二、回味无穷的2018世界杯 三、致敬世界杯 3.1 源代码 3.2 思路 3.3 关于图片 一、第一次接触足球 踢足球是一项优秀的运动&#xff0c;它可以锻炼身体&#xff0c;增强团队合作精神&#xff0c;并为人们带来快乐和满足感。回忆起小学时候第一次…

OpenCV和RTSP的综合研究

一、RTSP是什么&#xff1f;用来干什么&#xff1f; RTSP&#xff08;Real Time Streaming Protocol&#xff09;&#xff0c;RFC2326&#xff0c;实时流传输协议&#xff0c;是TCP/IP协议体系中的一个应用层协议&#xff0c;由哥伦比亚大学、网景和RealNetworks公司提交的IET…

四旋翼无人机学习第14节--PCB Editor简单绘制封装-1

文章目录1 前言1.1 网络获取1.2 封装软件生成1.3 立创商城封装转化1 前言 在之前的博客中&#xff0c;我们绘制了封装所需的焊盘&#xff0c;有了焊盘我们就可以绘制封装啦。当然封装的获取有很多途径&#xff0c;下面我来总结一下。 1.1 网络获取 (有需要的可以下载哦&…

华为eNSP模拟器配置MSTP多实例生成树

传统的stp、rstp有其必然的缺陷 1.统一局域网内所有的vlan共享一个生成树&#xff0c;无法在vlan间实现数据流量的负载均衡。 2.链路利用率低&#xff0c;被阻塞的冗余链路不承载任何流量&#xff0c;造成了带宽的浪费&#xff0c;还可能造成部分vlan报文无法转发。MSTP在它们…

计算机毕业设计springboot+vue基本微信小程序的学习资料共享小程序

项目介绍 前台为用户使用的,包括下面一些功能&#xff1a; ① 资料发布&#xff1a;用户可以将想要共享的资料发布到小程序,供他人购买。 ②搜索 &#xff1a;分为按名称搜索和分类搜索,用户可选择其中一种方式,检索自己所需要的资料。 ③ 查看资料详情&#xff1a;用户可以…

学委必备小工具——筛选未提交人数【python小工具】

问题描述 作为一个学委&#xff0c;通常的任务就是收取班级作业&#xff0c;然后向老师报告当前未交人员的名单 JS版本&#xff1a;实现以一个表格数据查询另一个表格【JS】 之前我已经尝试通过用JS实现了&#xff0c;本质上差别其实也不是很大&#xff0c;只是对于JS来说&…

Java基础之《netty(11)—netty模型》

一、简单说明 1、工作原理示意图 netty主要基于主从Reactors多线程模型做了一定的改进&#xff0c;其中主从Reactor多线程模型有多个Reactor。 2、说明 &#xff08;1&#xff09;BossGroup线程维护selector&#xff0c;只关注Accept事件。 &#xff08;2&#xff09;当接收到…

[附源码]Node.js计算机毕业设计出版社样书申请管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

第十一章 特征选择与稀疏学习

11.1 子集搜索与评价 我们将属性称为特征&#xff0c;对当前学习任务有用的属性称为相关特征、没什么用的属性称为无关特征。还有一类特征称为冗余特征&#xff0c;它们所包含的信息能从其他特征中推演出来&#xff0c;冗余特征在很多时候不起作用&#xff0c;去除它们会减轻学…