题目链接: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);
}
}

  

最新文章

  1. PyCharm不能自动import解决方法_PyCharm cannot auto import package troubleshooting
  2. 斯坦福第五课:Octave 教程(Octave Tutorial)
  3. 页面多语系自动切换-.resx
  4. Django 1.6 的测试驱动开发
  5. 解决OpenWrt多拨刚开机拨号只拨上一次问题
  6. 快速高效掌握企业级项目中的Spring面向切面编程应用,外带讲面试技巧
  7. 洛谷最短路计数SPFA
  8. 记录一个前端bug的解决过程
  9. Mysql锁机制--读锁
  10. oracle over 函数几个例子
  11. Build a Machine Learning Portfolio(构建机器学习投资组合)
  12. 潭州课堂25班:Ph201805201 django 项目 第四十五课 mysql集群和负载均衡(课堂笔记)
  13. Android activity 周期图和fragment周期图
  14. 左移和右移运算符&lt;&lt; &gt;&gt;
  15. ie浏览器get url返回404问题
  16. WebView 5.0+闪烁以及白屏问题完美解决
  17. .NetCore利用Swagger生成 XML文档需要注意生成路径的地址
  18. 【DB2】数据库的事务日志已满。SQLSTATE=57011
  19. Mysql/Mariadb 升级注意事项
  20. idea配置(卡顿、开发环境等配置),code style template

热门文章

  1. NAT123之类的软件是如何实现访问域名然后穿透到内网主机的80端口?——有公网ip就是动态域名解析,没有就是穿透+代理转发
  2. 32 python 并发编程之协程
  3. GEF入门实例_总结_06_为编辑器添加内容
  4. LeetCode OJ:Rotate Array(倒置数组)
  5. LeetCode 362. Design Hit Counter
  6. webpack 故障处理
  7. C++中rand()函数的用法
  8. oracle获得当前时间,精确到毫秒并指定精确位数
  9. RequireJS 也可以引入 VUE
  10. 从内存中直接运行PE程序