zoj3784 String of Infinity 思维。。。

堂堂一道AC自动机被我们乱搞过了 目前zoj排名第一 从run memory目测还没人像我们这样搞的 笑死了

看题目第一遍不太懂第三个条件的意思。

通过样例,第一个明显no,第二个yes的构造方法应该是abbabbbabbbb……

由此我们想到,不管题目给定几个字母,我们只要找到一个字母可以无限增长下去、一个字母有限,且两个字母组合在一起不构成banned word

只要存在这样两个字母,那么一定可以构造出来

#include<cstdio>
#include<cstring>

const int maxlen=1e3+5;
int n,m,jud[30][30],vis[30];
char s[maxlen];
void check()
{
    int vvis[30],q[30],num=0;
    memset(vvis,0,sizeof(vvis));
    for (int i=0;s[i];i++)
    {
        vvis[s[i]-‘a‘]++;
        if (vvis[s[i]-‘a‘]==1)
            q[num++]=s[i]-‘a‘;
    }
    if (num==2)
    {
        if (vvis[q[0]]==1)
            jud[q[1]][q[0]]=0;
        if (vvis[q[1]]==1)
            jud[q[0]][q[1]]=0;
    }
}
int main()
{
    int t;
    scanf("%d",&t);
    while (t--)
    {
        scanf("%d%d",&n,&m);
        for (int i=0;i<m;i++) vis[i]=1;
        for (int i=0;i<m;i++)
            for (int j=0;j<m;j++)
                if (i==j) jud[i][j]=0;
                else jud[i][j]=1;
        for (int i=0;i<n;i++)
        {
            scanf("%s",s);
            int flag=1;
            for (int j=1;s[j];j++)
                if (s[j]!=s[0])
                {
                    flag=0;
                    break;
                }
            if (flag) vis[s[0]-‘a‘]=0;
            check();
            if (strlen(s)==1)
            {
                for (int i=0;i<m;i++)
                    jud[i][s[0]-‘a‘]=jud[s[0]-‘a‘][i]=0;
            }
        }
        int ans=0;
        for (int i=0;i<m;i++)
        {
            int flag=1;
            if (vis[i])
                for (int j=0;j<m;j++)
                    if (jud[i][j])
                        flag=0;
            if (flag==0) ans=1;
        }
        if (ans) printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}

zoj3784 String of Infinity 思维。。。

时间: 2024-11-10 01:10:37

zoj3784 String of Infinity 思维。。。的相关文章

ZOJ3784 String of Infinity 高大上的AC自动机 数据原来这么水啊!不算输入输出只有5-7行

找给定s集合里面word全部是同一个字符的,这样的word有几个,如果数量<m就yes,否则就no.#include<iostream> #include<cstring> #include<string> #include<algorithm> using namespace std; int main(void) { int t; string a; cin>>t; while(t--) { int n,m; cin>>n&

poj 2945 Find the Clones (map+string,hash思维)

Find the Clones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 7498   Accepted: 2780 Description Doubleville, a small town in Texas, was attacked by the aliens. They have abducted some of the residents and taken them to the a spaceship

ZOJ-Big string(服气思维)

个人心得:我在分治上看到的,但是感觉跟分治没关系,一眼想到斐波那契数可以找到此时n的字符串,但是无法精确到字母,题解的思路 真是令人佩服,以BA为基准,然后只要此时的长度大于7那么必然可以减去最大的斐波那契数然后转换为基准,此时直接输出就好了.服气服气 题目: We will construct an infinitely long string from two short strings: A = "^__^" (four characters), and B = "T.

C++中string,wstring,CString的基本概念和用法

一.概念 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中.wstring是操作宽字符串的类.C++标准程序库对于string的设计思维就是让他的行为尽可能像基本类型,不会在操作上引起什么麻烦. CString是对string(字符串)和wstring(宽字符串)的一个封装,常用在mfc中.用来解决编码问题的. string/wstring和CString在使用中,要根据实际环境选取.CString是MFC里的,string是

javascript里的几个特殊值

  NaN Infinity undefined null 0 '' false typeof 'number' 'number' 'undefined' 'object' 'number' 'string' 'boolean' IF判断 else if else else else else else String() 'NaN' 'Infinity' 'undefined' 'null' '0' '' 'false' Number() NaN Infinity NaN 0 0 0 0 num

MVC RenderSection

简要使用介绍 @RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section. 在母版页_Layout.cshtml中定义@RenderSection("Section名") <body> <div id="header">@{Html.RenderAction("Menu", "Global");}</div> <div id="sid

对commonMark.js的理解学习

前几天一直在看markdowm和commonMark.js之间的关系,刚开始还是搞的蛮糊涂的. 今天在大致看工程下面lib文件夹下的js函数的功能: from-code-point.js:函数和String类的fromCodePoint功能是一样的,在若浏览器或者平台上不炸支持这个函数的情况下写了自己定义的函数:这个函数的功能一个是把字元转换为unicode字符. 从官网上摘下来的例子: String.fromCodePoint(42); // "*" String.fromCodeP

Android中ListView分类

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:orientation = "vertical" android:layout_width = "fill_parent" android:layo

数据结构实验报告(四)

实验报告4 图的有关操作 无向网的创建.求度.深度遍历.广度遍历 1 #include <iostream> 2 #include <stdlib.h> 3 #include <stdio.h> 4 #include <string> 5 #define MAX_VERTEX_NUM 20 6 7 using namespace std; 8 //1.建立无向网的邻接表 9 10 typedef int InfoType;//权值 11 typedef ch