CF31B Sysadmin Bob 题解
Content
给定一个字符串 \(s\),请将其分解为诸如 \(\texttt{xx@xx}\) 的子串,并将分解后的所有子串输出,或者说不存在这样的方案。
数据范围:\(1\leqslant|s|\leqslant 200\)。
Solution
我们运用一点贪心的想法去做。考虑从后往前遍历字符串,一遍历到 @
的就直接将后面的还没占用过的所有字符全部和当前的 @
以及前一个字符组成一个子串。
请注意以下情况:
- 遍历到
@
后,后面没有字符能够和当前的@
组合(包括@
在字符串结尾的情况)。 @
在字符串的开头。- 字符串中根本就没有
@
。
Code
string s, ans[207];
int main() {
cin >> s;
int len = s.size(), lastat = len - 1, vis[207] = {0}, cnt = 0;
_rep(i, len - 1, 0) {
if(s[i] == '@' && !vis[i + 1] && i != 0 && i != len - 1) {
cnt++;
_for(j, i - 1, lastat) {
ans[cnt] += s[j];
vis[j] = 1;
}
lastat = i - 2;
}
else if(s[i] == '@' && (vis[i + 1] || i == 0 || i == len - 1))
return printf("No solution"), 0;
else continue;
}
if(!cnt) return printf("No solution"), 0;
string rest = "";
_for(i, 0, lastat) rest += s[i];
ans[cnt] = rest + ans[cnt];
_rep(i, cnt, 1) {
cout << ans[i];
if(i != 1) printf(",");
}
return 0;
}
CF31B Sysadmin Bob 题解的更多相关文章
- POJ1704 Georgia and Bob 题解
阶梯博弈的变形.不知道的话还是一道挺神的题. 将所有的棋子两两绑在一起,对于奇数个棋子的情况,将其与起点看作一组.于是便可以将一组棋子的中间格子数看作一推石子.对靠右棋子的操作是取石子,而对左棋子的操 ...
- POJ2484 A Funny Game[博弈论]
A Funny Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5401 Accepted: 3381 Desc ...
- 【HIHOCODER 1163】 博弈游戏·Nim游戏
描述 今天我们要认识一对新朋友,Alice与Bob. Alice与Bob总是在进行各种各样的比试,今天他们在玩一个取石子的游戏. 在这个游戏中,Alice和Bob放置了N堆不同的石子,编号1..N,第 ...
- hiho一下 第四十五周 博弈游戏·Nim游戏·二 [ 博弈 ]
传送门 题目1 : 博弈游戏·Nim游戏·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Alice和Bob这一次准备玩一个关于硬币的游戏:N枚硬币排成一列,有的正面 ...
- LightOJ1199 Partition Game
Alice and Bob are playing a strange game. The rules of the game are: Initially there are n piles. A ...
- LightOJ 1253 Misere NIM(反NIM博弈)
Alice and Bob are playing game of Misère Nim. Misère Nim is a game playing on k piles of stones, eac ...
- python123期末四题编程题 -无空隙回声输出-文件关键行数-字典翻转输出-《沉默的羔羊》之最多单词
1. 无空隙回声输出 描述 获得用户输入,去掉其中全部空格,将其他字符按收入顺序打印输出. ...
- A Funny Game(POJ 2484)
原题如下: A Funny Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7108 Accepted: 446 ...
- POJ 1704 Georgia and Bob(阶梯博弈)题解
题意:有一个一维棋盘,有格子标号1,2,3,......有n个棋子放在一些格子上,两人博弈,只能将棋子向左移,不能和其他棋子重叠,也不能跨越其他棋子,不能超越边界,不能走的人输 思路:可以用阶梯博弈来 ...
随机推荐
- 【JavaSE】字符编码和存储编码
字符编码和存储编码 2019-07-15 22:34:51 by冲冲 1. 英文字母和中文汉字在不同字符集编码下的字节数不同. 英文字母 字节数 : 1; 编码:GB2312 字节数 : 1; 编 ...
- [Net 6 AspNetCore Bug] 解决返回IAsyncEnumerable<T>类型时抛出的OperationCanceledException会被AspNetCore 框架吞掉的Bug
记录一个我认为是Net6 Aspnetcore 框架的一个Bug Bug描述 在 Net6 的apsnecore项目中, 如果我们(满足以下所有条件) api的返回类型是IAsyncEnumerabl ...
- Electron快速入门之事件
const { app, BrowserWindow } = require('electron') function createWindow () { const win = new Brow ...
- PHP数组详细介绍(带示例代码)
PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合 ...
- Python 3 快速入门 1 —— 数据类型与变量
本文假设你已经有一门面向对象编程语言基础,如Java等,且希望快速了解并使用Python语言.本文对重点语法和数据结构以及用法进行详细说明,同时对一些难以理解的点进行了图解,以便大家快速入门.一些较偏 ...
- CF1445E four points
我们不妨枚举四个点的移动方向. 那我们可以直接算出在该情况的最优的答案. #include<iostream> #include<cstdio> #include<alg ...
- java数组中Arrays类
使用Arrays类之后要先导入包,即在开头添加这行: import.java.util.Arrays 1,排序:Arrays.sort(数组名) 排序后为数组升序. 2,将数组转换成字符串:Array ...
- mysql—Linux系统直接进入mysql服务器,并实现一些基础操作
首先,我们需要通过以下命令来检查MySQL服务器是否启动: ps -ef | grep mysqld 如果MySql已经启动,以上命令将输出mysql进程列表 如果mysql未启动,你可以使用以下命令 ...
- Vulnstack内网靶场5
实验环境搭建 漏洞详情 (qiyuanxuetang.net) "此次靶场虚拟机共用两个,一个外网一个内网,用来练习红队相关内容和方向,主要包括常规信息收集.Web攻防.代码审计.漏洞利用. ...
- C# js获取buttonid
var id= document.getElementById('<%=控件的ID.ClientID %>');