【题目链接】:https://csacademy.com/contest/round-36/task/safe-spots/

【题意】



给你n个数字构成的序列;

每个位置上的数都由0和1组成;

对于每个0;

假设其位置为i;

如果[i-k..i+k]这个范围内1的个数不超过1,则称它合法;

问符合要求的这样的0的个数.

【题解】



前缀和.

直接获取sum[i+k]-sum[i-k-1]就是这个范围里面1的个数了;

(程序用的是其他方法..维护第i个数字前k个数里面有多少个1。以及后面k个数字里面有多少个1)



【Number Of WA】



0



【反思】



第一反应不是前缀和的做法说明我还很菜?



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define Open() freopen("F:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1e5; int n,k,a[N+100],pre[N+100],after[N+100],now; int main(){
//Open();
Close();
cin >> n >> k;
rep1(i,1,n)
cin >> a[i];
now = 0;
rep1(i,1,n){
pre[i] = now;
if (a[i]==1) now++;
if (i-k>=1 && a[i-k]==1) now--;
}
now = 0;
rep2(i,n,1){
after[i] = now;
if (a[i]==1) now++;
if (i+k<=n && a[i+k]==1) now--;
}
int ans = 0;
rep1(i,1,n)
if (a[i]==0 && pre[i]+after[i]<=1)
ans++;
cout << ans << endl;
return 0;
}

【Round #36 (Div. 2 only) B】Safe Spots的更多相关文章

  1. 【Round #36 (Div. 2 only) C】Socks Pairs

    [题目链接]:https://csacademy.com/contest/round-36/task/socks-pairs/ [题意] 给你n种颜色的袜子,每种颜色颜色的袜子有ai只; 假设你在取袜 ...

  2. 【CS Round #36 (Div. 2 only) A】Bicycle Rental

    [题目链接]:https://csacademy.com/contest/round-36/task/bicycle-rental/ [题意] 让你从n辆车中选一辆车; 每一辆车有3个属性 1.到达车 ...

  3. 【CS Round #37 (Div. 2 only) D】Reconstruct Graph

    [Link]:https://csacademy.com/contest/round-37/task/reconstruct-graph/statement/ [Description] 给你一张图; ...

  4. 【CS Round #37 (Div. 2 only) B】Group Split

    [Link]:https://csacademy.com/contest/round-37/task/group-split/ [Description] 让你把一个数分成两个数a.b的和; (a,b ...

  5. 【CS Round #37 (Div. 2 only) A】Boring Number

    [Link]:https://csacademy.com/contest/round-37/task/boring-number/ [Description] 让你找离平均数最近的一个数的下标; [S ...

  6. 【CS Round #39 (Div. 2 only) D】Seven-segment Display

    [Link]:https://csacademy.com/contest/round-39/task/seven-segment-display/ [Description] 0..9各自有一个数字, ...

  7. 【CS Round #39 (Div. 2 only) C】Reconstruct Sum

    [Link]:https://csacademy.com/contest/round-39/task/reconstruct-sum/ [Description] 给你一个数字S; 让你找有多少对A, ...

  8. 【CS Round #39 (Div. 2 only) B】Circle Elimination

    [Link]:https://csacademy.com/contest/round-39/task/circle-elimination/ [Description] [Solution] 把n个点 ...

  9. 【CS Round #39 (Div. 2 only) A】Removed Pages

    [Link]: [Description] [Solution] 每读入一个x; 把a[(x-1)/2]置为1即可; 统计1的个数 [NumberOf WA] [Reviw] [Code] /* */ ...

随机推荐

  1. POJ 3723 Conscription (Kruskal并查集求最小生成树)

    Conscription Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14661   Accepted: 5102 Des ...

  2. 详解JavaScript中的原型和继承-转自颜海镜大大

    本文将会介绍面向对象,继承,原型等相关知识,涉及的知识点如下: 面向对象与继承 CEOC OLOO 臃肿的对象 原型与原型链 修改原型的方式 面向对象与继承 最近学习了下python,还写了篇博文&l ...

  3. 安卓、safari和微信各个浏览器的设计标准

  4. shell 特殊字符

    shell 基础 # 当做注释的比较多 : 命令分隔符,在同一行上写两个或两个以上的命令 :: 是case 代码块的结束符 . 点作为文件名的一部分 隐藏文件 目录名 点是正则表达式中的匹配字符 '' ...

  5. 中国象棋程序的设计与实现(五)--回答CSDN读者的一些问题

    最近写了很多文章,同时,也上传了很多免积分的FansUnion原创的优质资源,有兴趣的同学可以看来我的CSDN博客瞧瞧 http://blog.csdn.net/FansUnion. 近期,收到了不少 ...

  6. Android APP弱网测试问题和解决分析

    最近做了一次移动APP的弱网和中断测试,接下来分享一下遇到的一些问题: 1.现象:用户登录应用时下载初始化数据,下载过程中因网速太慢点击取消并重新登录,数据初始化完成后出现重复,造成数据不一致. 原因 ...

  7. 洛谷 P3102 [USACO14FEB]秘密代码Secret Code

    P3102 [USACO14FEB]秘密代码Secret Code 题目描述 Farmer John has secret message that he wants to hide from his ...

  8. hihocoder 1124 : 好矩阵 dp

    好矩阵 时间限制:3000ms 单点时限:1000ms 内存限制:256MB 描写叙述 给定n, m.一个n × m矩阵是好矩阵当且仅当它的每一个位置都是非负整数,且每行每列的和 ≤ 2.求好矩阵的个 ...

  9. Ruby创建命令

    Ruby创建命令

  10. VMware 下扩展linux硬盘空间

    linux下扩展硬盘有非常多种方式,在扩展之前.尽量看看自己的空间存在的有哪些盘,然后再进行扩展. 假设是扩展的话,磁盘的符号和已经有的符号一样,比方都是sda的设备,知识分区不同.可能是sda3 s ...