zoukankan      html  css  js  c++  java
  • codeforces165C

    题意:给你一个二进制数组,问你和为K的子串有多少;

    解题思路:这个题目和451D有点类似,这里我们只需要知道整个数列的前缀和 为 i 的个数,就可以边DP ,边求出答案。

    解题代码:

     1 // File Name: 165c.1.cpp
     2 // Author: darkdream
     3 // Created Time: 2014年07月30日 星期三 10时36分03秒
     4 
     5 #include<vector>
     6 #include<list>
     7 #include<map>
     8 #include<set>
     9 #include<deque>
    10 #include<stack>
    11 #include<bitset>
    12 #include<algorithm>
    13 #include<functional>
    14 #include<numeric>
    15 #include<utility>
    16 #include<sstream>
    17 #include<iostream>
    18 #include<iomanip>
    19 #include<cstdio>
    20 #include<cmath>
    21 #include<cstdlib>
    22 #include<cstring>
    23 #include<ctime>
    24 
    25 using namespace std;
    26 #define LL long long 
    27 int dp[1000004];
    28 char str[1000005];
    29 int main(){ 
    30      int n ; 
    31      scanf("%d",&n);
    32      scanf("%s",str);
    33      int len = strlen(str);
    34      int sum = 0 ;
    35      memset(dp,0,sizeof(dp));
    36      dp[0]++;
    37      LL ans = 0 ; 
    38      for(int i = 0 ;i < len ;i ++)
    39      {
    40           if(str[i] == '1') 
    41           {
    42             sum ++ ; 
    43           }
    44           int nsum = sum - n ;
    45           if(nsum >= 0)
    46               ans += dp[nsum];
    47           dp[sum]++; 
    48      }
    49 
    50      printf("%lld
    ",ans);
    51 return 0;
    52 }
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    Flutter中的剪裁
    flutter设置沉浸式状态栏
    flutter设置主题色和状态栏颜色
    Flutter更改状态栏颜色
    前端基础之JavaScript
    前端基础之CSS
    前端基础之初识 HTML
    socket及其相关(续篇)
    初识socket
    面向对象及其相关
  • 原文地址:https://www.cnblogs.com/zyue/p/3878247.html
Copyright © 2011-2022 走看看