C.As Simple as One and Two

A. As Simple as One and Two
time limit per test

3 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given a non-empty string s=s1s2…sns=s1s2…sn, which consists only of lowercase Latin letters. Polycarp does not like a string if it contains at least one string "one" or at least one string "two" (or both at the same time) as a substring. In other words, Polycarp does not like the string ss if there is an integer jj (1≤j≤n−21≤j≤n−2), that sjsj+1sj+2=sjsj+1sj+2="one" or sjsj+1sj+2=sjsj+1sj+2="two".

For example:

  • Polycarp does not like strings "oneee", "ontwow", "twone" and "oneonetwo" (they all have at least one substring "one" or "two"),
  • Polycarp likes strings "oonnee", "twwwo" and "twnoe" (they have no substrings "one" and "two").

Polycarp wants to select a certain set of indices (positions) and remove all letters on these positions. All removals are made at the same time.

For example, if the string looks like s=s="onetwone", then if Polycarp selects two indices 33 and 66, then "onetwone" will be selected and the result is "ontwne".

What is the minimum number of indices (positions) that Polycarp needs to select to make the string liked? What should these positions be?

Input

The first line of the input contains an integer tt (1≤t≤1041≤t≤104) — the number of test cases in the input. Next, the test cases are given.

Each test case consists of one non-empty string ss. Its length does not exceed 1.5⋅1051.5⋅105. The string ss consists only of lowercase Latin letters.

It is guaranteed that the sum of lengths of all lines for all input data in the test does not exceed 1.5⋅1061.5⋅106.

Output

Print an answer for each test case in the input in order of their appearance.

The first line of each answer should contain rr (0≤r≤|s|0≤r≤|s|) — the required minimum number of positions to be removed, where |s||s| is the length of the given line. The second line of each answer should contain rr different integers — the indices themselves for removal in any order. Indices are numbered from left to right from 11 to the length of the string. If r=0r=0, then the second line can be skipped (or you can print empty). If there are several answers, print any of them.

Examples

4
onetwone
testme
oneoneone
twotwo

output

2
6 3
0 3
4 1 7
2
1 4

  题意:就是给你一串字符串。让你去掉最少的字符,这个字符串不能有连续的“one”,"two"出现,并且保证输入的都是小写字母。输出去掉的最小的字符个数和输出去掉字符的位置(索引从1开始)。

题解:我们删除一个字符后它后面的字符就会补上来,可能再次形成不合法,比如字符串twooo你删除第三个那么后面的又是o,不能这样,我们要选择删除第二个w,而不是two的第三个o.

我们可以分成三种情况:

1.“……one……”我们删除第二个n

2.“……two……”我们删除第二个w

3."……twone……"我们删除第三个o

其实2,3是一种情况,当我们遇到two要判断一下是第二还是第三种情况。

AC代码:

#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
char a[200005];
int main(void)
{
int t;
scanf("%d",&t);
vector<int> v;
while(t--)
{
int top=0;
v.clear();
scanf("%s",a);
int n=strlen(a);
for(int i=1;i<n-1;i++){
if(a[i-1]=='o'&&a[i]=='n'&&a[i+1]=='e')
{
a[i]='X';//记得修改
v.push_back(i+1);
}
if(a[i-1]=='t'&&a[i]=='w'&&a[i+1]=='o')
{
if(a[i-1]=='t'&&a[i]=='w'&&a[i+1]=='o'&&a[i+2]=='n'&&a[i+3]=='e'&&i+3<n)
v.push_back(i+1+1),a[i+1]='X';
else
v.push_back(i+1);a[i]='X';//记得修改
}
}
printf("%d\n",v.size());
for(vector<int>::iterator it=v.begin() ;it!=v.end() ;it++ )
printf("%d ",*it);
printf("\n");
}
return 0;
}

  

codeforces1276A As Simple as One and Two的更多相关文章

  1. PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)

    最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...

  2. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...

  3. WATERHAMMER: A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION

    开启阅读模式 WATERHAMMER A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION Waterhammer is an impact load that is ...

  4. BZOJ 3489: A simple rmq problem

    3489: A simple rmq problem Time Limit: 40 Sec  Memory Limit: 600 MBSubmit: 1594  Solved: 520[Submit] ...

  5. Le lié à la légèreté semblait être et donc plus simple

    Il est toutefois vraiment à partir www.runmasterfr.com/free-40-flyknit-2015-hommes-c-1_58_59.html de ...

  6. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  7. 设计模式之简单工厂模式Simple Factory(四创建型)

    工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...

  8. HDU 5795 A Simple Nim 打表求SG函数的规律

    A Simple Nim Problem Description   Two players take turns picking candies from n heaps,the player wh ...

  9. 关于The C compiler "arm-none-eabi-gcc" is not able to compile a simple test program. 的错误自省...

    在 GCC ARM Embedded https://launchpad.net/gcc-arm-embedded/ 上面下载了个arm-none-eabi-gcc 用cmake 编译时 #指定C交叉 ...

随机推荐

  1. wildfly添加JNDI驱动配置

    wildfly-9.0.1.Final/modules目录下新建com文件夹cd com && mkdir mysql && cd mysql && m ...

  2. C++ 的多继承与虚继承

    C++之多继承与虚继承   1. 多继承 1.1 多继承概念 一个类有多个直接基类的继承关系称为多继承 多继承声明语法 class 派生类名 : 访问控制 基类名1, 访问控制 基类名2, ... { ...

  3. 创建包含CRUD操作的Web API接口5:实现Delete方法

    本节是前面四节的延续,在前面几节中我们创建了Web API并添加了必要的基础设施,实现了Get.Post.和Put方法.本节中,我们将介绍如何在Web API中实现Delete方法. 在RESTful ...

  4. 《JAVA高并发编程详解》-Thread start方法的源码

    Thread start方法的源码:

  5. python day 14: 作业:开发一个能够多用户上传文件的FTP脚本

    目录 python day 14 1. 要求 2. 自己写的程序目录 3. models模块 4. settings模块 5. tcp_server模块 6. client模块 7. 后记 pytho ...

  6. Fluxay流光使用

    扫描IPC主机 填写扫描地址.扫描类型为NT/98 显示如下,扫描成功 扫描用户列表 显示如下,扫描成功 下面想怎么做就怎么做 IPC连接失败原因 对方未打开IPC共享 对方未开启139或445端口 ...

  7. 实战AudioToolbox--在iOS平台上播放音频

    上午看了关于AudioToolbox.framework相关的资料,结合网上的资料对AudioToolbox的基本使用有了整体上的认识,上一篇文章 笔谈AudioToolbox(一) 中提到使用Aud ...

  8. mysql修改字符集问题

    mysql字符集问题: 本文主要解决mysql7以下问题:mysql7在默认安装后,关于数据库,表默认保存字符格式为latin1: 可以通过命令:查询当前mysql的编码设置: show variab ...

  9. idea上maven打包

    首先要实现maven打包,pom需要引入依赖 pom.xml <project> <dependencies> …… </dependencies> <bui ...

  10. GreenPlum数据库搭建原原则

    1.平衡: 性能 容量 成本 2.高可用(主节点高可用): 节点 网络 磁盘 3.部署方案: Master和Standby Master分机部署 primaty segment 与miiror Seg ...