https://codeforces.com/contest/1060/problem/C

题意:给你一个长度为n的数列a和长度为m的数列b,定义c(i,j)=ai*bj,得到c矩阵,给定值x,求c矩阵中的子矩阵和小于等于x的最大的元素个数

题解:和hihocoder上面一题很想~链接http://hihocoder.com/problemset/problem/1502 ,不同的是这题用n^3的做法会T哭

   我们可以想到,一个子矩阵的和就是 (a[i]+a[i+1]+...+a[j])*(b[i]+b[i+1]+...+b[j])。于是我们先预处理a和b 的前缀和,然后n^2判断即可

代码如下:

#include <map>
#include <set>
#include <cmath>
#include <ctime>
#include <stack>
#include <queue>
#include <cstdio>
#include <cctype>
#include <bitset>
#include <string>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional>
#define PI acos(-1)
#define eps 1e-8
#define fuck(x) cout<<#x<<" = "<<x<<endl;
#define FIN freopen("input.txt","r",stdin);
#define FOUT freopen("output.txt","w+",stdout);
//#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int maxn = 1e5+;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9+;
LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
LL lcm(LL a,LL b){return a/gcd(a,b)*b;}
LL powmod(LL a,LL b,LL MOD){LL ans=;while(b){if(b%)ans=ans*a%MOD;a=a*a%MOD;b/=;}return ans;}
double dpow(double a,LL b){double ans=1.0;while(b){if(b%)ans=ans*a;a=a*a;b/=;}return ans;}
LL a[],b[],c[][];
LL sum[][];
LL suma[];
LL sumb[];
int main(){
#ifndef ONLINE_JUDGE
FIN
#endif
LL n,m,x;
cin>>n>>m;
a[]=b[]=;
for(int i=;i<=n;i++){
cin>>a[i];
a[i]=a[i]+a[i-];
}
for(int i=;i<=m;i++){
cin>>b[i];
b[i]=b[i]+b[i-];
}
cin>>x;
memset(suma,INF,sizeof(suma));
memset(sumb,INF,sizeof(sumb));
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(j+i->n) break;
suma[i]=min(suma[i],a[j+i-]-a[j-]);
}
}
for(int i=;i<=m;i++){
for(int j=;j<=m;j++){
if(j+i->m) break;
sumb[i]=min(sumb[i],b[j+i-]-b[j-]);
}
}
LL ans=;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if((LL)suma[i]*sumb[j]<=x){
ans=max(ans,i*j*1LL);
}
}
} cout<<ans<<endl;
// for(int i=1;i<=n;i++){
// for(int j=1;j<=m;j++){
// cout<<c[i][j]<<" ";
// }
// cout<<endl;
// }
}

最新文章

  1. linux用户管理(二)
  2. PHP 知识点
  3. msysGit管理GitHub代码
  4. C 替换字符方法
  5. Win10年度更新开发必备:VS2015 Update 3正式版下载汇总
  6. 坚持不懈之linux haproxy 配置文件 详情
  7. Servlet常见错误及解决方法
  8. (一)问候Spring4
  9. ActionScript接收socket服务器发送来的数据
  10. 深入JS系列学习2
  11. Android 音视频编解码——RGB与YUV格式转换
  12. node概述
  13. ECMA6 New Features
  14. 软工网络15团队作业4——Alpha阶段敏捷冲刺
  15. 【apache2】AH00543: httpd: bad user name apache
  16. WEB框架本质和第一个Django实例
  17. Windows Phone 8.1不完全体验报告
  18. Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串
  19. POP缩放动画
  20. Unity3D之AR开发(一)

热门文章

  1. SEARCH(文字の検索)
  2. ABAP CDS ON HANA-(4)ヘッダー行編集
  3. GET TIME
  4. 初步学习pg_control文件之五
  5. Android 数据库 ANR的例子
  6. Android PopupWindow 疑难杂症之宽度WRAP_CONTENT
  7. beta版本冲刺四
  8. web相关基础知识2
  9. php获取微信token和ticket并返回签名
  10. 入口文件-npm run dev