首页 > 其他分享 >[CF1592F2] Alice and Recoloring 2

[CF1592F2] Alice and Recoloring 2

时间:2023-12-11 21:15:20浏览次数:31  
标签:int CF1592F2 Alice 操作 oplus Recoloring

题目链接

操作 2 和 3 可以用另两个代替,没有任何用。

W 表示 \(t_{i,j}=0\),B 表示 \(t_{i,j}=1\)

考虑差分。设 \(t_{i,j}=s_{i,j}\oplus s_{i+1,j}\oplus s_{i,j+1}\oplus s_{i+1,j+1}\),那么目标变为把 $t4 数组清0

那么操作 1 是把单点翻转,操作 4 是对于一个 \(x,y(x<n,y<m)\),翻转 \((n,m),(x,y),(x,m),(n,y)\)

那么操作4有用当且仅当 \(t_{x,y},t_{x,m},t_{n,y}\) 都为 1。

然后每个 \(x\) 和 \(y\) 只能用一次,所以可以跑一个二分图匹配。
判断一下 \((n,m)\) 要不要操作。

// LUOGU_RID: 139138753
#include<bits/stdc++.h>
using namespace std;
const int N=505;
int n,m,t[N][N],ans,v[N],p[N],s[N][N],g[N][N];
char str[N];
int dfs(int x,int y)
{
	for(int i=1;i<m;i++)
	{
		if(g[x][i]&&v[i]^y)
		{
			v[i]=y;
			if(!p[i]||dfs(p[i],y))
				return p[i]=x,1;
		}
	}
	return 0;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		scanf("%s",str+1);
		for(int j=1;j<=m;j++)
			t[i][j]=str[j]=='B';
	}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			s[i][j]=t[i][j]^t[i+1][j]^t[i+1][j+1]^t[i][j+1],ans+=s[i][j];
	for(int i=1;i<n;i++)
		for(int j=1;j<m;j++)
			g[i][j]=s[n][j]&&s[i][m]&&s[i][j];
	int c=0;
	for(int i=1,k;i<=n;i++)
		k=dfs(i,i),ans-=k,c+=k;
	ans-=s[n][m];
	if(c&1^s[n][m])
		ans++;
	printf("%d\n",ans);
}

标签:int,CF1592F2,Alice,操作,oplus,Recoloring
From: https://www.cnblogs.com/mekoszc/p/17895535.html

相关文章

  • [ARC072E] Alice in linear land 题解
    [ARC072E]Aliceinlinearland首先,一个trivial的想法是记\(f_i\)表示第\(i\)步前离终点的距离,于是\(f_i=\min\Big(f_{j-1},|f_{j-1}-d_i|\Big)\)。然后,我们设\(f_i'\)表示在修改第\(i\)步后,此时离终点的距离。明显,\(f_i'\)可以为任意不大于\(f_i\)的值,因为此时......
  • Alice's Stamps
    Description给定\(n\)个区间,选择至多\(k\)个区间,使得被覆盖的元素的个数最多。求最大值。\(1\leql\leqr\leqn\)。Solution赛场上想的是用区间定义状态,先把区间按右端点排序,\(dp_{i,k}\)表示考虑前\(i\)个区间,选了其中\(k\)个,且第\(i\)个区间必选的最大值。那么就......
  • Letter Picking (CF D) (区间DP, 暴力)(0,1,2 Alice 平 bob ,尽可能小,尽可能大)
     思路:区间dp(区间DP的时间复杂度不一定是n^3,可能是n^2更具题意)直接题直接区间dp,0Alice赢1平局2Bob赢(于是alice尽可能小,bob尽可能大)alice选l,bob可以选l+1,或者ralice选r,bob可选l或者r-1,看代码就行了#include<bits/stdc......
  • Alice and Hairdresser题解
    AliceandHairdresser第一眼线段树,第二眼好像可以直接用数组模拟。当一根头发长于\(l\),它再长多长其实都一样,所以不用开longlong。如果一根新的头发长到比\(l\)长,那可以分成以下几种情况:如果它左侧和右侧只有一个元素大于\(l\),那答案不变。如果左侧和右侧都大于......
  • XTU 1209 Alice and Bob
    AliceandBob   TimeLimit:1000MS MemoryLimit:65536KB ProblemDescriptionThefamous"AliceandBob"areplayingagameagain.Sonowcomesthenewproblemwhichneedapersonsmartasyoutodecidethewinner.Theproblemisasfollows:......
  • CF1592F2 题解
    题意传送门给定一个\(n\)行\(m\)列的目标矩阵,矩阵元素只有W或B,并且你有一个初始矩阵,元素全为W。现在你可以矩阵实施以下操作:使用一块钱,选定一个包含\((1,1)\)的子矩阵,把矩阵中的元素全部反转(W变B,B变W)。使用三块钱,选定一个包含\((n,1)\)的子矩阵,把矩阵......
  • 题解【CF1592F2 Alice and Recoloring 2】
    CF1592F2AliceandRecoloring2解题报告。不一定更好的阅读体验。摘自我的构造题目选做例题IV。CF2800的构造就这?/cf/cf/cf(首先,操作2和操作3都是没有用......
  • 2022 CCPC 广州站 Alice and Her Lost Cat
    1#include<bits/stdc++.h>2usingnamespacestd;3#definergregister4#definelllonglong5#defineldlongdouble6#defineFOR(i,a,b)for(r......
  • 使用 Alice inspector 和 Dio 进行 Flutter API 日志记录
    使用Aliceinspector和Dio进行FlutterAPI日志记录前言有没有发现自己处于这样的情况下,当一个特性被显示或者一个方法被触发时,你必须找出哪个API被调用?我就当......
  • 【XSY3990】Alice 和 Bob 双在玩游戏(博弈,dp,拓扑,背包)
    题面Alice和Bob双在玩游戏题解注意到这里一个人无法操作后,另一个人也不一定无法操作(即不像普通的取石子游戏一样),所以考虑转化一下他们各自的最优策略:双方都想让自己......