这是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. Netty入门(一):ByteBuf

    网络数据的基本单位总是字节.Java NIO 提供了 ByteBuffer 作为它的字节容器,但是这个类使用起来过于复杂,而且也有些繁琐.Netty 的 ByteBuffer 替代品是 ByteBuf ...

  2. .Net Core微服务——Consul(4):主从、集群

    延续上一篇的话题继续,顺便放上一篇的传送门:点这里. 集群的必要性 consul本身就是管理集群的,现在还需要给consul搞个集群,这是为啥?因为consul单点也容易挂啊!万一管理集群的consu ...

  3. DASCTF七月赛两道Web题复现

    Ezfileinclude(目录穿越) 拿到http://183.129.189.60:10012/image.php?t=1596121010&f=Z3F5LmpwZw== t是时间,可以利 ...

  4. jdk、jre环境变量配置

    1 jdk和jre的区别: (jdk:Java 开发工具包) (jre:Java 的运行环境) 只需这么记就可以了,想深入了解得自行查询相关资料 2 jdk是包含jre的,所以只需下载jdk. 官方网 ...

  5. Salesforce Integration 概览(六) UI Update Based on Data Changes(UI自动更新基于数据变更)

    Salesforce用户界面必须由于Salesforce数据的更改而自动更新.这个场景其实在我所经历的项目中用到的不是特别多,因为客户可能直接点击刷新按钮就直接看到了最新的数据,而不是那种一直不刷新然 ...

  6. Blind SQL injection:盲注详解

    什么是盲注? 当应用程序易受SQL注入攻击,但其HTTP响应不包含相关SQL查询的结果或任何数据库错误的详细信息时,就会出现盲SQL注入. 对于盲目SQL注入漏洞,许多技术(如联合攻击)都是无效的,因 ...

  7. S3C2440—4.时钟系统

    文章目录 一.S3C2440时钟体系介绍 1.总线与时钟 2.时钟来源 3.选择时钟 4.产生时钟 5.流程 二.如何配置时钟源 1.设置FCLK频率寄存器 MPLLCON 2.设置分频HDIV.PD ...

  8. java实现随机字母数字验证码

    生成随街验证码 VerifyCode 工具类 package com.meeno.common.cerifycode; import javax.imageio.ImageIO; import jav ...

  9. virtualenv 创建python虚拟环境

    为什么要创建python虚拟环境 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目录下. 如 ...

  10. IO流(File类--递归--过滤器--IO字节流--IO字符流--Properties集合--缓冲流--转换流--序列化流--打印流)

    一.File类 1.1概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 1.1.1相对路径与绝对路径 相对路径从盘符开始的路径,这是一个完整 ...