链接

[http://codeforces.com/contest/1060/problem/C]

题意

给你两个数列,可以构成一个矩阵C,ci,j=ai⋅bj 1≤x1≤x2≤n , 1≤y1≤y2≤m

还有一个x,让你求一个子矩阵,使得矩阵元素和小于等于x,面积最大

分析

贪心,思维,只需要求出前缀和,还有长度为i,时子窜和最小

具体看代码

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e3+5;
ll a[N],b[N];
int main(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//freopen("in.txt","r",stdin);
ll n,m,x;
while(cin>>n>>m){
ll sum1[N],sum2[N],mi1[N],mi2[N];
memset(mi1,0x3f,sizeof(mi1)); memset(mi2,0x3f,sizeof(mi2));
for(int i=1;i<=n;i++) {
cin>>a[i];
sum1[i]=sum1[i-1]+a[i];//统计单个列的前缀和
} for(int i=1;i<=m;i++)
{
cin>>b[i];
sum2[i]=sum2[i-1]+b[i];//统计单个列的前缀和
}
cin>>x;
for(int i=1;i<=n;i++){
for(int j=0;i+j<=n;j++){
mi1[i]=min(mi1[i],sum1[i+j]-sum1[j]);//长度为i的最小值为多少
}
}
for(int i=1;i<=m;i++){
for(int j=0;i+j<=m;j++){
mi2[i]=min(mi2[i],sum2[i+j]-sum2[j]);//长度为i的最小值为多少
}
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(mi1[i]*mi2[j]<=x) ans=max(ans,i*j);//贪心 ,因为mi1和mi2都是长度分别为i,j时,和最小的
//使得相同i,j情况下 ,mi1[i]*mi2[j]尽可能小
}
}
cout<<ans<<endl;
}
return 0;
}

C. Maximum Subrectangle的更多相关文章

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

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

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

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

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

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

  4. CF1060C Maximum Subrectangle

    思路: 不难发现,对矩阵中的数字求和实际上是先分别对a,b两个数列中对应子段的元素求和再相乘.题目是要求在和不超过给定值的情况下使选出的矩阵面积最大.我们反其道而行之,考虑在子段长度一定的情况下,和最 ...

  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. SQL Server2008 4064错误

    无法打开用户默认数据库,登录失败,其原因是登录帐户的默认数据库被删除.    解决办法是使用管理员帐户修改此登录帐户的默认数据库.   1.使用管理员帐号登入企业管理器,在"对象资源管理器& ...

  2. Unity3D中自带事件函数的执行顺序

    在Unity3D脚本中,有几个Unity3D自带的事件函数按照预定的顺序执行作为脚本执行.其执行顺序如下: 编辑器(Editor) Reset:Reset函数被调用来初始化脚本属性当脚本第一次被附到对 ...

  3. 五、git创建及合并分支

    1. 创建并切换到dev分支 git checkout -b dev // git checkout命令加上-b参数表示创建并切换,相当于以下两条命令 git branch dev git check ...

  4. jQuery.form 的最新版本是 3.14

    http://www.oschina.net/news/32628/jquery-form-3-14 有日子没跟进 jQuery.form 插件了,该插件已经从 2.xx 更新到 3.xx 了,目前最 ...

  5. 控件_AnalogClock

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  6. 在环中(Going in Cycle!!, UVa 11090)

    [题目描述] 给定一个 n 个点 m 条边的加权有向图,求平均权值最小的回路. [输入格式] 输入第一行为数据组数 T .每组数据第一行为图的点数 n 和边数 m (n ≤ 50).以下 m 行每行3 ...

  7. 修改CentOS 7.2系统的主机名

    之前使用网上的大部分说法,修改了两个配置文件: /etc/hosts /etc/sysconfig/network 然后,并没有什么卵用. 后来,搜阿里云配置,看到这个办法: 使用“经典网络”类型的E ...

  8. PHP获取目录下面所有文件和文件夹

    如果做一个在线的文件管理系统的话,那么首先必须知道怎么读取目录和文件,其实这个功能几行代码就可以实现了. <?php $dir = "D:/";  //要获取的目录 echo ...

  9. 使用 ps、strace、lsof 进行 Linux 进程 trouble-shooting

      linux_observability_tools 介绍 在Linux 下进行进程的排错,有很多方法.比如,修改源代码,print出一些关键的信息,如果代码是Python 的话,可以使用trace ...

  10. ES6中Object.assign() 方法

    ES6中Object.assign() 方法 1. 对象合并Object.assign 方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象上.如下代码演示: var targ ...