洛谷P5300 与或和

题目链接

按照二进制将矩阵转换为32个01矩阵,and和就是一个01矩阵中全1子矩阵的个数乘以当前矩阵的贡献值,or和就是(总子矩阵个数-全0子矩阵的个数)*当前矩阵的贡献值。

#include "bits/stdc++.h"using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int maxn = 1e3 + 100;
bool d[35][maxn][maxn];
ll num[maxn][maxn];
ll st[maxn], tot, up[maxn], down[maxn];
int n;void getnum(int k, int op) {//op为0时计算1的个数for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {num[i][j] = (d[k][i][j] ^ op) ? num[i][j - 1] + 1 : 0;}}
}ll getcnt() {ll ret = 0;for (int j = 1; j <= n; j++) {tot = 0;for (int i = 1; i <= n; i++) {if (num[i][j]) {up[i] = 1;while (tot && num[i][j] <= num[st[tot]][j]) {up[i] += up[st[tot]];tot--;}st[++tot] = i;} else {up[i] = 0;tot = 0;}}tot = 0;for (int i = n; i >= 1; i--) {if (num[i][j]) {down[i] = 1;while (tot && num[i][j] < num[st[tot]][j]) {down[i] += down[st[tot]];tot--;}st[++tot] = i;} else {down[i] = 0;tot = 0;}ret = (ret + up[i] * down[i] * num[i][j] % mod) % mod;}}return (ret + mod) % mod;
}ll p[35];int main() {//freopen("in.txt", "r", stdin);cin >> n;ll x, nn = 0;p[0] = 1;for (int i = 1; i <= 32; i++) {p[i] = p[i - 1] * 2 % mod;}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {nn = (nn + i * j) % mod;cin >> x;for (int k = 0; k <= 32; k++) {if (x & (1ll << k)) {d[k][i][j] = true;}}}}ll ansand = 0, ansor = 0;for (int k = 0; k <= 32; k++) {getnum(k, 0);ansand = (ansand + p[k] * getcnt() % mod) % mod;getnum(k, 1);ansor = (ansor + p[k] * (nn - getcnt() + mod) % mod) % mod;}cout << ansand << " " << ansor << endl;return 0;
}

转载于:https://www.cnblogs.com/albert-biu/p/10867702.html

洛谷P5300 与或和(全1子矩阵/单调栈)相关推荐

  1. 【洛谷 P3194】 [HNOI2008]水平可见直线 (单调栈)

    题目链接 把线段以斜率为第一关键字,截距为第二关键字升序排序. 然后维护一个单调栈,保证栈中两两线段的交点的\(x\)坐标单调上升就行了.栈中的线段即为所求. #include <cstdio& ...

  2. 洛谷 P4147 玉蟾宫【悬线法/单调栈】

    题目背景 有一天,小猫 rainbow 和 freda 来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成 N×MN\times MN×M ...

  3. 单调栈求全1(或全0)子矩阵的个数 洛谷P5300与或和 P3400仓鼠窝

    爆零好爽,被中学生虐好爽,还好我毕业得早 求全1(或全0)子矩阵的个数,看了题解有好几种思路,我学了三种,但有两种不是很理解,而且也没另外那个跑得快,所以简单讲述一一下我会的那种来自Caro23333 ...

  4. 洛谷3953 (NOIp2017) 逛公园——记忆化搜索+用栈判0环

    题目:https://www.luogu.org/problemnew/show/P3953 因为K只有50,所以想到用dp[ cr ][ j ]表示在点cr.比最短路多走了 j 的方案数.(看了TJ ...

  5. 51nod 1158 全是1的最大子矩阵(单调栈 ,o(n*m))

    前置问题:51nod 1102 面积最大的矩形 附上链接: 51nod 1102 面积最大的矩形 这题的题解博客 需要了解的知识:单调栈,在前置问题中已经讲解. 解题思路 对每行求左边连续1的个数,得 ...

  6. 洛谷省选斗兽场全通关祭~以及之后的打算!

    18/5/2:洛谷省选斗兽场全通关祭! 洛谷也算是坚持了下去,到现在为止已经是有244道题AC了. 虽然我各大oj的刷题量加在一起也没有大佬的十分之一,我的智商也不及大佬的百分之一,但是相信智商刷也是 ...

  7. (洛谷入门系列,适合洛谷新用户)洛谷功能全解

    目录 前注 前言 第一章 进入方式 1.1 基础操作 1.2 两步验证 1.3 安全邮箱和安全手机 第二章 侧栏与主界面介绍 2.1 蓝底白色洛谷标志 2.2 "应用>>&quo ...

  8. 洛谷P1914题解——(本地测试AC但是交题爆零全WA)使用getchar();

    本题最大的坑在于: windows环境下的换行符为\r\n,linux环境的换行符为\n. 我们再来看看洛谷的部分OJ判题机数据和机制 常见"我在本地/xxOJ AC了.洛谷却不过" ...

  9. 记忆优化搜索(简单题)(洛谷P3183 [HAOI2016]食物链 )( P5635 【CSGRound1】天下第一 )

    昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了... 洛谷P318 ...

  10. 洛谷专题训练 ——【算法1-1】模拟与高精度

    洛谷题单[算法1-1]模拟与高精度 ACM-ICPC在线模板 题单链接: [算法1-1]模拟与高精度 下面的这一坨都是洛谷题单上的东东 题单简介 恭喜大家完成了第一部分语言入门,相信大家已经可以使用 ...

最新文章

  1. 基于 linux 平台的 libpcap 源代码分析
  2. linux开启FTP以及添加用户配置权限,只允许访问自身目录,不能跳转根目录
  3. 下边框_山寨iPhone12Pro开箱:浴霸四摄更小,下边框有点宽
  4. 01背包 模板1 2 总结
  5. 影响Unix多版 FTP曝严重远程执行漏洞
  6. ActiveMQ安装配置
  7. 线性表_循环链表(增减删查 + 约瑟夫环问题 代码实现 )
  8. 收钱吧好还是网付好?
  9. 高考2021加3科目成绩查询,官方解读:2021新高考实施方案正式公布,首选科目按原始分计入总成绩!...
  10. Backstepping反步法控制四旋翼无人机(2)
  11. JVM垃圾回收(二) 垃圾回收算法
  12. 解决阿里云redis监听6379,配置规则也将6379端口开放,但是外网仍无法连接6379的问题。
  13. android拍照保存到系统相册,调用系统相机拍照,并且保存到系统相册的一般套路...
  14. 使用Unity进行Android游戏开发
  15. 视频剪辑工具,批量给视频添加上下图片
  16. 《途客圈创业记:不疯魔,不成活》一一2.3 早期产品
  17. 【转】流体动力学控制方程(详细推导)
  18. python_day11(笔记及练习)
  19. win10进入系统后一会儿卡死?
  20. 如何将Creo3.0模型导入Ansoft Maxwell 中电磁仿真

热门文章

  1. HDOJ--2066--一个人的旅行
  2. 多第八田间学校:几何+图论出度+模拟+找到规律
  3. WebService - RoadMap
  4. 子页面赋值给父页面的控件方法
  5. js 禁用和解除禁用按钮_js禁用button,js 将某个按钮禁用5秒钟
  6. Nginx源码分析 - 主流程篇 - 解析配置文件(13)
  7. Tomcat access log配置
  8. centos 安装指定版本的node
  9. 万物互联的根底就是嵌入式,小到智能手表,大到智能汽车,能落地的支撑之一就是嵌入式。
  10. Hibernate的双向1-1关联(七)