题目链接: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. uva10648 概率dp

    https://vjudge.net/problem/UVA-10648 将n个不同小球放入m个不同盒子,放入每个盒子的概率相同,问放完之后仍有空盒子的概率: 还是太傻- -,可以倒着计算出放完之后没 ...

  2. 51nod 1437

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1437 1437 迈克步 题目来源: CodeForces 基准时间限制: ...

  3. Java 简单图片截取

    package cn.byref.demo.image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import ...

  4. mysql1130远程连接没有权限的解决方法

    网上查了半天,终于解决 远程连接没有权限的原因有两种,一个是因为mysql的限制,一个是防火墙的限制. ,解决防火墙限制: 在mysql服务主机上将防火墙关闭或者在防火墙高级设置里面加入出入站规则,加 ...

  5. 不带缓存IO和标准(带缓存)IO

    linux对IO文件的操作分为: 不带缓存:open read.posix标准,在用户空间没有缓冲,在内核空间还是进行了缓存的.数据-----内核缓存区----磁盘 假设内核缓存区长度为100字节,你 ...

  6. 使用visio 2010建立sql server数据模型——手动画、利用逆向工程

    基础数据库这个词不在新鲜,老早就提出了.咱们从出生,个人信息就被放到一个基本信息库中了,在全国各地,通过身份证号就能知道你的基本信息.最近米老师 下发了一个任务,让我们开发几个小项目,考试系统.选修课 ...

  7. layui.js框架的启发

    最近做前台设计的MM,应用了layui.js框架,是一个可以按模块加载的js框架,可以实现UI上的一些效果,比如"手风琴折叠"面板.我看了下源码,抽出了其框架,应用到公司的项目中, ...

  8. shell while的用法

    1. #!/bin/shint=1while (( "$int < 10" ))doecho "$int"let "int++"don ...

  9. VS软件版本号定义、规则和相关的Visual Studio插件

    http://blog.csdn.net/cnhk1225/article/details/37500593 软件版本号主要标识了软件的版本,通过其可以了解软件.类库文件的当前版本,使得软件版本控制有 ...

  10. 编码不规范之将request传参到sevice中

    最近审核团队成员代码,发现确实有很多不规范的地方,其中问题之一就是将request.response.session等参数到传入到sevice层处理,在sevice中通过request对象获取到参数后 ...