A-3 SRM 08

描述

给一个 01 串设为其 S,询问是否存在只出现两次的 01 串 T。

这里的出现定义为存在一串下标 ,满足  且 

输入格式

一行,一个 01 串

输出格式

一行,字母 Y 表示存在,N 表示不存在

样例输入 1

000

样例输出 1

N

样例输入 2

010

样例输出 2

Y

数据范围与约定

  • 设串 S 的长度为 n,
  • 数据为随机生成

样例解释

第一个样例中,"000"出现了一次([1+2+3]),"00"出现了三次([1+2],[2+3],[1+3]),"0"出现了三次([1],[2],[3])

第二个样例中,"0"出现了两次。

-------------

条件中用来保证T为S子串。

在A-1中,n的长度为2≤n≤3,打表就好了,想怎么打怎么打。

 #include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char s[];
bool ans;
int main()
{
int n;
scanf("%s",s);
n=strlen(s);
if (n==) {
if (s[]==s[]) ans=; else ans=;
} else {
if (s[]==s[] && s[]==s[]) ans=;
else ans=;
}
if (ans==) printf("Y\n"); else printf("N\n");
return ;
}

A-1

A-2数据不大,可以直接用dfs水过。

写法请教过nbc姐姐>_<

 f[i][j]代表t的前i位在s的前j位中出现的次数。

如果s的第j位作为t的第i位,那就是f[i-1][j-1],不过得保证s[j]=t[i]。

 如果s的第j位不用作t的第i位,那就转移到了f[i][j-1]。
 #include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
char __input[];
int N,S[],T[],f[][];
void Check (int M)
{
for (int i=; i<=N; i++) f[][i]=;
for (int i=; i<=M; i++) {
f[i][]=;
for (int j=; j<=N; j++) {
f[i][j]=f[i][j-];
if (T[i]==S[j]) f[i][j]+=f[i-][j-];
}
}
if (f[M][N]==) {
printf("Y\n");
exit();
}
}
void DFS(int k)
{
Check(k);
if (k<N) {
T[k+]=;
DFS(k+);
T[k+]=;
DFS(k+);
}
}
int main()
{
scanf("%s",__input+);
while (__input[N+]) N++;
for (int i=; i<=N; i++) S[i]=__input[i]-'';
DFS();
printf("N\n");
return ;
}

A-2

A-3我们可以简单地分情况处理。小于等于3的情况我们可以直接吧A-1的表弄过来。当n大于3时,需要分情况。

1.如1001 110000 10100000这样的情况,都属于只有两个1或2个0的情况,这种是一定成立的。

2.第二种情况。 如00111101010101    100101010101这样的情况,有两个0或两个1靠在一起,也是一定成立。

如第一个串00111101010101,可以取下标为a[1],a[3-n]的数作为子串1,a[2],a[3-n]的数作为子串2,可以证明当两个0或两个1靠在一起时是成立的。

3.第三点。如11101   1010000111,这两个串都有相邻的0或1,但却是不成立的。因为相邻的数个数大于等于3,如第一个串,我们可以取下标a[1],a[4-n];a[2],a[4-n];a[3],a[4-n]三个子串,个数不为2.

综合起来就是,n大于3时,只要找相邻的0或1且保证这组相邻数连续个数等于2,结果就是Y。反之则为N。

