这是T1。

  考场上思路与正解就差个前缀,打的线段树,因为其巨大常数快乐挂掉。。。。。。

  正解复杂度是\(O(n^2m)\),其实再挂个\(log\)也能过,但是需要用常数极其优秀的树状数组外加大大大大大大大大大大大大大大大大力卡常。

  有点像之前做的入阵曲一题。

  首先\(n\)很小,那么考虑\(O(n^2)\)枚举上下界,然后用一个指针扫一边,具体实现比较像入阵曲,可以参考着看。

  大部分思路是一样的,只是有一点,这题要做桶的前缀和。

  首先要证明一点就是点个数比自己小的矩阵一定在自己前面,那就可以统计完桶后,直接前缀,前缀可以直接用。

  其实即使没有这个性质也可以直接统计桶,做前缀然后加减,因为即使桶所记录的矩阵在自己后面,从自己这里统计也没关系,只要能保证一一对应不会统计重或漏即可

  这也可以看作统计的一个原则,就是只要不重不漏,统计方式是无所谓的。

Code
#include<bits/stdc++.h>
using namespace std;
namespace STD
{
#define rr register
#define scanf ybbb=scanf
typedef long long ll;
const int M=5e4+4;
const int N=32;
int n,m,l,r,ybbb;
char s[M];
int mat[N][M];
int ton[30*M];
int read()
{
rr int x_read=0,y_read=1;
rr char c_read=getchar();
while(c_read<'0'||c_read>'9')
{
if(c_read=='-') y_read=-1;
c_read=getchar();
}
while(c_read<='9'&&c_read>='0')
{
x_read=(x_read<<3)+(x_read<<1)+(c_read^48);
c_read=getchar();
}
return x_read*y_read;
}
};
using namespace STD;
int main()
{
n=read(),m=read();
for(rr int i=1;i<=n;i++)
{
scanf("%s",s+1);
for(rr int j=1;j<=m;j++)
if(s[j]=='1')
mat[i][j]=1;
}
l=read(),r=read();
for(rr int i=1;i<=n;i++)
for(rr int j=1;j<=m;j++)
mat[i][j]+=mat[i][j-1];
for(rr int i=1;i<=n;i++)
for(rr int j=1;j<=m;j++)
mat[i][j]+=mat[i-1][j];
ll ans=0;
for(rr int i=1;i<=n;i++)
for(rr int j=i;j<=n;j++)
{
for(rr int k=1;k<=m;k++)
{
if(!l)
ans+=ton[mat[j][k]-mat[i-1][k]];
ton[mat[j][k]-mat[i-1][k]]++;
}
for(rr int k=1;k<=mat[j][m]-mat[i-1][m];k++)
ton[k]+=ton[k-1];
for(rr int k=1;k<=m;k++)
{
int temp=mat[j][k]-mat[i-1][k];
if(l<=temp&&temp<=r) ans++;
if(l<=temp)
{
if(l)
{
if(temp>r)
ans+=ton[temp-l]-ton[temp-r-1];
else
ans+=ton[temp-l];
}
else
{
if(temp>r)
ans+=ton[temp-l-1]-ton[temp-r-1];
else
ans+=ton[temp-l-1];
}
}
}
for(rr int k=0;k<=mat[j][m]-mat[i-1][m];k++)
ton[k]=0;
}
printf("%lld\n",ans);
}

