2018 ICPC 徐州网络赛 K题 Morgana Net

2023-10-28 13:59
文章标签 网络 net 2018 icpc 徐州 morgana

本文主要是介绍2018 ICPC 徐州网络赛 K题 Morgana Net,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意:

求第迭代t次后的矩阵卷积。

题解:

输入给出两个矩阵An,Bm

建立一个矩阵Cn*n,将矩阵A中的元素以此放到矩阵C的第一行

我们将卷积的过程构造成一个转移矩阵,然后用矩阵快速幂解决

构造方法:

考虑点a,它周围的点a1,a2,a3,a4,a5......要参与卷积的计算中

设点a在矩阵C中位于第y列,点ai在矩阵C中位于第xi列

我们将转移矩阵D的D[xi][y]赋值为点ai需要乘矩阵B中的数

那么C*D^t 的第一行的1的个数就是答案。

 

代码:

#include<bits/stdc++.h>
#define mod 1000000007
#define INF 1e17
#define eps 1e-10
#define pi 3.141592653589793
#define LL unsigned long long
#define pb push_back
#define cl clear
#define si size
#define lb lowwer_bound
#define mem(x) memset(x,0,sizeof x)
#define sc(x) scanf("%d",&x)
#define scc(x,y) scanf("%d%d",&x,&y)
#define sccc(x,y,z) scanf("%d%d%d",&x,&y,&z)
using namespace std;
int n,m;
struct Mx
{bool m[65][65];Mx(){memset(this,0,sizeof(Mx));}friend Mx operator * (Mx& a,Mx&b){Mx c;for(int i=1;i<=n;i++)for (int j=1;j<=n;j++) if (a.m[i][j])for (int k=1;k<=n;k++)c.m[i][k]=c.m[i][k]^(a.m[i][j]&b.m[j][k]);return c;}
}e;Mx qumi(Mx a,int y)
{Mx res=e;while(y){if (y&1) res=res*a;a=a*a;y>>=1;}return res;
}int main()
{int T;sc(T);for (int i=1;i<65;i++) e.m[i][i]=1;while(T--){int N,M,t;Mx a,b,c;sccc(N,M,t);for (int i=1;i<=N;i++)for (int j=1;j<=N;j++){int x;sc(x);a.m[1][(i-1)*N+j]=x&1;}for (int i=1;i<=M;i++)for (int j=1;j<=M;j++){int x;sc(x);b.m[i][j]=x&1;}n=N*N; m=M/2;for (int i=1;i<=N;i++)for (int j=1;j<=N;j++)for (int p=i-m;p<=i+m;p++)for (int q=j-m;q<=j+m;q++){if (p<1 || p>N || q<1 || q>N ) continue;c.m[(p-1)*N+q][(i-1)*N+j]=b.m[p-i+m+1][q-j+m+1];}b=qumi(c,t);b=a*b;int ans=0;for (int i=1;i<=n;i++) if (b.m[1][i]) ans++;printf("%d\n",ans);}return 0;
}

这篇关于2018 ICPC 徐州网络赛 K题 Morgana Net的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/293687

相关文章

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五