思路:

不难发现,对矩阵中的数字求和实际上是先分别对a,b两个数列中对应子段的元素求和再相乘。题目是要求在和不超过给定值的情况下使选出的矩阵面积最大。我们反其道而行之,考虑在子段长度一定的情况下,和最小是多少。具体来说,首先分别计算a的长度为1,2,...,n的子段中的和的最小值,记为min1[i](i = 1, 2, ..., n)。对b做类似处理得到min2[i](i = 1, 2, ..., m)。然后枚举min1和min2的所有组合即可得出答案。

实现:

 #include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
const int MAXN = ;
const int MAXM = ;
int a[MAXN], b[MAXM], n, m;
ll sum1[MAXN], sum2[MAXM], min1[MAXN], min2[MAXM], x;
int main()
{
while (cin >> n >> m)
{
memset(sum1, , sizeof sum1);
memset(sum2, , sizeof sum2);
memset(min1, 0x3f, sizeof min1);
memset(min2, 0x3f, sizeof min2);
for (int i = ; i <= n; i++)
{
cin >> a[i];
sum1[i] = sum1[i - ] + a[i];
}
for (int i = ; i <= m; i++)
{
cin >> b[i];
sum2[i] = sum2[i - ] + b[i];
}
cin >> x;
for (int i = ; i <= n; i++)
{
for (int j = ; j < n - i + ; j++)
{
min1[i] = min(min1[i], sum1[i + j] - sum1[j]);
}
}
for (int i = ; i <= m; i++)
{
for (int j = ; j < m - i + ; j++)
{
min2[i] = min(min2[i], sum2[i + j] - sum2[j]);
}
}
int ans = ;
for (int i = ; i <= n; i++)
{
for (int j = ; j <= m; j++)
{
if (min1[i] <= x && x / min1[i] >= min2[j])
{
ans = max(ans, i * j);
}
}
}
cout << ans << endl;
}
return ;
}

CF1060C Maximum Subrectangle的更多相关文章

  1. CF1060C Maximum Subrectangle【乘法分配律】【最大子矩阵】

    CF1060C Maximum Subrectangle 题意翻译 现在给出一个长度为N的a数列,一个长度为M的b数列. 现在需要构造出一个矩阵c,其中ci,j​=ai​×bj​.再给出一个x,请在矩 ...

  2. cf1060C. Maximum Subrectangle(思维 枚举)

    题意 题目链接 Sol 好好读题 => 送分题 不好好读题 => 送命题 开始想了\(30\)min数据结构发现根本不会做,重新读了一遍题发现是个傻逼题... \(C_{i, j} = a ...

  3. C. Maximum Subrectangle

    链接 [http://codeforces.com/contest/1060/problem/C] 题意 给你两个数列,可以构成一个矩阵C,ci,j=ai⋅bj 1≤x1≤x2≤n , 1≤y1≤y2 ...

  4. Codeforces Round #513 by Barcelona Bootcamp C. Maximum Subrectangle(双指针+思维)

    https://codeforces.com/contest/1060/problem/C 题意 给两个数组,a数组有n个元素,b数组有m个元素,两个数组元素互相相乘形成n*m的矩阵,找一个子矩阵,元 ...

  5. codeforces_C. Maximum Subrectangle

    http://codeforces.com/contest/1060/problem/C 题意: a.b数组长度分别为n.m.矩阵C,Cij=ai*bj.在C中找到一个子矩阵,该子矩阵所有元素和不大于 ...

  6. Codeforces 1060C Maximum Subrectangle(子矩阵+预处理)

    题意:给出数组a,b,组成矩阵c,其中$c_{ij}=a_i*b_j$,找出最的大子矩阵,使得矩阵元素和<=x,求这个矩阵的size n,m<=2000 思路:对于子矩阵(l1...r1) ...

  7. Codeforces Round #513 总结

    首次正式的$Codeforces$比赛啊,虽然滚粗了,然而终于有$rating$了…… #A  Phone Numbers 签到题,然而我第一次写挂了(因为把11看成8了……) 只需要判断一下有多少个 ...

  8. Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) C D

    C - Maximum Subrectangle 因为是两个数组相乘的到的 矩阵所以  a(i ->j)*b(x->y) 的面积 就是   a(i ->j) 的和乘与b(x-> ...

  9. Codeforces Round #513 游记

    Codeforces Round #513 游记 A - Phone Numbers 题目大意: 电话号码是8开头的\(1\)位数字.告诉你\(n(n\le100)\)个数字,每个数字至多使用一次.问 ...

随机推荐

  1. <十三>UML核心视图静态视图之业务用例图

    一:uml的核心视图 --->如果说UML是一门语言,上一章学习的参与者等元素是uml的基本词汇,那么视图就是语法.uml通过视图将基元素组织在一起,形成有意义的句子. --->uml可视 ...

  2. gulp --- 前端自动化构建工具

    目录 1. gulp使用步骤 1.1 安装Node.js 1.2 全局安装gulp 1.3 安装项目依赖包gulp 1.3.1 了解package.json 1.3.2 根据package.json安 ...

  3. Azure AD (6) 停止Azure AD Connect Sync同步,并删除自定义域名

    <Windows Azure Platform 系列文章目录> 如果你已经了解了我之前写的文章:Azure AD (5) 在单一目录下,使用Azure AD单点登录 应该对使用Azure ...

  4. nohup command > myout.file 2>&1 &

    nohup command > myout.file 2>&1 &

  5. css3单位em,rem,px,vw,vh等

    昨天发现了个好用的方法去设置手机端的rem单位,在这里记录下. html{ font-size:calc(100vw/7.5);} 这是按照750的设计稿(也就是iphone6的设计稿). 100vw ...

  6. sql语句之数据类型

    整形类型:该类型没必要指定显示宽度,使用默认的就ok. 类型 大小 TINYINT 1字节 SMALLINT 2字节 MEDIUMINT 3字节 INT或INTEGER 4字节(后面加的宽度不是存储宽 ...

  7. 洛谷 - P2281 - 多项式的加法和乘法 - 大模拟

    题目链接:https://www.luogu.org/problemnew/show/P2281 题目的意思很简单,输入两个系数.指数都是整数,变量都是大写字母的多项式,求他们的加法结果和乘法结果. ...

  8. TP5之查询那些事

    1.使用 model 查询,查出的类型为 对象 $a 是一个对象,使用 $a->name 的方式来获取 对象里的属性 2.使用 db 查询,查询出的是 数组 $b 是一个数组,使用 $b['na ...

  9. POJ3463【次短路】

    转自:http://www.cnblogs.com/jackge/archive/2013/04/29/3051273.html 算法:最短路和次短路.Dijkstra算法.采用邻接表建图. 总结:不 ...

  10. vue2.0.js基础开发使用心得(结合实际项目对数据的增删改查)

    1.首先申明,没有使用vue 的组件,以及脚手架等,都是一些基础语法的使用. ------------------------------------------------------------- ...