当前位置: 首页 > news >正文

建电子商城网站室内设计网站

建电子商城网站,室内设计网站,新闻网站开发php,自己写的网页怎么发布题目链接 Solution 感觉比较巧的题啊... 考虑几点: 可以交换无数次字母表,即字母表可以为任意形态.对于以其他字符串为前缀的字符串,我们可以直接舍去. 因为此时它所包含的前缀的字典序绝对比它本身小.需要使得某个字符串 \(S\) 字典序最小,需要讨论两种情况:\(1.\) 与它没有公…

题目链接

Solution

感觉比较巧的题啊...
考虑几点:

  • 可以交换无数次字母表,即字母表可以为任意形态.
  • 对于以其他字符串为前缀的字符串,我们可以直接舍去.
    因为此时它所包含的前缀的字典序绝对比它本身小.
  • 需要使得某个字符串 \(S\) 字典序最小,需要讨论两种情况:
    \(1.\) 与它没有公共前缀的字符串
    此时我们即使得 \(S_{1}\) 大于其第一个即可.

    \(2.\) 与它有公共前缀的字符串
    我们令其最长公共前缀的位置为 \(k\) .
    那么此时我们即要求,对于任意字符串 \(T\), 在字母表中 \(S_{k+1}<T_{k+1}\) .
    我们可以将这种关系在 \(26\) 个字母中形成一张关系图,判断是否满足条件.
    直接判环即可.

其实以上两种情况可以都理解为第二种情况,只是第一种情况的\(k=0\)罢了.

怎样去快速定位公共前后缀的位置?
我们使用 \(Trie\) 树,直接将所有字符串插入 \(Trie\) 树中.
每一次处理都对当前节点所有的非本字符串节点连边,然后拓扑排序判环即可.
总时间复杂度 \(O(sum_{len}*26)\)

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn=300008;
int ch[maxn][26];
int num[maxn],n,cnt;
struct sj{int to;int next;
}a[1008];
int du[30],tot,fuck;
int head[30],size;
string ans[maxn];void add(int x,int y)
{a[++size].to=y;a[size].next=head[x];head[x]=size;
}void dfs()
{queue<int>q;for(int i=0;i<26;i++)if(!du[i])q.push(i);while(!q.empty()){int now=q.front();q.pop();for(int i=head[now];i;i=a[i].next){int tt=a[i].to;du[tt]--;if(!du[tt])q.push(tt);}}
}int insert(char *s)
{int len=strlen(s),u=0;for(int i=0;i<len;i++){if(!ch[u][s[i]-'a'])ch[u][s[i]-'a']=++tot;if(num[ch[u][s[i]-'a']])return 1;u=ch[u][s[i]-'a'];}num[u]++;return 0;
}int pre(string s)
{int len=s.length(),u=0;for(int i=0;i<len;i++){int p=s[i]-'a';for(int j=0;j<26;j++){if(ch[u][j]!=0&&j!=p)add(p,j),du[j]++;}u=ch[u][p];if(i!=len-1&&num[u]!=0)return 0;}return 1;
}
string s[maxn];
char cha[maxn];
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){   scanf("%s",cha);if(!insert(cha)){cnt++;int len=strlen(cha);for(int j=0;j<len;j++)s[cnt]+=cha[j];}}for(int i=1;i<=cnt;i++){memset(a,0,sizeof(a)),size=0;memset(head,0,sizeof(head));memset(du,0,sizeof(du));if(!pre(s[i])){continue;}dfs();int flag=1;for(int j=0;j<26;j++)if(du[j])flag=0;if(flag)ans[++fuck]=s[i];}cout<<fuck<<endl;for(int i=1;i<=fuck;i++)cout<<ans[i]<<endl;
}

P3065 [USACO12DEC]第一!First!

转载于:https://www.cnblogs.com/Kv-Stalin/p/9457431.html

http://www.lbrq.cn/news/2561707.html

相关文章:

  • 安徽营销型网站建设微信公众号怎么推广
  • 网页制作网站建设实战大全南京百度推广开户
  • 网站推广策划评估指标有哪些热词分析工具
  • 网站相册优化公众号开发
  • 公司网站在哪备案十大网站排行榜
  • 口碑好的网站设计制作价格网站模板下载免费
  • 网站免费主机中国国家培训网是真的吗
  • 网站开发流程进度表2345浏览器网站进入
  • 郑州网站建设公司电话网站推广优化的方法
  • 软件开发工程师证书含金量高吗seo教程技术资源
  • 网站设计品金华网站推广
  • 台州网站建设 网站制作 网站设计《新闻联播》今天
  • 如何做网站卖家具竞价排名的弊端
  • 手机网站建设沈阳网站制作开发
  • 施工企业安全生产责任制度seo快速排名优化方式
  • 做外贸怎样上国外网站优化网站推广
  • 网站后台进不去的原因网站制作的基本流程
  • 上海网站建设公司联系方式深圳博惠seo
  • 企业网站里面的qq咨询怎么做建一个企业网站多少钱
  • 凡科建站公司百度seo网站优化
  • 电脑怎样做网站网络推广的工作好做吗
  • 网站建设合同要存档几年武汉服装seo整站优化方案
  • 网站需要怎么做的如何自己做网站
  • 个人建网站首选什么域名好域名邮箱 400电话
  • 自己怎么做电影网站吗百度收录网站
  • wordpress经典博客主题搜索seo引擎
  • 好的html5网站模板谷歌搜索引擎在线
  • 内蒙古住房与城乡建设厅网站网址网络软文营销案例3篇
  • 太原做网站联系方式郴州网站定制
  • 鞍山做网站模板网站建站公司
  • WD5208S,12V500MA,应用于小家电电源工业控制领域
  • Jupyter notebook如何显示行号?
  • day38 力扣279.完全平方数 力扣322. 零钱兑换 力扣139.单词拆分
  • 机试01-C++基础语法与库函数
  • python学智能算法(三十))|SVM-KKT条件的数学理解
  • OpenGL 坐标变换