洛谷 P5639 【CSGRound2】守序者的尊严

洛谷传送门

题目背景

由于Y校最近进行了对学校食堂的全面改革与对小卖部的全面整治(乱搞),导致学校小卖部卖的零食被禁售了;学校食堂的炸鸡窗口也消失了;

并且学校的学生处Q主任严禁学生点外卖,日夜监察。

都说民以食为天,由于整天挨饿,全校同学处于水深火热之中。

题目描述

zhouwc的朋友(朋友就是自己系列)小Z由于饥饿难忍,不得不铤而走险点外卖。

但是学校的Q主任为了能够抓住点外卖的学生布置了天罗地网——监控

但是由于学校给Q主任的经费有限,所以这些监控不能持续工作,工作一秒之后便要暂停休息一秒,即开启一秒后关闭一秒再开启一秒...以此类推。

还是由于Q主任的经费有限,这些监控被排成了一条直线,这条直线便在学生通往学生外卖驻点——二号门(没有门卫)的必经之路上。

因为小Z修习了疾跑技能,所以小Z通过任意个数关闭的监控的时间均为1(即一次行动可以经过若干个未开的监控)。

由于小Z想吃外卖又不想受到正在监控室看着监控的Q主任的处分,请你告诉他至少要多少时间才能安全到达外卖驻点。

输入格式

共2行

第一行一个正整数n,表示在这条路上一共有n个监控

第二行共有n个数。表示在第0秒是这些监控的开关情况,0表示监控关闭,1表示监控开启,并保证第一个监控一定是关闭的。

输出格式

共一行,表示小Z安全到达外卖驻点所需要的时间。

输入输出样例

输入 #1 复制

6

0 0 1 1 0 1

输出 #1 复制

4

输入 #2 复制

6

0 0 0 0 0 0

输出 #2 复制

1

说明/提示

数据范围:

对于10%10%的数据,1<=n<=101<=n<=10

对于30%30%的数据,1<=n<=1001<=n<=100

对于50%50%的数据,1<=n<=10001<=n<=1000

对于70%70%的数据,1<=n<=1000001<=n<=100000

对于100%100%的数据,1<=n<=10000001<=n<=1000000

监控的开关情况均用0和1来表示。

样例解释1:

小Z在第一秒时冲到第二个监控处,用时1秒,总用时1秒。

第二秒时,监控的开关状况变为了 1 1 0 0 1 0

这时,小Z迅速从二号监控处冲到了四号监控处,用时1秒,总用时2秒。

第三秒时,监控的开关状况变为了 0 0 1 1 0 1

这时,小Z迅速从四号监控处冲到了五号监控处,用时1秒,总用时3秒。

第三秒时,监控的开关状况变为了 1 1 0 0 1 0

这时,小Z迅速从五号监控处冲出了监控区域,用时1秒,总用时4秒。

样例解释2

小Z在第一秒直接冲出了监控区域

题解:

这题真的是一眼切。代码难度入门,思路难度普及-。

我们会发现,既然一秒钟可以穿过相当多的区域,而且每一秒的0,1状态是可以被取反的。所以最后就是要数一数0,1段有多少,也就是说,遍历整个串,如果当前的和上一个不一样,那么就加一,否则不变。因为一开始还会有一秒的状态,所以答案还要再加一。

代码:

#include<cstdio>
using namespace std;
const int maxn=1e6+10;
int n,ans;
int a[maxn];
char *p1,*p2,buf[100000];
#define nc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int read()
{
int x=0,f=1;
char ch=nc();
while(ch<48){if(ch=='-')f=-1;ch=nc();}
while(ch>47) x=(((x<<2)+x)<<1)+ch-48,ch=nc();
return x*f;
}
int main()
{
n=read();
for(int i=1;i<=n;i++)
{
a[i]=read();
if(a[i]!=a[i-1])
ans++;
}
printf("%d",ans+1);
return 0;
}

最新文章

  1. mac终端命令
  2. matlab初学之句柄
  3. js获取url的常用方法
  4. IE 浏览器 如何关闭令人讨厌的“此网站需要运行以下加载项:XXX。如果您信任该网站和该加载项并允许运行该加载项,请单击这里...
  5. [译]git clean
  6. Mutex和内存可见性
  7. 【网络收集】获取JavaScript 的时间使用内置的Date函数完成
  8. Jquery中使用setInterval和setTimeout
  9. ASP.NET网络硬盘(文件上传,文件下载)
  10. 用Ajax去读取服务器端的XML格式的数据
  11. TransactionScope简单用法
  12. 关于androidAsyncHttp支持https
  13. 我用过的Linux命令之chmod
  14. NET Core MVC 在linux上的创建及发布
  15. Smail语法
  16. 如何使用python timeit模块使用实践
  17. 67、django之模型层(model)--查询补充及mookie
  18. bzoj:3616: War
  19. vue-cli模拟后台数据交互
  20. BigDecimal加减乘除

热门文章

  1. English: Class logogram
  2. stdc++.6.0.9动态库缺失
  3. 打通 DevOps 任督二脉 ,CODING 2.0 制品库全新上线
  4. bayaim——达梦数据库安装DM7-单实例-Centos7.txt
  5. 安装CentOS 6.x报错&quot;Disk sda contains BIOS RAID metadata&quot;解决方法
  6. Cocos2d-x.3.0开发环境搭建
  7. Softmax用于手写数字识别(Tensorflow实现)-个人理解
  8. pytest系列(四)- pytest+allure+jenkins - 持续集成平台生成allure报告
  9. 《Web Development with Go》Middleware之共享数据
  10. 《Web Development with Go》Middleware之使用gorilla.handlers