cf D. Maximum Submatrix 2】的更多相关文章

B. Maximum Submatrix 2 time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output You are given a matrix consisting of digits zero and one, its size is n × m. You are allowed to rearrange its rows. W…
http://codeforces.com/contest/376/problem/D 题意:给你一个矩阵,可以随意排列n行的次序,然后找出全部含有1的子矩阵.输出1的个数. 思路:c[i][j]表示在i列第j行的格子的右边连续的1的个数.对于每一列,排序c[i],然后比较c[i][j]*(n-j+1)与max1的大小,max1就是答案. #include <cstdio> #include <iostream> #include <cstring> #include…
B. Maximum Submatrix 2 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem/375/B Description You are given a matrix consisting of digits zero and one, its size is n × m. You are allowed to rearrange its rows. What is…
相关题型 问题一(最大和子矩阵) : 有一个 m x n 的矩阵,矩阵的元素可正可负.请找出该矩阵的一个子矩阵(方块),使得其所有元素之和在所有子矩阵中最大.(问题来源:http://acm.pku.edu.cn/JudgeOnline/problem?id=1050) 问题二( 最大 0/1 方块) :有一个 m x n 的矩阵,元素为 0 或 1.一个子矩阵,如果它所有的元素都是 0, 或者都是 1,则称其为一个 0-聚类 或 1-聚类,统称聚类(Cluster).请找出最大的聚类(元素最多…
Codeforces Round #221 (Div. 1) B:http://codeforces.com/problemset/problem/375/B 题意:给你一个n*m的0,1矩阵,你可以交换一些行,求一个最大子矩阵的面积,这个子矩阵全部包含1. 题解:看标签是数据结构,怎么想,也不知道用数据结构怎么搞.最后想到是求面积,面积不就是l*d,只要确定了了l和d,面积就出来了,于是我想到了枚举l和d.这里要先处理出来一些东西,dp[j][i]表示(i,j)的右边的有多少个连续的1,包括(…
http://codeforces.com/contest/332/problem/B #include <cstdio> #include <cstring> #include <algorithm> #define maxn 200010 using namespace std; int a[maxn]; long long sum[maxn]; long long max1; int main() { int n,k; scanf("%d%d"…
<题目链接> 题目大意:给出一个01矩阵,行与行之间可以互换位置,问能够得到最大的全1矩阵的面积. #include <bits/stdc++.h> using namespace std; ; int n,m; int dp[N][N]; char mpa[N][N]; int main(){ while(~scanf("%d%d",&n,&m)){ ;i<=n;i++)scanf(); memset(dp,,sizeof(dp)); ;…
一道比较套路的题,看到数据范围就差不多有想法了吧. 题目大意:给一个数列和\(m\),在数列任选若干个数,使得他们的和对\(m\)取模后最大 取膜最大,好像不能DP/贪心/玄学乱搞啊.\(n\le35\)?果断meet in middle 考虑我们已经搜出了序列前一半的解,那么怎么根据后面的结果合并出结果? 设我们现在得到的和为\(x\)(对\(m\)取膜后),我们令一个数\(y=m-x\),然后在前面的解中查找\(y\)的前驱即可 接下来进行简单的证明: 若可以找到前驱\(z\),由于\(z<…
题目:http://codeforces.com/contest/888/problem/E 一看就是折半搜索?……然后排序双指针. 两个<m的数加起来如果>=m,一定不会更新答案.因为-m后的值比原来的两个数都小(a+b-m<a+m-m),不如它们去加0: 而如果两个数加起来<m,值比它们都大,可能更新答案. #include<iostream> #include<cstdio> #include<cstring> #include<al…
[链接] 我是链接,点我呀:) [题意] 如果任意行之间可以重新排序. 问你最大的全是1的子矩阵中1的个数 [题解] 设cnt[i][j] 表示(i,j)这个点往右连续的1的个数 我们枚举列j 然后对于第j列的cnt[1..n][j] 我们把这n个数字排个序(升序) 然后顺序枚举这n个数字 假设我们枚举到了第i个数字,显然第i~n这n-i+1个数字是能组成一个宽为cnt[i][j]长为n-i+1的矩形的 且这些矩形的左边界都是i 这就是这道题的技巧所在了 找到最短的宽度,让比它长的都和它适应 秒…