题目链接:https://pintia.cn/problem-sets/1036903825309761536/problems/1041156323504345088

题意:小明从某一点出发,向右方前进,只有路口是绿灯(用1代表)的时候才可通行,红灯要等待,所有红绿灯每过一秒变化一次(红->绿,绿->红),问从任意一点到该点右边的任意一点的所花费的时间和。

题解:设t(1,n)是从点1到点n所花费的时间,我们可以经过特殊的判断t(1,n)拆分成t(1,a)+t(a,n)+c (c是1,-1,或者0,通过判断得来)。

1:如果该点是红灯(用0代表)且t(1,a)花费了奇数的时间,此时t(a,n)=t(1,n)-t(1,a)+1;

2:如果该点是绿灯且t(1,a)花费了奇数的时间,此时t(a,n)=t(1,n)-t(1,a)-1;

其余情况t(1,n)=t(1,a)+t(a,n),想不太懂可以对照1,2个样例。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
long long sum[maxn],ssum[maxn];
int main(){
int T,cnt,p,S;
char s[100010];
scanf("%d",&T);
long long ans,tmp;
while(T--){
scanf("%s",s+1);
ans=0;
int n=strlen(s+1);
p=1;
sum[0]=ssum[n+1]=0;
for(int i=1;i<=n;i++){
if(s[i]-'0'==p){
sum[i]=sum[i-1]+1;//t(i-1,i)的前缀和,即t(0,i)
p^=1;
}
else{
sum[i]=sum[i-1]+2;
}
}
for(int i=n;i>=1;i--){//后缀和
ssum[i]=ssum[i+1]+sum[i];
}
ans+=ssum[1];
for(int i=2;i<=n;i++){
tmp=sum[i-1];
if(s[i]-'0'==0&&tmp%2==1)tmp--;
if(s[i]-'0'==1&&tmp%2==1)tmp++;
ans+=(ssum[i]-(n-i+1)*tmp);
}
printf("%lld\n",ans);
}
}

  

2018网络预选赛 青岛 H的更多相关文章

  1. 2018网络预选赛 徐州H 线段树+树状数组

    设读入的数组是a,树状数组用来维护a数组区间和sum,线段树用来维护一个另一个数组ssum的区间和,区间每个点a[i]*(n-i+1),那么l-r的答案是l-r的ssum-(n-r)*(sum[r]- ...

  2. 2018网络预选赛 徐州G 线段树

    线段树,假设求(x1,y1)点的贡献,就找所有比该点出现时间晚,且x坐标大于x1的点中y最大的,贡献就是Y-y1,由于题目条件限制,不可能有x坐标大于(x1,y1)且y坐标大于y1的点,所以贡献肯定为 ...

  3. 2019南昌邀请赛网络预选赛 M. Subsequence

    传送门 题意: 给出一个只包含小写字母的串 s 和n 个串t,判断t[i]是否为串 s 的子序列: 如果是,输出"YES",反之,输出"NO": 坑点: 二分一 ...

  4. HDU 5833 (2016大学生网络预选赛) Zhu and 772002(高斯消元求齐次方程的秩)

    网络预选赛的题目……比赛的时候没有做上,确实是没啥思路,只知道肯定是整数分解,然后乘起来素数的幂肯定是偶数,然后就不知道该怎么办了… 最后题目要求输出方案数,首先根据题目应该能写出如下齐次方程(从别人 ...

  5. 2018 CCPC 吉林站 H Lovers

    2018 CCPC 吉林站 H Lovers 传送门:https://www.spoj.com/problems/LIS2/en/ 题意: q次操作 1.将第l~r个数的左边和和右边都加上一个数d, ...

  6. 2018.9青岛网络预选赛(H)

    传送门:Problem H https://www.cnblogs.com/violet-acmer/p/9664805.html 题意: BaoBao在一条有刻度的路上行走(哈哈,搞笑),范围为 [ ...

  7. 2018.9青岛网络预选赛(B)

    传送门:Problem(B) https://www.cnblogs.com/violet-acmer/p/9664805.html 参考资料: https://blog.csdn.net/qq_40 ...

  8. 2018.9青岛网络预选赛(K)

    传送门:Problem K https://www.cnblogs.com/violet-acmer/p/9664805.html 题意: 给你n个数,找出满足条件的最多的数的个数. 题解: 满足条件 ...

  9. The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online(2018 青岛网络预选赛)

    A题 A Live Love 原题链接:https://pintia.cn/problem-sets/1036903825309761536/problems/1041155943483625472 ...

随机推荐

  1. 51nod 1281 二分

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1281 隐藏话题 1281 山峰和旗子 题目来源: Codility 基准 ...

  2. ng-file-upload - samples

    <script src="angular.min.js"></script> <!-- shim is needed to support non-H ...

  3. WebView的简单使用

    activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  4. python--pycharm汉化

    一.准备工具 1.pycharm软件 2.汉化包 二.解压汉化包 三.将resources_cn.jar复制到pycharm文件中lib目录下 四.重新打开pycharm

  5. MySQL 索引 视图 触发器 存储过程 函数

    1.索引 索引相当于图书的目录,可以帮助用户快速的找到需要的内容. 数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万 ...

  6. JVM_总结_01_JDK的安装

    一.前言 本文主要简要介绍下JDK的安装 二.下载 1.JDK下载地址 前往官方网站下载JDK jdk8官网下载 2.JDK下载 如下图 下载完之后得到安装软件,如下图 三.安装 双击运行安装软件,即 ...

  7. 手动安装mysql-5.0.45.tar.gz

    Linux下编译安装 安装环境:VMware9(桥接模式) + Linux bogon 2.6.32-642.3.1.el6.x86_64(查看linux版本信息:uname -a) 先给出MySQL ...

  8. hdoj-1038-Biker's Trip Odometer(水题)

    题目真的考验英语 题目链接 需要进行单位的转换 对于Pi用:3.1415927. 5280步相当于1英里. 12英寸相当于1步. 60分钟等于1小时 60秒等于1分钟. 201.168米等于1弗朗.( ...

  9. L107

    It is advisable to take an open- minded approach to new idea. 对新思想采取不存先入之见的态度是明智的.That said, the com ...

  10. 在C#中实现截获shell程序的输出

    在Windows环境下的所谓shell程序就是dos命令行程序,比如VC的CL.exe命令行编译器,JDK的javac编译器,启动java程序用的java.exe都是标准的shell程序.截获一个sh ...