题目地址:CF1119C Ramesses and Corner Inversion 将两个矩阵异或起来,为 \(1\) 的位置就是需要修改的位置 注意到每一次操作都会导致两行和两列上有两个数被修改 那么如果有一行或一列上只有一个需要被修改的数,显然不可能 否则即可能 #include <bits/stdc++.h> using namespace std; const int N = 506; int n, m, a[N][N], b[N][N]; int main() { cin >…
https://codeforces.com/problemset/problem/1119/C 题目 给两个矩阵,只能选宽和高大于等于2的子矩阵左上.左下.右上.右下四点翻转(1->0,0->1) 问能否经过一些操作将A翻转到B 题解 能当且仅当每行和每列不同的数量都为偶数. 必要性:一次翻转不改变奇偶性,所以必要性成立. 充分性:可以每次进行(0,0,x,y)的操作,将除了第一行和第一列的所有不同翻转为相同,因为是不同的数量是偶数,所以第一行和第一列也相同.(把不同看成1,相同看成0) 但…
题目链接:http://codeforces.com/contest/1119/problem/C 题意:给两个同型的由0.1组成的矩阵A.B,问A能否经过指定的操作变成B,指定操作为在矩阵A中选定一个子矩阵(行数,列数均>=2),该子矩阵的四个角的值能翻转,即1->0,0->1. 思路:结论--只要A.B的所有行的值之和同奇偶,所有列的值之和同奇偶就输出Yes,否则输出No.证明:经过操作(1,1,x,y) (x>1,y>1)可将A中非第一行.第一列的元素变成和B一致,即A…
这里是总链接\(Link\). \(A\) 题意:求\(\sum_{i=1}^{k} a_i\times b^{k-i}\)的奇偶性, \(k = \Theta(n \log n)\) --其实很容易想麻烦,比如说逐个判断,整体判断啥的.但其实只要对结果都\(\bmod ~10\),然后判断奇偶性就好了. cin >> b >> k ; for (i = 1 ; i <= k ; ++ i) scanf("%d", &base[i]) ; reve…
C 把 \(a,b\) 全拆开然后比较即可(因为分裂和合并是互逆的) 注意开 long long . using namespace std; typedef long long ll; typedef pair<ll, ll> pii; int n, m, k; vector<pii> a, b, c, d; inline void solve() { a.clear(); b.clear(); c.clear(); d.clear(); scanf("%d%d&quo…
Description: 非 * 号的地方可以放A或B,不能AA或BB,一共有a个A,b个B,问你最多放几个 Solution: 1.模拟一下,找连续空位长度,如果长度为奇数,则我可以有一个位置放任意一个,否则摆放消耗一定,最后放完了判断一下是不是还有剩下的,有剩下的就都放到任意位置 Code #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int m…
Codeforces Global Round 2 题目链接:https://codeforces.com/contest/1119 A. Ilya and a Colorful Walk 题意: 给出n个数,问从一个数到另外一个不同数的最长距离是多少. 题解: 从前往后,从后往前扫两遍即可.证明可用反证法,这里略去. #include <bits/stdc++.h> using namespace std; typedef long long ll; ; int n; int c[N]; i…
这场题目设置有点问题啊,难度:Div.2 A->Div.2 B->Div.2 D->Div.2 C->Div.2 D->Div.1 D-> Div.1 E->Div.1 F简直有毒 只AC 4题似乎就是1000+名了 这种考验手速的时刻Itst就比较擅长了,然后就红名+拿衣服了-- A. Ilya and a Colorful Walk 如果最左边和最右边不同就是\(N-1\),否则就是中间跟两边颜色不同的块到两边距离的最大值 代码 B. Alyona and a…
CF1119A Ilya and a Colorful Walk 这题二分是假的.. \(1,2,1,2,1\) 有间隔为 \(3\) 的,但没有间隔为 \(2\) 的.开始被 \(hack\) 了一次.后来改过来了. 我的做法:扫一遍,记录每个颜色第一次出现的位置,并存入一个 \(set\) 中,若当前颜色未出现,就更新位置,存入 \(set\) ,否则将那个位置删除.然后查询一次 \(set\) 中最小元素.最后再把那个位置插入回去. 官方题解:最远距离两个端点中一定包含 \(1\) 或 \…
传送门 好难受啊掉\(rating\)了-- \(A\ Ilya\ and\ a\ Colorful\ Walk\) 找到最后一个与第一个颜色不同的,比一下距离,然后再找到最左边和最右边与第一个颜色不同的,再和所有与第一个颜色相同的比较一下距离 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b)…