首页 > 其他分享 >CF1864D Matrix Cascade

CF1864D Matrix Cascade

时间:2023-08-29 12:45:13浏览次数:44  
标签:CF1864D 格子 int 方框 3005 Cascade ans 操作 Matrix

思路

第一时间想到的是暴力,因为同一行的互不影响,所以第一行的 \(1\) 一定都需要操作,然后把后续的状态更新,再操作第二行的所有的 \(1\),但是很可惜是 \(O(n^4)\) 的复杂度,必然会 TLE。

所以思考其他的办法,考虑到可以统计有多少操作更改了这个位置的状态,所以可以使用一个类似前缀和的方法。

如上图,可以发现黑色方框的状态会被红色方框的操作影响。

所以想办法统计红色方框进行的操作总数。

令 \(b_{i,j}\) 表示格子 \((i,j)\) 是否做过操作, \(c_{i,j}\) 表示所有会影响格子 \((i,j)\) 的状态的操作总数,包括本格子的操作。

再简单画一个图:

绿色为 \(c_{i-1,j-1}\) 单独涉及的区域,黄色为 \(c_{i-1,j+1}\) 单独涉及的区域,蓝色为 \(c_{i-1,j-1}\) 和 \(c_{i-1,j+1}\) 共同涉及的区域。

所以可以推断出公式为 \(c_{i,j}=c_{i-1,j-1}+c_{i-1,j+1}-c_{i-2,j}+b_{i-1,j}\)。

然后再判断经过这么多次操作后,这个格子的状态,再判断是否需要操作,再更改 \(c_{i,j}\) 和 \(b_{i,j}\)。

然后发现样例都不对,在调试后发现,是当 \(j=1\) 或者 \(j=m\) 时发生了错误,所以只需要特判,这种情况更加简单公式为 \(c_{i,j}=c_{i-1,j+1}+b_{i-1,j}\) 或者 \(c_{i,j}=c_{i-1,j-1}+b_{i-1,j}\)。

AC code

#include<bits/stdc++.h>
using namespace std;
int T,n,a[3005][3005],b[3005][3005],c[3005][3005],ans;
char ch[3005];
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&n),ans=0;
		for(int i=1;i<=n;++i)
		{
			scanf("%s",ch+1);
			for(int j=1;j<=n;++j)
			{
				b[i][j]=0,a[i][j]=ch[j]-'0';
			}
		}
		for(int i=1;i<=n;++i)
		{
			for(int j=1;j<=n;++j)
			{
				if(j==1) c[i][j]=c[i-1][j+1]+b[i-1][j];
				else if(j==n) c[i][j]=c[i-1][j-1]+b[i-1][j];
				else c[i][j]=c[i-1][j-1]+c[i-1][j+1]-((i>=2)?c[i-2][j]:0)+b[i-1][j];
				if((c[i][j]%2)^a[i][j]) ++c[i][j],++ans,b[i][j]=1;
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}

标签:CF1864D,格子,int,方框,3005,Cascade,ans,操作,Matrix
From: https://www.cnblogs.com/One-JuRuo/p/17664451.html

相关文章

  • JTS-IntersectionMatrix 使用说明
    参考:https://blog.csdn.net/weixin_40294332/article/details/124124928参考2:https://vimsky.com/examples/detail/java-method-com.vividsolutions.jts.geom.IntersectionMatrix.set.html......
  • element-ui 中 Cascader 级联选择器同时获取value值和label值
    给Cascader级联选择器添加一个别名 复制代码<el-cascader:options="options"ref="myCascader"></el-cascader>选择完毕之后可以通过别名获取 复制代码letlabelValue=this.$refs['myCascader'].inputValue当然,element-ui在一直更新变化,label值的字......
  • 限制 el-select 和 el-cascader 下拉框宽度
    需求el-select、el-cascader等下拉选项字符过多时,下拉框会自动边长,有时甚至会超出屏幕宽度,不美观。因此,需要限制下拉框宽度,选项内容过长则以省略号显示,鼠标悬浮显示完整内容。el-select解决方案加`popper-class`和`title`,设定宽度为0<el-selectpopper-class="my......
  • LightDB支持drop table时cascade constraints语法
    在Oracle数据库中,droptable语法如下:即droptable时通过cascadeconstraints级联删除所有该表中的约束。在LightDB23.3版本中,droptable同样支持了constraints关键字,自动删除依赖于表的所有约束对象。语法结构如下:DROPTABLE[IFEXISTS]name[,...][CASCADE[CONSTRA......
  • Shopify 内容玩法之 Discounts 折扣码批量上传:matrixify
     折扣码使用的插件是:Matrixify。这个插件可以批量上传Products,Discounts等数据,可以直接使用excel模板创建数据。Discounts的excel模板,见下表:需要注意的几点:Code和Title保持一致,方便在Discounts列表查看当前折扣码的名称DiscountsValue是减掉的金额您需......
  • CMPSC122 Matrix类实现细节
    CMPSC122MatrixMatrixClassAmatrixisrectangulararrayofitemslaidoutinrowsandcolumns.Thedimensions,orsize,ofamatrixcanbeexpressedasmxnorm-by-n,wheremisthenumberofrowsinthematrixandnisthenumberofcolumnsinthemat......
  • Matrix Power Series
    描述Givena n × n matrix A andapositiveinteger k,findthesum S = A + A2 + A3 +…+ Ak.题意已知矩阵A,算A^1+A^2+....+A^k,元素对m取模二分递归,如果k为偶数,,因为是等比矩阵,所以前一半和后一半就有一个比例,所以sum(1,k)=sum(1,k/2)+sum(1,k/2......
  • tzoj7929: Matrix Power Series
     题意给定一个n*n大小的矩阵A,求以A为公比的等比数列的前k项和。解题思路直接从1到k矩阵快速幂每项相加肯定是会超时的,而如果用公式计算需要求逆矩阵非常麻烦,而且有可能会溢出。因此我们使用分治求解。当n为奇数时, 当n为偶数时, 分治求解即可。#include<bits/stdc+......
  • occ配置(opencascade+qt+vs)
    配了几天终于配完了我真的删q先是下载了qt5.12.1和opencascade7.4.0和visualstudio2017和b站一个博主(城外柳依依)一起配的,配完还是报错先是找不到qt5scoreed.lib最后我把这个文件找到(D:\Qt\Qt5.12.1\5.12.1\msvc2017_64\lib),然后两个对应的文件复制到opencascadein64文件夹里......
  • Vulnhub 靶场 MATRIX-BREAKOUT: 2 MORPHEUS
    前期准备:靶机地址:https://www.vulnhub.com/entry/matrix-breakout-2-morpheus,757/kali攻击机ip:192.168.11.11靶机ip:192.168.11.12一、信息收集及利用1.使用nmap对目标靶机进行扫描发现开放了22、80、81端口。2.80端口访问80端口:查看页面信息没发现什么重要信息,......