题目链接:https://codeforces.com/contest/1365/problem/A 题意 给出一个 $n \times m$ 的网格,两人轮流选择一个所在行列没有 $1$ 的方块置为 $1$,判断最后谁会胜利. 题解 模拟一共能走多少步,奇数先手胜,偶数后手胜. 代码 #include <bits/stdc++.h> using namespace std; void solve() { int n, m; cin >> n >> m; bool ro…
链接 : https://codeforces.com/contest/1365/problems problem A 统计可用的行和列的最小值, 模2输出即可 /* * Author: RoccoShi * Time: 2020-06-07 22:35:02 */ #include <bits/stdc++.h> using namespace std; typedef long long ll; int vix[50]; int viy[50]; int cntx=0, cnty=0; i…
题目链接:https://codeforces.com/problemset/problem/1365/E 题意 有 $n$ 个元素,定义大小为 $k$ 的集合值为 $\sum2^i$,其中,若集合内至少有 $max(1, k - 2)$ 个数二进制下第 $i$ 位为 $1$,则第 $i$ 位有效,求一个集合可以得到的最大值. 题解 每个 $k > 3$ 的集合的值一定小于等于 $k = 3$ 的子集合的值,所以枚举大小 $1 \sim 3$ 的集合即可. 证明 如果原集合中某一位有效,则至少在…
这题犯了一个很严重的错误,bfs 应该在入队操作的同时标记访问,而不是每次只标记取出的队首元素. 题目链接:https://codeforces.com/contest/1365/problem/D 题意 有一个 $n \times m$ 的迷宫,迷宫有四种方格: '.' 空方格 '#' 墙 'B' 坏人 'G' 好人 人与人间可以通行,人与墙间不能,可以把任意空方格变为墙,问能否所有好人可以到达 $(n, m)$ 但所有坏人不能. 题解 无解有两种情况: 坏人与好人相邻 在每个坏人相邻的四个方…
题目链接:https://codeforces.com/contest/1365/problem/C 题意 有两个大小为 $n$ 的排列,可以循环左移或右移任意次,问最多有多少对同一值在同一位置. 题解 计算两个排列中同一值相差的距离,取个数最多的那个即可. 代码 #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; vector<int> id[n]; for (int…
一开始读错题了...想当然地认为只能相邻元素交换...(然后换了两种写法WA了4发,5分钟切A的优势荡然无存) 题目链接:https://codeforces.com/contest/1365/problem/B 题意 有 $n$ 个数,每个数的种类为 $0$ 或 $1$,不同种类的元素可以任意交换,问这些数能否排为非递减序. 题解 如果两个种类都有,一定可以排为有序,稍微证明一下: 将种类为 $0$ 的数都交换到最左边,种类为 $1$ 的数都交换到最右边 每个种类的数可以利用另一个种类的一个数…
题意:E.Maximum Subsequence Value 题意: 给你n 个元素,你挑选k个元素,那么这个 k 集合的值为 ∑2i,其中,若集合内至少有 max(1,k−2)个数二进制下第 i 位为 1,则第 i 位有效,求一个集合可以得到的最大值. 题解: 应该是一种贪心 当k==3的时候,那么也就相当于从n个元素中挑选出来三个数进行或操作即可.如果你选择k==4,那么就相当于在k==3的基础上进行与操作,那么这个结果只会小于等于k==3时候的答案. k==5之后的也是这样 代码: 1 #…
题目链接:F.Swaps Again 题意: 有两个长度为n的数组a和数组b,可以选择k(1<=k<=n/2)交换某一个数组的前缀k和后缀k,可以交换任意次数,看最后是否能使两个数组相等 可以输出yes,否则输出no 题解: ...这道题我真没想到这样写 例如一个序列1,2,3,4,5.你交换一次(怎么交换就不说了,能看出来),5,2,3,4,1,再交换一次4,1,3,5,2. 你会发现一个规律(反正我没发现),对称位置的元素依然是最开始的元素,就比如没交换前1和5相对称,再交换了多次之后1还…
题目传送门 /* 二分查找/暴力:先埃氏筛选预处理,然后暴力对于每一行每一列的不是素数的二分查找最近的素数,更新最小值 */ #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ; ; const int INF = 0x3f3f3f3f; int a[MAXN][MAXN]; int mn_r[MAXN]; int mn_c[MAXN]; bool is_prim…
Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须买q[i]个东西,然后他会送你{0,1,2}个物品,但是送的物品必须比你买的最便宜的物品还便宜,问你最少花多少钱,买完m个物品 题解 显然我选择q[i]最小的去买就好了 代码 #include<bits/stdc++.h> using namespace std; const int maxn =…