首页 > 其他分享 >D2. Sum over all Substrings (Hard Version)

D2. Sum over all Substrings (Hard Version)

时间:2024-07-13 15:53:11浏览次数:16  
标签:Sum Hard long Substrings Version ans ll dp

原题链接

题解

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;

ll dp[1000005] = {0};

void solve() {
    ll n, ans = 0;
    cin >> n;
    string s;
    cin >> s;
    s = " " + s;  // 使字符串1索引化
    for (ll i = 1; i <= n; i++) {
        if (s[i] == '1') {
            if (i > 3) {
                dp[i] = 1 + 1 + 1 + dp[i-3] + 1*(i-3);
            }
            else dp[i] = i;
        }
        else dp[i] = dp[i-1];
        ans += dp[i];
    }
    cout << ans << "\n";
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    ll t = 1;
    cin >> t;
    while (t--) solve();
    return 0;
}

标签:Sum,Hard,long,Substrings,Version,ans,ll,dp
From: https://www.cnblogs.com/pure4knowledge/p/18300209

相关文章

  • SMU Summer 2024 Contest Round 3
    1.To3原题链接:http://162.14.124.219/contest/1007/problem/I记录数组中除3余数的种类和个数,以及数组元素总和除3的余数,最后判断(考虑总余数为1,两个元素余数为2和总余数为2,两个元素余数为1的特殊情况)查看代码#include<bits/stdc++.h>#defineintlonglongusingnamespa......
  • SMU Summer 2024 Contest Round 2
    1.MinimumWidth原题链接:http://162.14.124.219/contest/1006/problem/C二分一行最大容量,如果check小于等于总行数就扩大,反之则缩小查看代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,m;inta[1000000],b[1000000];boolcheck(intx){......
  • B. Missing Subsequence Sum
    原题链接题解1.如果没有不能表示出\(k\)的限制,那么数组由一众二次方构成2.对于小于\(k\)的数,考虑\(k\)的最高位\(i\)由于\([0,i-1]\)最多为\(2^i-1\)所以可以考虑添加一个\(k-2^i\)来表示完\([1,k-1]\)内所有的数(尽管有重复)同时删掉\(2^i\)3.对于大于\(k\)......
  • P2398 GCD SUM
    原题链接题解\(ans=\sum_{i=1}^{n}i*sum[i]\)其中\(sum[i]\)为最大公约数为\(i\)的对数令\(f[i]\)为最大公约数为\(i\)的倍数的对数则有\(sum[i]=f[i]-sum[2i]-sum[3i]-...-sum[ki]\)而\(f[i]={\lfloor\frac{n}{i}\rfloor}^2\)(如果没懂请仔细阅读题目所给符号......
  • [二、状态管理]2管理组件拥有的状态(4)@Provide装饰器和@Consume装饰器:与后代组件双向同
    @Provide和@Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递,@Provide和@Consume摆脱参数传递机制的束缚,实现跨层级传递。其中@Provide装饰的变量是在祖先节点中,可以理解为被“提供”给后代的状......
  • SMU Summer 2024 Contest Round 3(7.10)
    寻找素数对思路:数的范围为10000,直接筛出所有范围内的质数,n2的枚举所有质数对和的情况#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#definePIIpair<int,int>constintN=1e4+5;vector<int>pri;intidx,st[N];voidinit(){for(in......
  • SMU Summer 2024 Contest Round 3
    SMUSummer2024ContestRound3寻找素数对题意给你一个偶数,找到两个最接近的素数,其和等于该偶数。思路处理出1e5以内的素数,然后遍历,更新最接近的答案。代码#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;vector<int>euler_range(intn){......
  • Excel第29享:基于sum嵌套sumifs的多条件求和
    1、需求描述如下图所示,现要统计12.17-12.23这一周各个人员的“上班工时(a1)”。下图为系统直接导出的工时数据明细样例。2、解决思路首先,确定逻辑:“对多个条件(日期、人员)进行“工时”列求和”。故选择sumifs函数,由于是“日期”字段有多个数值,故与sum函数嵌套使用;其次,sumif......
  • SMU Summer 2024 Contest Round 2
    Sierpinskicarpet1.这道题的核心其实在于,我们要观察到点的位置是在每一个小图形的正方形内,和一个大图型的中心正方形处的,那么通过观察可以发现,如果满足在这个正方形处,那么一定(3k-1+1)<=x,y<=(2*3k-1)2.这个k是什么意思呢?当我们n=3的时候k可以取1,2,3,也就是对应每一级的中间宫......
  • SMU Summer 2024 Contest Round 1
    SequenceDecomposing1.题意其实就是要我们找共有多少个最长的上升的子序列,也就是理解成可以找到几个尽量长的队伍(最少LIS不相交覆盖)2.我们开一个multiset,然后先放进去第一个数,由于multiset会对元素自动从小到大排序,那么我们放进的队尾,也是排序好的,然后从第二个数开始遍历,检查一......