题目连接:https://codeforces.com/contest/1323/problem/B

题意:给一个大小为n的a数组,一个大小为m的b数组,c数组是二维数组c[i][j]=a[i]*b[j],问面积为k的矩形有几个。

题解:先把k的所有因子存入一个数组里,然后遍历因子,表示在a数组有 i 个连续的1,那么如果在b数组里有 k/i 个连续的1,形成的矩形面积就是k(线代的矩阵乘法自己脑补一下吧),计算出a数组中符合条件的个数乘以b数组中符合条件的个数,然后把每个因子下的都加起来就是答案。

 1 #include<bits/stdc++.h>
2 #define ll long long
3 using namespace std;
4
5 int a[100100],b[100100];
6 int c[100100];
7
8 int main()
9 {
10 int n,m,k;
11 cin>>n>>m>>k;
12 for(int i=0;i<n;i++) cin>>a[i];
13 for(int i=0;i<m;i++) cin>>b[i];
14 int p=0;
15 for(int i=1;i*i<=k;i++){
16 if(k%i==0){
17 c[p++]=i;
18 if(i==k/i) continue;
19 c[p++]=k/i;
20 }
21 }
22 ll ans=0;
23 for(int i=0;i<p;i++){
24 int cnt=0;
25 ll x=0,y=0;
26 for(int j=0;j<n;j++){
27 if(a[j]==1) cnt++;
28 else cnt=0;
29 if(cnt==c[i]) cnt--,x++;
30 }
31 cnt=0;
32 for(int j=0;j<m;j++){
33 if(b[j]==1) cnt++;
34 else cnt=0;
35 if(cnt==k/c[i]) cnt--,y++;
36 }
37 ans=ans+x*y;
38 }
39 cout<<ans<<endl;
40 return 0;
41 }

最新文章

  1. 鼠标拖动在picturebox上画圆时
  2. 【CImg】霍夫变换——直线检测
  3. Android之获得内存剩余大小与总大小
  4. 演练5-8:Contoso大学校园管理系统(实现存储池和工作单元模式)
  5. C/C++用匿名数据结构实现时间和空间名利双收
  6. ES6的开发环境搭建
  7. Redis 慢日志
  8. Jenkins之Log Parse的使用
  9. Linux 实例常用内核网络参数介绍与常见问题处理
  10. Xposed免重启调试工具类
  11. 【转】Win32程序中调用ActiveX控件
  12. C#:时间日期操作(持续更新)
  13. js获取浏览器对象的信息
  14. html (第四本书第四章参考)
  15. 数据挖掘 Apriori Algorithm python实现
  16. jenkins报:反向代理设置有误
  17. Windows上安装Node.js
  18. Matlab图像处理教程
  19. 最近升级mysql5.7出现下面问题,ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_by
  20. 【VBA编程】01.第一个VBA程序Hello world

热门文章

  1. 超有用的linux笔记
  2. PHP 导入Excel数据 到数据库
  3. Serverless 如何应对 K8s 在离线场景下的资源供给诉求
  4. Flutter 应用入门:计数器
  5. Spring Boot超详细用户管理项目(零)——开发前准备
  6. 查询数据库v$session时报部分多维元组字元
  7. Ubuntu20.04安装Typora
  8. 配置 containerd 镜像仓库完全攻略
  9. 糊糊的学习笔记--Fiddle抓包
  10. Architecture and design 洋葱 中间件 装饰器