• 题意:找出序列中有多少子序列是\(wow\),但是\(w\)只能用\(vv\)来表示.

  • 题解:我们分别记录连续的\(v\)和\(o\)的个数,用\(v1\)和\(v2\)存,这里要注意前导\(o\)不能要,观察一下写出答案公式:\(ans=v1[i]*(v2[i]*(v1[i+1]+...+v1[k])+v2[i+1]*(v1[i+2]+...+v1[k])+...+v2[k-1]*v[k])+v1[i+1]*(...)+...+v1[k-1]*v2[k-1]*v1[k]\),很显然我们是不能直接算的,但是发现这个公式里面有很多连续的线性和,所以我们可以用前缀和来进行复杂度的优化,将其降到\(O(n)\).

  • 代码:

    string s;
    vector<ll> v1,v2;
    ll cnt1,cnt2;
    ll pre1[N],pre[N]; int main() {
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin>>s;
    bool flag=false;
    for(int i=0;i<(int)s.size();++i){
    if(s[i]=='v'){
    cnt1++;
    if(cnt2 && flag){
    v2.pb(cnt2);
    cnt2=0;
    }
    if(!flag) cnt2=0;
    flag=true;
    }
    else{
    cnt2++;
    if(cnt1){
    v1.pb(cnt1);
    cnt1=0;
    }
    }
    }
    if(cnt1) v1.pb(cnt1); int len1=(int) v1.size();
    int len2=(int) v2.size();
    for(int i=len1-1;i>=0;--i){
    pre1[i]=pre1[i+1]+v1[i]-1; //先对v1求前缀和.
    }
    for(int i=len2-1;i>=0;--i){
    pre[i]=pre[i+1]+v2[i]*pre1[i+1]; //求出v2[i]*(v1[i+1]+...+v1[k])的前缀和pre[i]<-这里(...)的就是我们上一步求的前缀和pre1[i+1].
    }
    ll ans=0;
    for(int i=0;i<len1;++i){
    ans+=(v1[i]-1)*pre[i];
    }
    cout<<ans<<endl; return 0;
    }

Codeforces Global Round 4 B. WOW Factor (前缀和,数学)的更多相关文章

  1. Codeforces Global Round 7 A. Bad Ugly Numbers(数学)

    题意: 给你一个 n,输出一个 n 位不含 0 且不被任一位整除的正数. 思路: 构造 233 或 899. #include <bits/stdc++.h> using namespac ...

  2. CodeForces Global Round 1

    CodeForces Global Round 1 CF新的比赛呢(虽然没啥区别)!这种报名的人多的比赛涨分是真的快.... 所以就写下题解吧. A. Parity 太简单了,随便模拟一下就完了. B ...

  3. Codeforces Global Round 2 题解

    Codeforces Global Round 2 题目链接:https://codeforces.com/contest/1119 A. Ilya and a Colorful Walk 题意: 给 ...

  4. Codeforces Global Round 3

    Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...

  5. Codeforces Global Round 1 - D. Jongmah(动态规划)

    Problem   Codeforces Global Round 1 - D. Jongmah Time Limit: 3000 mSec Problem Description Input Out ...

  6. Codeforces Global Round 1 (A-E题解)

    Codeforces Global Round 1 题目链接:https://codeforces.com/contest/1110 A. Parity 题意: 给出{ak},b,k,判断a1*b^( ...

  7. Codeforces Global Round 1 (CF1110) (未完结,只有 A-F)

    Codeforces Global Round 1 (CF1110) 继续补题.因为看见同学打了这场,而且涨分还不错,所以觉得这套题目可能会比较有意思. 因为下午要开学了,所以恐怕暂时不能把这套题目补 ...

  8. 【手抖康复训练1 】Codeforces Global Round 6

    [手抖康复训练1 ]Codeforces Global Round 6 总结:不想复习随意打的一场,比赛开始就是熟悉的N分钟进不去时间,2333,太久没写题的后果就是:A 题手抖过不了样例 B题秒出思 ...

  9. Codeforces Global Round 11 个人题解(B题)

    Codeforces Global Round 11 1427A. Avoiding Zero 题目链接:click here 待补 1427B. Chess Cheater 题目链接:click h ...

随机推荐

  1. 天梯赛练习 L3-008 喊山 (30分) bfs搜索

    题目分析: 本题是一题比较简单的bfs搜索题,首先由于数据给的比较多不能直接开二维数组存放,而是用了vector的动态的二维数组的形式存放,对于每个出发点,我们bfs向四周搜索,标记搜索过的点,遇到搜 ...

  2. paramunittest参数化测试基础

    samples: import paramunittestimport unittest@paramunittest.parametrized( (10,20), (30,40), # (100,20 ...

  3. Github Python计算器开源项目 二次开发--增加函数图形

    先上原项目链接:https://github.com/xhf79/Calculator_pyqt python+Qt 开发的计算器 原项目界面和功能如图所示: 科学计算的内容基本都有,但按照项目的提示 ...

  4. kubernets之服务发现

    一  服务与pod的发现 1.1  服务发现pod是很显而易见的事情,通过简称pod的标签是否和服务的标签一致即可,但是pod是如何发现服务的呢?这个问题其实感觉比较多余,但是接下来你就可能不这么想了 ...

  5. Genymotion虚拟机用键盘输入中文

    genymotion我用的版本是3.0.4,安卓内核版本从4到9都进行了尝试,尤其是教新的版本原生是不带中文输入法的. 前提:安装Genymotion以后,想要随意安装app,需要先安装Genymot ...

  6. 别再问我们用什么画图的了!问就是excalidraw

    每次发 https://github.com/tal-tech/go-zero 相关文章时,都会有读者问我们用什么画图的. 这图什么工具画的呀?好看! 这个手绘风格真好看,用啥工具画的呀? 可不可以介 ...

  7. TCP服务器程序

    Linux下编写TCP服务器调用的函数顺序为:socket -> bind -> listen -> accept -> recv/send socket 参见:http:// ...

  8. 前端面试之HTML5的新变化

    前端面试之HTML5的新变化 H5新增语义化标签 头部标签 <header> :头部标签 <nav> :导航标签 <article> :内容标签 <secti ...

  9. 你真的了解Android系统启动流程吗?Android高级工程师必看系列,已开源

    前言 从毕业到现在面试也就那么几家公司,单前几次都比较顺利,在面到第三家时都给到了我offer!前面两次找工作,没考虑到以后需要什么,自己的对未来的规划是什么,只要有份工作,工资符合自己的要求就行!所 ...

  10. 提取当前文件夹下的所有文件名.bat(Windows批处理文件)

    @echo off dir /s/b *.* > 文件名.txt exit