(天呐我怎么讲话舌头打结…

 #include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int x=,y=;
int main()
{
bool ans;
char s[];
scanf("%s",s);
int n=strlen(s);
if (n==)
if (s[]==s[]) ans=; else ans=;
else if (n== && s[]==s[] && s[]==s[]) ans=; else ans=;
if (n== || n==) {
if (ans==) printf("Y\n"); else printf("N\n");
return ;
}
for (int i=; i<n; i++) if (s[i]=='') x++; else y++;
if (x== || y==) ans=; else {
ans=;
for (int i=; i<n-; i++) if (s[i-]!=s[i] && s[i]==s[i+] && s[i+]!=s[i+]) ans=;
}
if (ans==) printf("Y\n"); else printf("N\n");
return ;
}

A-3

正解A-3代码

维修中_(:з」∠)_

7.26-STOIRegularMatch-08-#14的更多相关文章

  1. Trusted Cloud Summit(2018.08.14)

    时间:2018.08.14地点:北京国际会议中心

  2. walk around by The provided App differs from another App with the same version and product ID 分类: Sharepoint 2015-07-05 08:14 4人阅读 评论(0) 收藏

    'm currently developing a SharePoint 2013 application. After a few deployments via Visual Studio, I ...

  3. Cheatsheet: 2013 08.14 ~ 08.19

    .NET Lucene.Net ultra fast search for MVC or WebForms site => made easy! C# State Machines HttpCl ...

  4. 2018.08.14 bzoj4241: 历史研究(回滚莫队)

    传送们 简单的回滚莫队,调了半天发现排序的时候把m达成了n... 代码: #include<bits/stdc++.h> #define N 100005 #define ll long ...

  5. 2018.08.14【2018提高组】模拟A组 比赛总结

    题解 这次的A组难得得水. T1 这题我一看,就想起了GDOI的一道题--密码锁 \(O(n)\)算法--差分 于是乎兴奋地发现这道题可以用差分来解. 设\(f_i=a_i-a_{i-1}\). 然后 ...

  6. 2020.08.14小bug

    页面下面的滚动条怎么清除 css overflow-x: hidden;

  7. PostgreSQL 时间函数分类与特性

    KingbaseES 时间函数有两大类:返回事务开始时间和返回语句执行时的时间.具体函数看以下例子: 1.返回事务开始时的时间 以下函数返回事务开始的时间(通过 begin .. end 两次调用结果 ...

  8. 2013年12月26日 星期四 doxygen入门--很好

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  9. JavaSE学习总结第08天_面向对象3

      08.01 工具类中使用静态 例: class ArrayTool { //将构造方法私有,外界不能创建该类的对象 private ArrayTool(){} //遍历数组 public stat ...

  10. CentOS6.5安装testlink1.9.14

    前提条件:准备一台CentOS6.5虚拟机,配置好IP,关闭iptables和selinux. 这里提供上我的云盘软件,可以去这里下载:http://pan.baidu.com/s/1qXymele ...

随机推荐

  1. 基于Ubuntu + nextCloud 搭建自己的私人网盘

    系统要求:Ubuntu 16.04.1 LTS 64 位操作系统 基础设置 切换为 root 账号 Ubutu 系统默认登录的用户为非 root 权限用户,为了能正常安装 nextCloud,需要切换 ...

  2. 给iOS开发者的Android开发建议

    本人从事iOS应用开发已经5年有余,直到现在还总是刻意回避Andriod应用的开发.但是不管你信不信,安卓开发还是很有意思的,从iOS转向Android应用开发的跨度并没有你想象的那么大. 现在我把在 ...

  3. TitleBar 的那些设置

    设置状态栏透明: View decorView = activity.getWindow().getDecorView(); int option = View.SYSTEM_UI_FLAG_LAYO ...

  4. Nginx配置WebService、MySQL、SQL Server、ORACLE等代理

    首先介绍一下Nginx的基本使用: 注意不要直接双击nginx.exe,这样会导致修改配置后重启.停止nginx无效,需要手动关闭任务管理器内的所有nginx进程 在nginx.exe目录,打开命令行 ...

  5. js计算字符串的字节数和字符串与二进制的相互转化

    一.js计算字符串的字节数方法: //blob获取字符串的字节 var debug = "好的"; var blob = new Blob([debug],{type : 'tex ...

  6. 模仿ReentrantLock类自定义锁

    简介 临近过年了,没什么需求,今天模仿ReentrantLock自定义写了一个自己锁,在这里记录一下,前提是对AQS原理有所了解,分享给大家 1.自定义锁MyLock package com.jack ...

  7. 【HTTPS】自签CA证书 && nginx配置https服务

    首先,搭建https服务肯定需要一个https证书.这个证书可以看做是一个应用层面的证书.之所以这么说是因为https证书是基于CA证书生成的.对于正式的网站,CA证书需要到有资质的第三方证书颁发机构 ...

  8. Oracle调整内存超出限制出现ORA-27100: shared memory realm already exists问题解决办法

    今天测试服务器遇到问题 ORA-04030:out of process memory when trying to allocate string bytes 一看就猜到是内存不足了,把Oracle ...

  9. Angular4学习笔记(一)-环境搭建

    下载nodejs 下载地址 在命令行输入:npm -v 如果出现如下画面即安装成功 安装Angular的cli命令行工具 命令:sudo npm install -g @angular/cli 输入n ...

  10. Angular4学习笔记(三)- 路由

    路由简介 路由是 Angular 应用程序的核心,它加载与所请求路由相关联的组件,以及获取特定路由的相关数据.这允许我们通过控制不同的路由,获取不同的数据,从而渲染不同的页面. 相关的类 Routes ...