题意:给定你一个数串s,再给你一个 a ,问你在矩阵d(第i,j个元素为si*sj)有多少个小矩形的和为a

解题思路:可知  a = (s[x] + s[x+1] + ....s[y])* (s[p]+s[p+1]+....s[q]);    我们只需要枚举各字串的和以及其个数就可以得到所求小矩形的个数

解题代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 char a[4005];
 4 __int64 b[4005];
 5 __int64 hs[40005];
 6 __int64 sum[4005];
 7 int main()
 8 {
 9     __int64 k ;
10     scanf("%I64d",&k);
11     scanf("%s",a);
12     memset(hs,0,sizeof(hs));
13     __int64 len = strlen(a);
14     for(__int64 i= 0 ;i < len ;i ++)
15     {
16         b[i+1] = a[i] - '0';
17     }
18     sum[0] = 0 ;
19     sum[1] = b[1];
20     for(__int64 i = 1;i <= len;i ++)
21         sum[i] = sum[i-1] + b[i];
22
23     for(__int64 i = 0;i <= len;i ++)
24         for(__int64 j = i+1; j<= len ; j ++ )
25         {
26             hs[sum[j] - sum[i]] ++;
27         }
28
29     //  printf("%I64d %I64d\n",hs[0],hs[1]);
30         __int64 ans = 0 ;
31         if(k != 0 ){
32             for(__int64 i = 1;i <= 40000;i ++)
33             {
34                 if(k % i == 0  &&  (k / i) <= 40000)
35                     ans += hs[i] * hs[k/i];
36             }
37         }
38         else
39         {
40             ans = hs[0] *hs[0];
41             for(int i = 1 ;i <= 40000;i ++)
42                 ans += hs[i]*hs[0]*2;
43
44         }
45         printf("%I64d\n",ans);
46         return 0;
47 }

View Code

转载于:https://www.cnblogs.com/zyue/p/3434319.html

Codeforces 365C - Matrix(hash + yy)相关推荐

  1. Berkeley DB的数据存储结构——哈希表(Hash Table)、B树(BTree)、队列(Queue)、记录号(Recno)...

    Berkeley DB的数据存储结构 BDB支持四种数据存储结构及相应算法,官方称为访问方法(Access Method),分别是哈希表(Hash Table).B树(BTree).队列(Queue) ...

  2. 十、散列表(Hash Table)

    一.概述 散列表(Hash Table),也称"哈希表"或者"Hash 表" 1.相关概念 原始数据叫作键(键值)或关键字(key): 将原始数据转化为数组下标 ...

  3. 数据结构学习笔记(七):哈希表(Hash Table)

    目录 1 哈希表的含义与结构特点 1.1 哈希(Hash)即无序 1.2 从数组看哈希表的结构特点 2 哈希函数(Hash Function)与哈希冲突(Hash Collision) 2.1 哈希函 ...

  4. 【LeetCode-面试算法经典-Java实现】【054-Spiral Matrix(螺旋矩阵)】

    [054-Spiral Matrix(螺旋矩阵)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a matrix of m x n elements (m ...

  5. Color correction matrix(色彩矩阵)的学习思考

    Color correction matrix(色彩矩阵)的学习思考 转载于:Color correction matrix(色彩矩阵)的学习思考 一张好的色彩效果图像,是gamma,AWB,CCM, ...

  6. 算法设计与分析——散列表/哈希表(Hash Table):直接寻址表

    分类目录:<算法设计与分析>总目录 相关文章: ·散列表/哈希表(Hash Table)(一):基础知识 ·散列表/哈希表(Hash Table)(二):直接寻址表 ·散列表/哈希表(Ha ...

  7. 哈希表(Hash Table)及散列法(Hashing)

    bigshuai 哈希 源地址 http://www.cnblogs.com/bigshuai/articles/2398116.html 哈希表(Hash Table)及散列法(Hashing) 数 ...

  8. Redis数据类型(hash 类型)

    Redis数据类型(hash 类型) hash 类型及操作 ① 概述 ② 相关命令列表 ③ 命令示例 hash 类型及操作 ① 概述 Redis中的Hash类型可以理解是具有String Key和St ...

  9. Redis初学:8(Hash类型)

    Hash(哈希)类型 简介 Redis中的hash是一个键值对集合.它是一个String类型的field和value的映射表,所以它特别适合用来存储对象. 如下图: Redis中的hash类似于Jav ...

最新文章

  1. Pubwin EP 正式版完整安装全程-完整安装配置
  2. delete语句与reference约束冲突怎么解决_mysql update语句和原数据一样会更新么
  3. linux shell脚本 wget,bash – 在shell脚本中运行wget和其他命令
  4. 子类继承父类后调用virtual函数问题(base.函数名)
  5. stract oracle,ORACLE 字符串聚合函数 strCat
  6. c语言一元二次方程 ii(分支嵌套),C程序设计——求一元二次方程算法
  7. 【litrpa专题】首个rpa程序,使用litrpa采集百度地图地铁数据
  8. java 找出调用的方法_如何找到用Java调用给定方法的所有方法?
  9. p73_万维网和HTTP协议
  10. 百度地图json_R: 民政部官网市级行政地图的绘制
  11. SVPWM算法的推导
  12. vs2013 update5离线升级包下载地址
  13. Android 获取SN号
  14. Android 9.0 USER_ROTATION重启后恢复默认值
  15. 电脑上的ofd格式文件如何打开呢_ofd文件怎么打开用什么软件
  16. 汇编———标志(flag)寄存器
  17. 天美生物在美上市背后:财务报表存在重大缺陷,胡永卫持股34%
  18. Python VLC+PyQt5 读取视频音频流
  19. 免费的午餐——编程利用Google日历API发短信、Email
  20. 分享Oracle 11G OCP电子版教材(051,052,053)

热门文章

  1. java getabsolutepath,详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
  2. 后端技术:Web安全常见漏洞和修复建议,值得收藏!
  3. 详解MQ消息队列及四大主流MQ的优缺点
  4. 程序语言的组成知识笔记
  5. 收集 48 个 JavaScript 代码片段,仅需 30 秒就可理解(值得收藏)
  6. 幽默:程序员背后的心酸日常,你懂多少?
  7. 计算机b级英语翻译,英语B级考试翻译必备常用短句
  8. oracle report builder 6i下载,oracle report builder 6i - 数据模型中的SQL查询代码
  9. FastReport使用方法(C/S版)
  10. RN自定义组件封装 - 播放类似PPT动画