2017CCPC秦皇岛 E题String of CCPC&&ZOJ3985【模拟】
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3985
题意:
给定一个字符串,由c和p组成,可以添加c或者p。 串中出现一个ccpc 价值+1(ccpc可以出现部分重叠),但是如果添加x个字母,那么花费为x-1。问“价值-花费”的总价值 最大。 最多总价值可以比原来串中的ccpc数目增加1,因为只有第一个字母不要钱,其他字母即使生成一个ccpc,花费也会随应的增加1。 只有一种情况可以再增加1个字母的时候生成两个,那就是在ccpcpc 的第三个字母后面,但是考虑到这个串初始就有1个,所以增加量还是1。
思路:
找ccpc,然后把中间的两个用其他符号替换掉,然后在查找 这三种 ccp cpc ccc。因为这三个增加一个 即可得到一个ccpc。
代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=2e5+;
char s[N]; int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
memset(s,,sizeof(s));
scanf("%s",s);
int ans=;
for(int i=; i<n; i++)
{
if(s[i]=='C'&&s[i+]=='C'&&s[i+]=='P'&&s[i+]=='C')ans++;
}
for(int i=; i<n; i++)
{
int flag=;
if(s[i]=='C'&&s[i+]=='P'&&s[i+]=='C')
{
if(i-<||s[i-]!='C')flag++;
}
if(s[i]=='C'&&s[i+]=='C'&&s[i+]=='P'&&s[i+]!='C')flag++;
if(s[i]=='C'&&s[i+]=='C'&&s[i+]=='C')
{
if(s[i+]=='P'&&s[i+]=='C')flag--;
flag++;
}
if(flag)
{
ans++;
break;
}
}
cout<<ans<<endl;
}
return ;
}
2017CCPC秦皇岛 E题String of CCPC&&ZOJ3985【模拟】的更多相关文章
- 2017 CCPC秦皇岛 E题 String of CCPC
BaoBao has just found a string of length consisting of 'C' and 'P' in his pocket. As a big fan of ...
- 2017CCPC秦皇岛 L题One-Dimensional Maze&&ZOJ3992【模拟】
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3992 题意: 走迷宫,一个一维字符串迷宫,由'L'.'R'组成,分别 ...
- 2017CCPC秦皇岛 A题Balloon Robot&&ZOJ3981【模拟】
题意: 一个机器人在长为M的圆形轨道上送气球,当机器人到达M号点的时候下一站会回到1号点,且全程不会停止运动.现在在长为M的轨道上有N个队伍,队伍会在某个时间做需要一个气球,机器人需要送过去.一共有P ...
- 2017CCPC秦皇岛 C题Crusaders Quest&&ZOJ3983【模拟+STL】
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3983 题意: 给定9个血槽,有三种物品,每次可以把连续相同的物品抵消 ...
- 2017CCPC秦皇岛 G题Numbers&&ZOJ3987【大数】
题意: 给出一个数n,现在要将它分为m个数,这m个数相加起来必须等于n,并且要使得这m个数的或值最小. 思路: 从二进制的角度分析,如果这m个数中有一个数某一位为1,那么最后或起来这一位肯定是为1的, ...
- 2017CCPC秦皇岛 H题Prime Set&&ZOJ3988
题意: 定义一种集合,只有两个数,两个数不同且加起来为素数.要从n个数里抽出数字组成该集合(数字也可以是1~n,这个好懵圈啊),要求你选择最多k个该种集合组成一个有最多元素的集合,求出元素的数量. 思 ...
- 2017CCPC秦皇岛 M题Safest Buildings&&ZOJ3993【复杂模拟】
题意: 给出两个半径R,r,R表示第一次的大圈半径,r表示第二次的小圈半径.第一次大圈的圆心位于(0,0),第二次小圈的圆心未知,但在大圈内,给你一个n,然后给出n个屋子的位置,问这些屋子中,第二次在 ...
- ZOJ 3981 && 2017CCPC秦皇岛 A:Balloon Robot(思维题)
A - Balloon Robot Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Sub ...
- 2017 CCPC秦皇岛 M题 Safest Buildings
PUBG is a multiplayer online battle royale video game. In the game, up to one hundred players parach ...
随机推荐
- jquery 選擇器
jquery 選擇器有: 元素選擇器: $("p")選擇所有<p> $("p.intro")選擇所有class=“intro”的<p> ...
- Lodop打印条码二维码设置多宽不一定是多宽
Lodop输出二维码和条码,可用如下语句,其中下面的width和height参数,设置了条码或二维码多宽,会发现可能不是设置的宽度或高度.ADD_PRINT_BARCODE(Top,Left,Widt ...
- ELK--filebeat nginx模块
Nginx模块 该nginx模块解析由Nginx HTTP服务器创建的访问和错误日志 . 当你运行这个模块的时候,它会执行一些任务: 设置日志文件的默认路径(但不用担心,可以覆盖默认值) 确保每个 ...
- BZOJ2157旅游——树链剖分+线段树
题目描述 Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间有且只有一条路 ...
- UVALive5874 - Social Holidaying-二分图匹配/匈牙利算法
有n个家庭,m个房间,一个房间只能两个家庭住.求最大匹配. 比较标准的二分图问题.先初始化把可能的家庭建边,然后跑一边匈牙利算法. 最后的答案是最大匹配数/2,因为建图时有重复. #include & ...
- Tree 菜单 递归
转载:http://www.cnblogs.com/igoogleyou/archive/2012/12/17/treeview2.html 一,通过查询数据库的方法 ID 为主键,PID 表明数据之 ...
- Redis中的简单动态字符串
Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SD ...
- 1. vim 的安装及配置
简介 vim是什么 vim是一款功能强大.支持各种插件.配置极为灵活的编辑器,且支持多种主流OS(linux.Unix.mac.windows),可用来各种编程预言的coding和文件编辑,用习惯了v ...
- Logstash 解析Json字符串,删除json嵌套字段
一.场景:此文以一个简单的json字符串文件为例,描述如何用logstash解析嵌套的json,并删除其中的某些字段 我们在linux中test.json的内容如下: {"timestamp ...
- JAVA类中获取项目路径
在java web项目中获取项目的src/main/resource下的文件路径 当前类名.class.getClassLoader().getResource("/").getP ...