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. DOM – (w3school)1.DOM 方法 + 2.DOM属性 + 3.DOM 元素

      1.DOM 方法   一些 DOM 对象方法 这里提供一些您将在本教程中学到的常用方法: 方法 描述 getElementById() 返回带有指定 ID 的元素. getElementsByTa ...

  2. wifi基础知识整理

    转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...

  3. HTML CSS微信CSS显示一些总结

    微信显示网页是调用腾讯自带的浏览器内核,由于腾讯浏览器内核对css展示效果没有谷歌浏览器好,导致用谷歌浏览器写好的网页,放到微信页面之后,显示的效果就发生变化,所以调整css样式显得那么吃力: 1. ...

  4. 在SQL里如何写条件逻辑?

    主要涉及CASE,WHEN之类.. 不同的服务器上实现if...else...是不一样的. 建议用CASE ,WHEN,因为它们是SQL国标呢. mysql> SELECT -> SUM( ...

  5. at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) 报空指针

    原来发布到weblogic 的项目,想改动发布到tomcat上.启动发布一切都正常.出入项目请求路径却包错: java.lang.NullPointerException at org.apache. ...

  6. poj 2236:Wireless Network(并查集,提高题)

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 16065   Accepted: 677 ...

  7. VC++中字符串编码的转换

    在以前VC++6.0中默认的字符集是多字节字符集(MBCS:Multi-Byte Character Set),而VS2005及以后默认的字符集是Unicode,这样导致以前在VC6.0中非常简单实用 ...

  8. Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式

    当前有两个表,sgroup与sgroupuser,两者通过gKey关联,而sgroup表记录的是组,而sgroupuser记录是组中的用户,因此在sgroupuser中不一定有数据.需要使用Left ...

  9. 数据结构之图 Part3 – 2 遍历

    BFS using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...

  10. bbed的使用--安装及初探

    bbed是oracle内部一款用来直接查看和修改数据文件数据的工具,可以直接修改Oracle数据文件块的内容,在一些特殊恢复场景下比较有用. 1.bbed 的安装 在9i/10g中连接生成bbed: ...