题意:给出数组a,b,组成矩阵c,其中$c_{ij}=a_i*b_j$,找出最的大子矩阵,使得矩阵元素和<=x,求这个矩阵的size

n,m<=2000

思路:对于子矩阵(l1...r1)*(l2...r2),矩阵元素和为(a[l1]+a[l1+1]+...+a[r1])*(b[l2]+b[l2+1]+...+b[r2])

这样处理出长度为i的连续数组最小和aa[i],bb[i],再枚举一下长度即可

代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<string>
  7. //#include<stack>
  8. #include<queue>
  9. #include<deque>
  10. #include<set>
  11. #include<vector>
  12. #include<map>
  13. #include<functional>
  14.  
  15. #define fst first
  16. #define sc second
  17. #define pb push_back
  18. #define mem(a,b) memset(a,b,sizeof(a))
  19. #define lson l,mid,root<<1
  20. #define rson mid+1,r,root<<1|1
  21. #define lc root<<1
  22. #define rc root<<1|1
  23. #define lowbit(x) ((x)&(-x))
  24.  
  25. using namespace std;
  26.  
  27. typedef double db;
  28. typedef long double ldb;
  29. typedef long long ll;
  30. typedef unsigned long long ull;
  31. typedef pair<int,int> PI;
  32. typedef pair<ll,ll> PLL;
  33.  
  34. const db eps = 1e-;
  35. const int mod = ;
  36. const int maxn = 2e5+;
  37. const int maxm = 2e5+;
  38. const int inf = 0x3f3f3f3f;
  39. const db pi = acos(-1.0);
  40.  
  41. ll a[maxn],b[maxn];
  42. ll aa[maxn], bb[maxn];
  43. int main() {
  44. int n, m;
  45. scanf("%d %d", &n, &m);
  46. mem(a, );
  47. mem(b, );
  48. for(int i = ; i <= n; i++){
  49. scanf("%lld", &a[i]);
  50. a[i]+=a[i-];
  51. }
  52. for(int i = ; i <= m; i++){
  53. scanf("%lld", &b[i]);
  54. b[i]+=b[i-];
  55. }
  56. ll ans = ;
  57. ll tmp = ;
  58. ll x;
  59. scanf("%lld", &x);
  60. mem(aa,0x3f);
  61. mem(bb,0x3f);
  62. for(int i = ; i <= n; i++){
  63. for(int j = ; j <= i; j++){
  64. //j~i
  65. aa[i-j+]=min(aa[i-j+],a[i]-a[j-]);
  66. }
  67. }
  68. for(int i = ; i <= m; i++){
  69. for(int j = ; j <= i; j++){
  70. bb[i-j+]=min(bb[i-j+],b[i]-b[j-]);
  71. }
  72. }
  73.  
  74. for(int i = ; i <= n; i++){
  75. for(int j = ; j <= m; j++){
  76. if(aa[i]*bb[j]<=x)ans = max(ans, 1ll*i*j);
  77. }
  78. }
  79. printf("%lld", ans);
  80. return ;
  81. }

Codeforces 1060C Maximum Subrectangle(子矩阵+预处理)的更多相关文章

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

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

  2. Codeforces 484B Maximum Value(高效+二分)

    题目链接:Codeforces 484B Maximum Value 题目大意:给定一个序列,找到连个数ai和aj,ai%aj尽量大,而且ai≥aj 解题思路:类似于素数筛选法的方式,每次枚举aj,然 ...

  3. Codeforces C. Maximum Value(枚举二分)

    题目描述: Maximum Value time limit per test 1 second memory limit per test 256 megabytes input standard ...

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

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

  5. CF 375B Maximum Submatrix 2[预处理 计数排序]

    B. Maximum Submatrix 2 time limit per test 2 seconds memory limit per test 512 megabytes input stand ...

  6. [Codeforces Round #508 (Div. 2)][Codeforces 1038E. Maximum Matching]

    前几天给舍友讲这题的时候感觉挺有意思的,就贴上来吧... 题目链接:1038E - Maximum Matching 题目大意:有\(n\)个棒子,每个条两端有颜色\(c1,c2\)以及他的价值\(v ...

  7. [Manthan, Codefest 18][Codeforces 1037F. Maximum Reduction]

    题目链接:1037F - Maximum Reduction 题目大意:给出一段代码,给你一个长度为n的数组和数字k,求程序运行结果,mod 1e9+7输出 简单翻译下代码的意思,初始定义一个空数组b ...

  8. C. Maximum Subrectangle

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

  9. Codeforces 332B Maximum Absurdity(DP+前缀和处理)

    题目链接:http://codeforces.com/problemset/problem/332/B 题目大意:给你n个数和一个整数k,要求找到不相交的两个长度为k的区间,使得区间和最大,输出这两个 ...

随机推荐

  1. Kubernetes资源与对象简述

    资料 k8s基本对象概念 背景 资源和对象   Kubernetes 中的所有内容都被抽象为"资源",如 Pod.Service.Node 等都是资源."对象" ...

  2. angular.foreach 循环方法

    angular循环给一个 angular监听的变量复值时.最好还是用angular自带的循环方法.“angular.foreach” 尽量避免代码的冲突,最好不要jq angular 混用 var o ...

  3. CF1200D White Lines | 前缀和

    传送门 Examples input 1 4 2 BWWW WBBW WBBW WWWB output 1 4 input 2 3 1 BWB WWB BWB output 2 2 input 3 5 ...

  4. 关于Itext 报错-java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable

    如果我们在用iText 做为java 为PDF 文档加水印的时候 报如下异常 java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Enc ...

  5. 微信授权流程和JSSDK调用流程

    概念理解 业务域名:当前业务使用的是哪个网站,好处:设置业务域名后,在微信内访问该域名下页面时,不会被重新排版.不出现“防欺诈盗号,请误支付或输入qq密码”的提示,微信认为该域名是安全的,客户也不觉得 ...

  6. springboot2 整合redis

    1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  7. Centos7 搭建Grafana+Jmeter+Influxdb 性能实时监控平台

    未完,待更新 背景 日常工作中,经常会用到Jmeter去压测,毕竟LR还要钱(@¥&*...),而最常用的接口压力测试,我们都是通过聚合报告去查看压测结果的,然鹅聚合报告的真的是丑到家了,作为 ...

  8. 如何用好Go的测试黑科技

    测试是每一个开发人员都需要掌握的技能,尽管你不需要像测试人员那么专业,但你也应该尽可能的做到那么专业,据我了解到我身边的一些Go开发人员,他们对Go的测试仅仅局限于写一个_test.go 测试文件,对 ...

  9. 使用ABAP Data Validator验证数据有效性

    在日常的开发过程中,我们常常要处理不同来源的数据.数据可能来自不可靠的外部系统.不可靠的用户输入和甚至设计有误的数据库表,因此,对数据有效性进行验证是必要的工作. 开源工具ABAP Data Vali ...

  10. C# 调用word进程操作文档关闭进程

    C# 调用word进程操作文档关闭进程 作者:Jesai 时间:2018-02-12 20:36:23 前言: office办公软件作为现在主流的一款办公软件,在我们的日常生活和日常工作里面几乎每天都 ...