ZOJ 3985 - String of CCPC - [字符串处理]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3985
题意:
给出一个长度为n的字符串,全部由'C'和'P'组成;
then,可以在原有字符串的基础上添加任意多个’C’或’P’,每次添加一个就要花费一些 $value$,第 i 次添加所花费的 $value = i - 1$;
在任意的地方只要组成”CCPC”就可以获得 1 单位的 $value$,问你到最后可以获得最多多少单位的 $value$。
题解:
观察一下就可以知道,任何添加两个及以上字符的行为都是没有价值增加的。
所以,最多只需要增加一个字符(第一个字符是“免费”的字符)。
先遍历把"CCPC"找出来,然后剩下去判断是否可以利用"CCC"或"CCP"或"CPC"来生成目标字符串"CCPC";
另外, 由于找到的"CCC"有可能是"CCCPC"的前三个字符,那么如果添加一个字符"P",就变成"CCPCPC",这样显然会破坏一个原本就存在的"CCPC",
这样的行为显然是不赚的,而且也会浪费你唯一一次免费字符的机会,所以还不如不加这个字符,所以遇到"CCC"时需要特判一下。
AC代码:
#include<bits/stdc++.h>
using namespace std; int n;
string str; int main()
{
int T;
for(cin>>T;T;T--)
{
cin>>n>>str;
int value=;
bool flag=;
for(int i=;i<n;i++)
{
if(str.substr(i,)=="CCPC")
{
value++;
i+=;
continue;
}
if(!flag)
{
string tmp=str.substr(i,);
if(tmp=="CCC" || tmp=="CCP" || tmp=="CPC")
{
if(tmp=="CCC" && str.substr(i+,)=="CCPC") continue; //特判
value++;
flag=;
}
}
}
cout<<value<<endl;
}
}
ZOJ 3985 - String of CCPC - [字符串处理]的更多相关文章
- ZOJ - 3985 - String of CCPC (思维 + 暴力)
题意: 询问一共有有多少个CCPC,每个得1分,可以自己在任意位置添加字母,第i次添加需要耗费i-1分 思路: 既然每次添加需要耗分,添加第二个字母,相当于没有添加,所以只需要添加一次就好 先计算出原 ...
- java 创建string对象机制 字符串缓冲池 字符串拼接机制
对于创建String对象的机制,在这一过程中涉及的东西还是值得探究一番的. 首先看通过new String对象和直接赋值的方式有什么区别,看如下代码: public static void main( ...
- Java中String直接赋字符串和new String的区别
解析Java中的String对象的数据类型 1. String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...
- Lua 中的string库(字符串函数库)总结
(字符串函数库)总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-11-20我要评论 这篇文章主要介绍了Lua中的string库(字符串函数库)总结,本文讲解了string库 ...
- linux的string操作(字符串截取,长度计算)
按指定的字符串截取 1.第一种方法: ${varible##*string} 从左向右截取最后一个string后的字符串 ${varible#*string}从左向右截取第一个string后的字符串 ...
- C#的String.Split 分割字符串用法详解的代码
代码期间,把代码过程经常用的内容做个珍藏,下边代码是关于C#的String.Split 分割字符串用法详解的代码,应该对码农们有些用途. 1) public string[] Split(params ...
- Leetcode#344. Reverse String(反转字符串)
题目描述 编写一个函数,其作用是将输入的字符串反转过来. 示例 1: 输入: "hello" 输出: "olleh" 示例 2: 输入: "A man ...
- c++ string替换指定字符串
string fnd = "dataset"; string rep = "labels"; string buf = "d:/data/datase ...
- Java中String直接赋字符串和new String的区别(面试常考)
摘取自:https://www.cnblogs.com/guozhenqiang/p/5633269.html 解析Java中的String对象的数据类型 1. String是一个对象. 因为对象的 ...
随机推荐
- form enctype:"multipart/form-data",method:"post" 提交表单,后台获取不到数据
在解决博问node.js接受参数的时候,发现当form中添加enctype:"multipart/form-data",后台确实获取不到数据,于是跑到百度上查了一下,终于明白为什么 ...
- 【Cesium】flyTo
// 1. Fly to a position with a top-down view viewer.camera.flyTo({ destination : Cesium.Cartesian3.f ...
- ASP正则匹配方法
方法二:找到匹配的进行替换 ip="127.0.0.1" Function ReplaceTest(str,patrn, replStr) Dim regEx, str1 Set ...
- NFS exportfs 命令
exportfs 是在服务端上使用的命令,主要用来操作挂载的目录,比如我们修改了NFS配置文件,需要重启NFS服务,如果客户端正在读写,那么重启NFS服务对客户端是有影响的,因此 exportfs 命 ...
- using 释放内存的写法
using (FileStream fileStream = File.Open(fileName,FileMode.Open,FileAccess.Read,FileShare.ReadWrite) ...
- 关于CreateProcess函数一些经验
TCHAR szCmdLine[]={TEXT("E:\\CPL-server\\其他工具\\restartSrv\\bin\\opensavepath.exe")}; TCHAR ...
- 【技术分享会】 @第六期 iOS开发基础
前言 iOS之前被称为 iPhone OS,是一个由苹果公司开发的移动操作系统. iOS的第一个版本是在2007年发布的,其中包括iPhone和iPod Touch. iOS开发工具:Xcode 运行 ...
- Android英文文档翻译系列(6)——LocalBroadcastManager
public class LocalBroadcastManager extends Object java.lang.Object ↳ android.support.v4.content.L ...
- QT开发之旅四邮件发送工具
终于有了一个晚上安静的写写程序,最近一直忙着公司商务上的事情,一直想用QT实现一个调用最底层socket通信来实现的邮件发送程序,以前用C#写过,微软都封装好的,不知道底层是如何实现的,只知道调用方法 ...
- mvc4 初体验(一)
[AllowAnonymous] [AllowAnonymous] 属性,允许匿名 在BaseControler里面加一个[Authorize],所有要验证的页面都继承BaseControler, 不 ...