题目链接 \(Description\) 给定一个\(n\times m\)的\(01\)矩阵.求任意选出\(r\)行.\(c\)列(共\(2^{n+m}\)种方案),使得这\(r\)行\(c\)列的交的位置的\(r\times c\)个数的和为奇数,的方案数有多少. (...我也不知道怎么就表述成这样了,反正挺好理解) \(n,m\leq300\). \(Solution\) 假设已经确定了选择某些行,然后把每一行\(m\)个数看做一个\(m\)位二进制数. 如果这些行异或和为\(0\),那怎…
E - Odd Subrectangles 思路: 对于行方案固定的情况下,假设和为奇数的列为a个,和为偶数的列为b个,a+b = m 那么从奇数里面选奇数个,即C(a, 1) + C(a, 3) + C(a, 5) + ... = 2^(a-1) 从偶数里面随便选,即2^b 那么在存在奇数的情况下,列方案数为 2^(a+b-1) = 2^(m-1) 如果不存在奇数呢?那么问题就变为寻找使得所有列和都为偶数的行方案,即行向量异或起来为0 这种行方案数为2^(n-r), 其中 r 为矩阵的秩,求矩…
[AtCoder] Yahoo Programming Contest 2019   很遗憾错过了一场 AtCoder .听说这场是涨分场呢,于是特意来补一下题. A - Anti-Adjacency   显然 \(K \leq \frac{N + 1}2\) int n, k; int main() { #ifdef hzhkk freopen("hkk.in", "r", stdin); #endif read(n), read(k); if (k <=…
D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在\(i\)的位置放置一个石子.现在给出最后的石子序列,但这个序列有可能是不合法的,定义一次操作是将第\(i\)个位置上记录的石子\(-1\)或\(+1\),求最少的操作数使得给定序列成为一个合法序列 分析: 我们记录一次行走的起点为\(S\),终点为\(T\),在这次行走中到达的最左边的点为\(L\…
A - Anti-Adjacency K <= (N + 1) / 2 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define space putchar(' ') #define enter putchar('\n') #define MAXN 40005 #d…
A-C 直接放代码吧. A int n,k; int main() { n=read();k=read(); puts(k<=(n+1)/2?"YES":"NO"); return 0; } B int d[N];pair<int,int>s[10]; int main() { for(int i=1,u,v;i<=3;i++){ u=read();v=read(); s[i].first=u;s[i].second=v; d[u]++;d[…
F - Pass 思路: dp[i][j] 表示到第 i 个球为止放了 j 个蓝球的方案数 第 i 个球来自的位置的最右边是min(i, n) 转移方程看代码 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc++.h> using namespace std; #define y1 y11 #define fi first #define se secon…
D - Ears 思路: s:起点           t:终点           l:左端点           r:右端点 以上称为关键点 dp[i][j]表示到位置 i 为止,已经经过前 j 个关键点的最小花费 转移方程看代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc++.h> using namespace std; #define y1 y1…
A - Anti-Adjacency 签. #include <bits/stdc++.h> using namespace std; int main() { int n, k; while (scanf("%d%d", &n, &k) != EOF) { ) / ; puts(k <= remind ? "YES" : "NO"); } ; } B - Path 签. #include <bits/st…
A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long char getc(){char c=getchar();while ((c<'A'||c>'Z')&&a…