BZOJ_3012_[Usaco2012 Dec]First!_trie树+拓扑排序 题意: 给定n个总长不超过m的互不相同的字符串,现在你可以任意指定字符之间的大小关系.问有多少个串可能成为字典序最小的串,并输出这些串.n <= 30,000 , m <= 300,000 分析: 首先不考虑大小关系,如果一个串是另一个串的前缀,那么另一个串一定不能成为字典序最小的串,我们可以用trie树很好的解决. 考虑前缀相同的情况,这个串在前缀后的字符应该和含有相同前缀的串在前缀后的字符有明确的大小关系…
(我恨字符串) 惯例化简题目:给定n个字符串,可以改变字符的相对大小(在字典序中的大小),问:字符串i是否能成为最小的字符串(字典序) 解题过程: 首先你可以预处理出来26的全排列然后暴力然后你只要用神威太湖之光开O2就能过了 秒切字典树 推出一堆没用的结论. 说一下思考过程:首先字典树能找前缀都知道吧 观察样例,得:对于不能变成第一的,那么一定是有一个跟它有相同前缀的字符串,但是不完全相等,要有比当前串小的. 然后和旁边大佬一起歪歪瞎搞:建立一棵字典树,然后对于每个字符串跑一遍字典树,如果能找…
[BZOJ3012][Usaco2012 Dec]First! Description Bessie has been playing with strings again. She found that by changing the order of the alphabet she could make some strings come before all the others lexicographically (dictionary ordering). For instance…
线段树优化建图暴力拓扑排序即可.对于已确定的数,拓扑排序时dp,每个节点都尽量取最大值,如果仍与已确定值矛盾则无解.叶子连出的边表示大于号,其余边表示大于等于. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define l…
P3065 [USACO12DEC]第一!First! 题目链接:https://www.luogu.org/problemnew/show/P3065 题目描述 Bessie一直在研究字符串.她发现,通过改变字母表的顺序,她可以按改变后的字母表来排列字符串(字典序大小排列). 例如,Bessie发现,对于字符串串“omm”,“moo”,“mom”和“ommnom”,她可以使用标准字母表使“mom”排在第一个(即字典序最小),她也可以使用字母表“abcdefghijklonmpqrstuvwxy…
题意:给你许多字符串,你可以改变字母序大小,问有哪些字符串可能成为字典序最小的字符串. 我们考虑把这些字符串都塞到\(trie\)树上.之后检索每一个字符串的时候,我们看和他同一层的地方是否有字符,如果有,我们就从他到同层字符连一条有向边,因为只有同层字符妨碍他可能会成为第一.之后进行拓扑排序,检查这种情况是否可以存在即可. #include<cstdio> #include<algorithm> #include<cstring> #include<iostre…
题目链接 Solution 感觉比较巧的题啊... 考虑几点: 可以交换无数次字母表,即字母表可以为任意形态. 对于以其他字符串为前缀的字符串,我们可以直接舍去. 因为此时它所包含的前缀的字典序绝对比它本身小. 需要使得某个字符串 \(S\) 字典序最小,需要讨论两种情况: \(1.\) 与它没有公共前缀的字符串 此时我们即使得 \(S_{1}\) 大于其第一个即可. \(2.\) 与它有公共前缀的字符串 我们令其最长公共前缀的位置为 \(k\) . 那么此时我们即要求,对于任意字符串 \(T\…
对反串建SAM弄出后缀树,每个b串通过倍增定位其在后缀树上对应的节点,根据其长度将节点拆开.然后每个a串也找到对应的节点,由该节点向表示a串的节点连边,再把所给的边连上跑拓扑排序即可. #include<bits/stdc++.h> using namespace std; #define ll long long #define N 800010 char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'…
先做拓扑排序,再bfs处理 #include<cstdio> #include<iostream> #include<cstdlib> #include<cstring> #include<, INF = , , ; } ;i<=n; i++) {         ) {             st.push(i);         }     }     ;         ; i = edge[i].next){             ;…
题目描述 An annual bicycle rally will soon begin in Byteburg. The bikers of Byteburg are natural long distance cyclists. Local representatives of motorcyclists, long feuding the cyclists, have decided to sabotage the event. There are   intersections in B…