NOIP模拟38:a的更多相关文章

  1. Noip模拟38 2021.8.13

    T1 a 跟入阵曲很像,但是忘记入阵曲这题的思路是什么了 这里再提一下,入阵曲是子矩阵和是$k$的倍数,这道题目是子矩阵和是在一段区间内$[L,R]$ 因为这道题$n$特别小,$m$较大,考虑复杂度为 ...

  2. 2021.8.13考试总结[NOIP模拟38]

    T1 a 入阵曲.枚举矩形上下界,之后从左到右扫一遍.用树状数组维护前缀和加特判可以$A$,更保险要脸的做法是双指针扫,因为前缀和单调不减. $code:$ 1 #include<bits/st ...

  3. NOIP模拟 38

    liu_runda的题! 错过辽QAQ T1虽然没用题解的损益法,但是用高精%还能过.. 没想到敲完就过编译了,还以为要调一天呢 高精度的阴影没了- T2的思路很巧妙 首先一个区间最多有一种颜色占一半 ...

  4. NOIP 模拟 $38\; \rm c$

    题解 \(by\;zj\varphi\) 发现就是一棵树,但每条边都有多种不同的颜色,其实只需要保留随便三种颜色即可. 直接点分治,将询问离线,分成一端为重心,和两端都不为重心的情况. 每次只关心经过 ...

  5. NOIP 模拟 $38\; \rm b$

    题解 \(by\;zj\varphi\) 考虑转化问题,将计算最大公约数换为枚举最大公约数. 设 \(sum_i\) 为最大公约数为 \(i\) 的方案数,可以容斥求解,\(sum_i=f_i-\su ...

  6. NOIP 模拟 $38\; \rm a$

    题解 \(by\;zj\varphi\) 压行. 枚举两行,将中间的行压成一行,然后直接前缀和加二分. 注意边界细节问题. Code #include<bits/stdc++.h> #de ...

  7. noip模拟38

    \(\color{white}{\mathbb{深秋总有廖落处,雁归每是菊败时,名之以:残菊}}\) 这场比赛几乎全场都在打暴力,几乎人均切掉的 \(t1\) 没有想到双指针,\(t3\) 的暴力也没 ...

  8. NOIP模拟38:b

      这是T2.   一个容斥(其实也可以欧拉反演做,但是我不会).   首先开一个桶,记录第i行的j有多少个.   然后枚举1-\(maxn\),枚举他的值域内的倍数,记录倍数在第i行有多少个,将个数 ...

  9. NOIP模拟17.9.22

    NOIP模拟17.9.22 前进![问题描述]数轴的原点上有一只青蛙.青蛙要跳到数轴上≥

随机推荐

  1. 面试官:展开说说,Spring中Bean对象是如何通过注解注入的?

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 章节目录(手写Spring,让你了解更多) [x] 第 01 章:开篇介绍,我要带你撸 Spr ...

  2. python安全编程之指纹识别

    什么是cms CMS是Content Management System的缩写,意为"内容管理系统",这是百度百科的解释,意思是相当于网站的建站模板,整个网站架构已经集成好了,只需 ...

  3. 模拟input type=file

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. C作用域

    任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问.C 语言中有三个地方可以声明变量: 在函数或块内部的局部变量 在所有函数外部的全局变量 在形式参数的函数参数定义中 局 ...

  5. 超详细Java基础-多态

    茫茫人海千千万万,感谢这一秒你看到这里.希望我的能对你的有所帮助!共勉! 愿你在未来的日子,保持热爱,奔赴山海! Java基础知识(多态) 多态 多态就是指程序中定义的引用变量所指向的具体类型和通过该 ...

  6. 编程熊讲解LeetCode算法《二叉树》

    大家好,我是编程熊. 往期我们一起学习了<线性表>相关知识. 本期我们一起学习二叉树,二叉树的问题,大多以递归为基础,根据题目的要求,在递归过程中记录关键信息,进而解决问题. 如果还未学习 ...

  7. [C++]-vector 向量

    什么是向量容器 向量容器是一种支持高效的随机访问和高效的尾部插入新元素的容器. 向量容器一般实现为一个动态分配的数组,向量中的元素连续的存放在这个数组中,因此对向量容器进行随机访问具有和动态访问动态数 ...

  8. 源码解析.Net中IConfiguration配置的实现

    前言 关于IConfituration的使用,我觉得大部分人都已经比较熟悉了,如果不熟悉的可以看这里.因为本篇不准备讲IConfiguration都是怎么使用的,但是在源码部分的解读,网上资源相对少一 ...

  9. PHPMailer 远程命令执行漏洞 Writeup

    漏洞概述 1.漏洞简介 PHPMailer 小于5.2.18的版本存在远程代码执行漏洞.成功利用该漏洞后,攻击者可以远程任意代码执行.许多知名的 CMS 例如 Wordpress 等都是使用这个组件来 ...

  10. 002 TCP/IP模型

    一.TCP/IP 的含义 一般来说,TCP/IP是利用IP进行通信时所必须用到的协议群的统称. 具体点,IP或ICMP.TCP或UDP.TELENT或FTP.以及HTTP等都属于TCP/IP协议,而T ...