当前位置: 首页 > news >正文

归纳所猜半结论推出完整结论:CF1592F1

https://www.luogu.com.cn/problem/CF1592F1

场上猜了个结论,感觉只会操作1。然后被样例1hack了。然后就猜如果 ( n , m ) (n,m) (n,m) 为1则翻转4操作,被#14hack了。然后就猜4操作只会进行一次,然后就不知道怎么做下去了。


上面猜的结论都正确,但是既然猜结论了,为什么不考虑先证明一波?

考虑2次操作4,代价为6,只有两种情况:

在这里插入图片描述
而他们都可以用操作1表示出来。

然后考虑怎么做。其实感觉没有操作4时,每个位置是否翻转都可以直接O(1)算出来。但这存在一定难度。

我当时写的是:

在这里插入图片描述
这样子存在逻辑联系,不方便直接表示,所以应该考虑把if取得。

怎么去?就多列几个表示出来。(相当于多一个媒介)

v i , j = a i , j ⊗ s i − 1 , j ⊗ s i , j − 1 ⊗ s i − 1 , j − 1 p i , j = v i , j ⊗ s i − 1 , j ⊗ s i , j − 1 ⊗ s i − 1 , j − 1 v_{i,j}=a_{i,j}\otimes s_{i-1,j}\otimes s_{i,j-1}\otimes s_{i-1,j-1}\\p_{i,j} = v_{i,j}\otimes s_{i-1,j}\otimes s_{i,j-1}\otimes s_{i-1,j-1} vi,j=ai,jsi1,jsi,j1si1,j1pi,j=vi,jsi1,jsi,j1si1,j1

然后我们发现了 s s s a a a 相同。

然后发现翻转4只会改变4个位置。

然后操作4有贡献只当这4个位置同时改变。

#include<bits/stdc++.h>
using namespace std;
//#define int long long
inline int read(){int 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<<1)+
(x<<3)+(ch^48);ch=getchar();}return x*f;}
#define Z(x) (x)*(x)
#define pb push_back
//#define M
//#define mo
#define N 510
int n, m, i, j, k, T;
int a[N][N], p[N][N], ans; 
char str[N]; signed main()
{
//	freopen("in.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
//	srand(time(NULL));
//	T=read();
//	while(T--) {
//
//	}auto calc = [&] (int x, int y) -> int {return a[x][y]^a[x+1][y]^a[x][y+1]^a[x+1][y+1]; }; n=read(); m=read(); for(i=1; i<=n; ++i) {scanf("%s", str+1); for(j=1; j<=m; ++j) if(str[j]=='B') a[i][j]=1; }for(i=n; i>=1; --i) 	for(j=m; j>=1; --j) {p[i][j]=(p[i+1][j]^p[i][j+1]^p[i+1][j+1]); if(a[i][j]^p[i][j]) p[i][j]^=1, ++ans; ans+=calc(i, j); if(i!=n && j!=m && calc(i, j) && calc(i, m) && calc(n, j) && calc(n, m)) k=-1; }printf("%d", ans+k); return 0;
}
http://www.lryc.cn/news/187950.html

相关文章:

  • WPFdatagrid结合comboBox
  • Markdown类图之继承、实现、关联、依赖、组合、聚合总结(十五)
  • @MultipartConfig注解
  • Python并发编程简介
  • WebSocket介绍及部署
  • 自动求导,计算图示意图及pytorch实现
  • 睿伴科创上线了
  • 域名抢注和域名注册
  • 【20】c++设计模式——>组合模式
  • Jetpack:004-如何使用文本组件
  • JVM(八股文)
  • C#WPF标记扩展应用实例
  • 四维曲面如何画?matlab
  • 软件培训测试高级工程师多测师肖sir__html之作业11
  • 详解一典型的反激式开关电源方案
  • AI 大框架基于python来实现基带处理之TensorFlow(信道估计和预测模型,信号解调和解码模型)
  • 阿里云上了新闻联播
  • 算法练习12——跳跃游戏
  • Java架构师系统架构设计服务拆分
  • 通用任务批次程序模板
  • Rust专属开发工具——RustRover发布
  • 数据结构:链表(1)
  • 软件测试之概念篇2(瀑布模型、螺旋模型、增量模型和迭代模型、敏捷模型,V模型、W模型)
  • 【【萌新的SOC学习之重新起航SOC】】
  • ElasticSearch 学习7 集成ik分词器
  • [NewStarCTF 2023 公开赛道] week1
  • ThreeJS-3D教学六-物体位移旋转
  • BC v1.2充电规范
  • 判断一个整数是否回文
  • 【广州华锐互动】车辆零部件检修AR远程指导系统有效提高维修效率和准确性