Bahosain is walking in a street of N blocks. Each block is either empty or has one lamp. If there is a lamp in a block, it will light it’s block and the direct adjacent blocks. For example, if there is a lamp at block 3, it will light the blocks 2, 3, and 4.

Given the state of the street, determine the minimum number of lamps to be installed such that each block is lit.

Input

The first line of input contains an integer T (1 ≤ T ≤   1025) that represents the number of test cases.

The first line of each test case contains one integer N (1 ≤ N ≤ 100) that represents the number of blocks in the street.

The next line contains N characters, each is either a dot ’.’ or an asterisk   ’*’.

A dot represents an empty block, while an asterisk represents a block with a lamp installed in it.

Output

For each test case, print a single line with the minimum number of lamps that have to be installed so that all blocks are lit.

Sample Input

Sample Output

3

2

6

0

......

1

3

*.*

8

.*.....*

 

是的,这是在codeforce上面的一道题,当时写的时候思路和官方给的思路一模一样,可是还是有一些细节没有注意到,比如当字符串是str + 1输入时是可以取到长度len的,for循环中忘记

加上等号了,最近的刷题也不是很顺利,不知道究竟是怎么搞的,可能是写的时候太快的,虽然每道题都写了一遍,可惜都没几个对的,全是都死在了细节上面,以后呀以此为戒,切记!

对了,顺便提醒自己一下,在遇到这种需要改动题目给定条件的时候一定要复制一个改变用的数组来标记,不然可能会自己都不知道错在哪里,希望以后不再犯。

2016-07-26 切记

#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
using namespace std; const int MX = 150;
int sign[MX];
int n;
char str[MX]; int main() {
//freopen("input.txt", "r", stdin);
int cas;
while (scanf("%d", &cas) != EOF) {
while (cas--) {
scanf("%d %s", &n, str + 1);
memset(sign, 0, sizeof(sign));
for (int i = 1; i <= n; i++) {
if (str[i] == '*') {
sign[i] = sign[i - 1] = sign[i + 1] = 1;
}
}
int ans = 0;
for (int i = 1; i <= n - 2; i++) {
if (sign[i] == 0 && sign[i + 1] == 0 && sign[i + 2] == 0) {
sign[i] = sign[i + 1] = sign[i + 2] = 1;
ans++;
}
}
for (int i = 1; i <= n - 1; i++) {
if (sign[i] == 0 && sign[i + 1] == 0) {
sign[i] = sign[i + 1] = 1;
ans++;
}
}
for (int i = 1; i <= n; i++) {
if (sign[i] == 0) {
sign[i] = 1;
ans++;
}
}
printf("%d\n", ans);//直接的暴击解决,看到有人喜欢用动态规划,我其实并不想那么多,就用自己的第一感觉做题是最好的
}
}
return 0;
}

Codeforce - Street Lamps的更多相关文章

  1. ACM: 限时训练题解-Street Lamps-贪心-字符串【超水】

    Street Lamps   Bahosain is walking in a street of N blocks. Each block is either empty or has one la ...

  2. 18春季训练01-3/11 2015 ACM Amman Collegiate Programming Contest

    Solved A Gym 100712A Who Is The Winner Solved B Gym 100712B Rock-Paper-Scissors Solved C Gym 100712C ...

  3. 2015 ACM Amman Collegiate Programming Contest 题解

    [题目链接] A - Who Is The Winner 模拟. #include <bits/stdc++.h> using namespace std; int T; int n; s ...

  4. 【硬件模块】华为NBIOT 使用记录

    From: https://liudongdong1.github.io/ 1. background Low power wide area network (LPWAN) has become a ...

  5. codeforce 985B Switches and Lamps(暴力+思维)

    Switches and Lamps time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  6. codeforce Gym 100425E The Street Escalator(期望,线性递推)

    算数学期望,每个人都可以分开来考虑.Xi表示第i个人跑到另外一边的次数. Xi服从二项分布.概率的和是个二项式,(p+1-p)^T,把二项式展开,p的偶次项是留在原来那一边的概率. 可以用((a+b) ...

  7. 申请邓白氏编码的时候总是提示 Enter a valid Street Address 怎么办?

    今天要申请一个苹果开发者公司(Company)账号,然后需要邓白氏编码,然后填写企业的基本信息.其中对于Street Address认真的对照着中文翻译为如下格式: Kang Hesheng buil ...

  8. 【USACO 2.2】Party Lamps

    四种开关,n盏灯,1:改变所有灯状态,2:改变奇数灯状态,3:改变偶数灯状态,4:改变3k+1灯状态 给你按开关的总次数c和部分灯限制条件(开或关),一开始都是开着的.($c \leq 10000,n ...

  9. Codeforce Round #216 Div2

    e,还是写一下这次的codeforce吧...庆祝这个月的开始,看自己有能,b到什么样! cf的第二题,脑抽的交了错两次后过了pretest然后system的挂了..脑子里还有自己要挂的感觉,果然回头 ...

随机推荐

  1. java-解决业务操可能数据冲突问题

    问题提出,由于业务会出现多人同时操作,或者业务人员反复的操作,因此在业务流程中,需要对业务操作数据进行保护,由于使用数据库锁可能会引起一些难以预料的问题,因此考虑使用内存锁,设计思想:在内存中使用一个 ...

  2. POJ2406 Power Strings(KMP,后缀数组)

    这题可以用后缀数组,KMP方法做 后缀数组做法开始想不出来,看的题解,方法是枚举串长len的约数k,看lcp(suffix(0), suffix(k))的长度是否为n- k ,若为真则len / k即 ...

  3. <转>WCF中出现死锁或者超时

    WCF回调中的死锁 一.服务器端死锁 对于如下服务: [ServiceContract(CallbackContract = typeof(INotify))] public class Downlo ...

  4. Visual Studio Code升级到0.5,提供对ES6的更好支持

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:题目即题记. 自从Visual Studio Code发布之后(最初是0.1),微软就 ...

  5. 时间编程,王明学learn

    时间编程 一.时间类型 Coordinated Universal Time(UTC):世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT) Calend ...

  6. 什么是好的API设计?(转)

    什么是API? 我们只要是在进行编程我们就需要不停的设计API. API简单来讲可以是一个调用的函数,一个接口. 抽象来说,接口是一个内聚系统暴漏给外部的一切信息,包含但不限于: 调用方式:比如通过l ...

  7. sql语句中----删除表数据的"三兄弟"

    说到删除表数据的关键字,大家记得最多的可能就是delete了 然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了 现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的 老大- ...

  8. Silverlight中的TabControl如何绑定数据?重写tabcontrol和tabItem 解决绑定友好问题。可以绑定对象集合

    在 WPF 中,TabControl 可以直接将 ItemsSource 绑定数据源,见 将 TabControl 绑定到数据的示例 http://msdn.microsoft.com/zh-cn/l ...

  9. ios调用系统导航

    #import "ViewController.h" #import <MapKit/MapKit.h> @interface ViewController () @p ...

  10. Arduino101学习笔记(七)—— 时间API

    1.毫秒时间 获取机器运行的时间长度, 单位毫秒. 系统最长的记录时间为9小时22分, 如果超出时间将从0开始. 警告: 时间为 unsigned long类型, 如果用 int 保存时间将得到错误结 ...