NOIP模拟38:a
这是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的更多相关文章
- Noip模拟38 2021.8.13
T1 a 跟入阵曲很像,但是忘记入阵曲这题的思路是什么了 这里再提一下,入阵曲是子矩阵和是$k$的倍数,这道题目是子矩阵和是在一段区间内$[L,R]$ 因为这道题$n$特别小,$m$较大,考虑复杂度为 ...
- 2021.8.13考试总结[NOIP模拟38]
T1 a 入阵曲.枚举矩形上下界,之后从左到右扫一遍.用树状数组维护前缀和加特判可以$A$,更保险要脸的做法是双指针扫,因为前缀和单调不减. $code:$ 1 #include<bits/st ...
- NOIP模拟 38
liu_runda的题! 错过辽QAQ T1虽然没用题解的损益法,但是用高精%还能过.. 没想到敲完就过编译了,还以为要调一天呢 高精度的阴影没了- T2的思路很巧妙 首先一个区间最多有一种颜色占一半 ...
- NOIP 模拟 $38\; \rm c$
题解 \(by\;zj\varphi\) 发现就是一棵树,但每条边都有多种不同的颜色,其实只需要保留随便三种颜色即可. 直接点分治,将询问离线,分成一端为重心,和两端都不为重心的情况. 每次只关心经过 ...
- NOIP 模拟 $38\; \rm b$
题解 \(by\;zj\varphi\) 考虑转化问题,将计算最大公约数换为枚举最大公约数. 设 \(sum_i\) 为最大公约数为 \(i\) 的方案数,可以容斥求解,\(sum_i=f_i-\su ...
- NOIP 模拟 $38\; \rm a$
题解 \(by\;zj\varphi\) 压行. 枚举两行,将中间的行压成一行,然后直接前缀和加二分. 注意边界细节问题. Code #include<bits/stdc++.h> #de ...
- noip模拟38
\(\color{white}{\mathbb{深秋总有廖落处,雁归每是菊败时,名之以:残菊}}\) 这场比赛几乎全场都在打暴力,几乎人均切掉的 \(t1\) 没有想到双指针,\(t3\) 的暴力也没 ...
- NOIP模拟38:b
这是T2. 一个容斥(其实也可以欧拉反演做,但是我不会). 首先开一个桶,记录第i行的j有多少个. 然后枚举1-\(maxn\),枚举他的值域内的倍数,记录倍数在第i行有多少个,将个数 ...
- NOIP模拟17.9.22
NOIP模拟17.9.22 前进![问题描述]数轴的原点上有一只青蛙.青蛙要跳到数轴上≥
随机推荐
- appium的安装和环境配置教程
模拟器安装 夜神模拟器下载地址:https://www.yeshen.com/ 无脑安装 jdk环境 安装jdk 安装教程:https://www.cnblogs.com/yhoil/p/148086 ...
- K8S为什么要弃用Docker?Dockershim将移除
一.背景由于最近知道了 K8s 新版本(v1.20)确定弃用 Docker 的消息,为了明确是否会对现有系统架构产生响,所以对涉及到的相关技术进行了一定的梳理(索性的是对现有的系统架构基本无影响:&g ...
- 栅栏密码(The Rail-Fence Cipher)详解
最近训练CTF的时候,发现密码学这块的知识不太系统,所以自己接下来会陆陆续续整理出来 今天学习了栅栏密码,BugkuCTF里面的一道叫做"聪明的小羊"的题就与栅栏密码相关 特点 栅 ...
- CC攻击和C2的区别
[一]背景 今天被旁边姐姐问C2.CC是什么,虽然平时老看到这个词,身边也有自己写C2工具的大佬.但好像突然被问到有点懵,不知道怎么回答. [二]内容 CC ( Challenge Collapsar ...
- Bugku-web-秋名山老司机
计算式子的值然后使用post方法传值.直接脚本跑. import requestsimport reurl = "http://123.206.87.240:8002/qiumingshan ...
- 有赞Android实习五面都挂了,复习半月再战,转拿腾讯offer!
缘起 为了有赞的面试准备了半个月的样子,当时还投了美团.字节.滴滴.京东,目的只有一个,就是要进大厂,但是只有有赞扛过了一面,其他都是一面就挂了. 前三面都自我感觉良好,以为能稳拿offer的,没想到 ...
- 【LeetCode】39. 组合总和
39. 组合总和 知识点:递归:回溯:组合:剪枝 题目描述 给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 ...
- 我的第一个开源项目 Kiwis2 Mockserver
我的第一个开源作品Kiwis2 Mock Server,目前公测中,欢迎大家提供宝贵意见. 代码:https://github.com/kiwis2/mockserver 主页:https://kiw ...
- arraycopy将数组分为两部分时游标的设置方法
System.arraycopy是复制数组的一个常用工具,它在游标处如何分为两个是一个需要注意的问题,例如下面的示例代码: byte [] src = { 104, 101, 108, 108, 11 ...
- jd-gui或jad反编译工具bug
文件1:A.class------------2020-09-01日版本 文件2:A.class------------2020-09-02日版本,代码内容有变动. bug出现条件:文件1或文件2同目 ...