7.26-STOIRegularMatch-08-#14
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姐姐>_<
如果s的第j位作为t的第i位,那就是f[i-1][j-1],不过得保证s[j]=t[i]。
#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的更多相关文章
- Trusted Cloud Summit(2018.08.14)
时间:2018.08.14地点:北京国际会议中心
- 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 ...
- Cheatsheet: 2013 08.14 ~ 08.19
.NET Lucene.Net ultra fast search for MVC or WebForms site => made easy! C# State Machines HttpCl ...
- 2018.08.14 bzoj4241: 历史研究(回滚莫队)
传送们 简单的回滚莫队,调了半天发现排序的时候把m达成了n... 代码: #include<bits/stdc++.h> #define N 100005 #define ll long ...
- 2018.08.14【2018提高组】模拟A组 比赛总结
题解 这次的A组难得得水. T1 这题我一看,就想起了GDOI的一道题--密码锁 \(O(n)\)算法--差分 于是乎兴奋地发现这道题可以用差分来解. 设\(f_i=a_i-a_{i-1}\). 然后 ...
- 2020.08.14小bug
页面下面的滚动条怎么清除 css overflow-x: hidden;
- PostgreSQL 时间函数分类与特性
KingbaseES 时间函数有两大类:返回事务开始时间和返回语句执行时的时间.具体函数看以下例子: 1.返回事务开始时的时间 以下函数返回事务开始的时间(通过 begin .. end 两次调用结果 ...
- 2013年12月26日 星期四 doxygen入门--很好
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- JavaSE学习总结第08天_面向对象3
08.01 工具类中使用静态 例: class ArrayTool { //将构造方法私有,外界不能创建该类的对象 private ArrayTool(){} //遍历数组 public stat ...
- CentOS6.5安装testlink1.9.14
前提条件:准备一台CentOS6.5虚拟机,配置好IP,关闭iptables和selinux. 这里提供上我的云盘软件,可以去这里下载:http://pan.baidu.com/s/1qXymele ...
随机推荐
- 最新整合maven+SSM+Tomcat 实现注册登录
mybatis学习 http://www.mybatis.org/mybatis-3/zh/index.html Spring学习:http://blog.csdn.net/king1425/arti ...
- OpenLayers典型部分概述
中文学习:http://www.openlayers.cn/portal.php 原文地址:https://www.jianshu.com/p/e693711a7008 一 OpenLayers核心职 ...
- 剖析 Linux hypervisor
hypervisor 之于操作系统类似于操作系统之于进程.它们为执行提供独立的虚拟硬件平台,而虚拟硬件平台反过来又提供对底层机器的虚拟的完整访问.但并不是所有 hypervisor 都是一样的,这是件 ...
- 【Vegas原创】查询SQL Server更改记录的语句
指定数据库,然后: select Name,Create_date,Modify_Date from sys.objects where type in ('U','P', 'V','F', 'TR' ...
- Django的AbstractUser的几大步骤
- 导入 AbstractUser from django.contrib.auth.models import AbstractUser - 往其中添加列,即可在Django的基础上添加我们所需要的 ...
- mysql服务启动、停止、重启
如何启动/停止/重启MySQL 一.启动方式 1.使用 service 启动:service mysqld start 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld sta ...
- Json返回结果为null属性不显示解决方法
返回时null属性不显示:String str = JSONObject.toJSONString(obj); 返回为null属性显示:String str = JSONObject.toJSONSt ...
- Egret里用矢量挖圆形的洞
项目里需要用到,但是不是用在新手引导上,下面的代码可以绘制一个圆的四分之一,用四个即可拼出一个圆. private createShape(): egret.Shape { let magicNum ...
- 【Jetty】Jetty 的工作原理以及与 Tomcat 的比较
Jetty 应该是目前最活跃也是很有前景的一个 Servlet 引擎.本文将介绍 Jetty 基本架构与基本的工作原理:您将了解到 Jetty 的基本体系结构:Jetty 的启动过程:Jetty 如何 ...
- JsonCpp 的使用
JSON全称为JavaScript ObjectNotation,它是一种轻量级的数据交换格式,易于阅读.编写.解析.jsoncpp是c++解析JSON串常用的解析库之一. jsoncpp中主要的类: ...