网站的关键词怎么设置,公司商标设计网站,兰州网站建设公司价格,专业网站优化公司排名https://www.luogu.com.cn/problem/CF1592F1
场上猜了个结论#xff0c;感觉只会操作1。然后被样例1hack了。然后就猜如果 ( n , m ) (n,m) (n,m) 为1则翻转4操作#xff0c;被#14hack了。然后就猜4操作只会进行一次#xff0c;然后就不知道怎么做下去了。 上面猜的结论都…https://www.luogu.com.cn/problem/CF1592F1
场上猜了个结论感觉只会操作1。然后被样例1hack了。然后就猜如果 ( n , m ) (n,m) (n,m) 为1则翻转4操作被#14hack了。然后就猜4操作只会进行一次然后就不知道怎么做下去了。 上面猜的结论都正确但是既然猜结论了为什么不考虑先证明一波
考虑2次操作4代价为6只有两种情况 而他们都可以用操作1表示出来。
然后考虑怎么做。其实感觉没有操作4时每个位置是否翻转都可以直接O1算出来。但这存在一定难度。
我当时写的是 这样子存在逻辑联系不方便直接表示所以应该考虑把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,jai,j⊗si−1,j⊗si,j−1⊗si−1,j−1pi,jvi,j⊗si−1,j⊗si,j−1⊗si−1,j−1
然后我们发现了 s s s 和 a a a 相同。
然后发现翻转4只会改变4个位置。
然后操作4有贡献只当这4个位置同时改变。
#includebits/stdc.h
using namespace std;
//#define int long long
inline int read(){int x0,f1;char chgetchar();
while(ch0||ch9){if(ch-)f-1;
chgetchar();}while(ch0ch9){x(x1)
(x3)(ch^48);chgetchar();}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));
// Tread();
// while(T--) {
//
// }auto calc [] (int x, int y) - int {return a[x][y]^a[x1][y]^a[x][y1]^a[x1][y1]; }; nread(); mread(); for(i1; in; i) {scanf(%s, str1); for(j1; jm; j) if(str[j]B) a[i][j]1; }for(in; i1; --i) for(jm; j1; --j) {p[i][j](p[i1][j]^p[i][j1]^p[i1][j1]); if(a[i][j]^p[i][j]) p[i][j]^1, ans; anscalc(i, j); if(i!n j!m calc(i, j) calc(i, m) calc(n, j) calc(n, m)) k-1; }printf(%d, ansk); return 0;
}