Trie
ff_666
开心最好。。但现在正是奋起之时!!!
展开
-
LOJ10056
LOJ10056实际上,这题只要任选一个根,将无根树转为有根树,构造val[x]表示从根到x节点的异或和,就变成模板[LOJ10050]了(https://blog.csdn.net/qq_42403731/article/details/81906237%20LOJ10050) 为什么这样是对的?异或同一个数偶数次等于啥也没干异或满足交换律(x xor y=y&...原创 2018-08-23 12:26:19 · 180 阅读 · 0 评论 -
LOJ2012(BZOJ4567)(Luogu P3294)
LOJ2012这题目描述的逻辑真是。。优秀 题目意思为(假设当前单词第x个学):如果有/为当前串的后缀/的单词/且没学,代价为N*N如果没有/为当前串的后缀/的单词/,学它的代价为x如果有/为当前串的后缀/的单词/,则代价为x-y(最近学的)把单词倒着存,后缀就变成前缀,可以用Trie维护假如定义“空”为所有单词后缀,则2可以看成是特殊的1 1的代价太恐怖,所以肯定要避...原创 2018-08-23 15:00:48 · 474 阅读 · 0 评论 -
LOJ10049
LOJ10049Trie裸题(虽然我写这SB题写了快一小时) 对字符串建树的同时刷答案,有两种情况:经过了一个字符串的词尾(即过了一个标记点)一直在另一个字符串里走(没有让树长出新枝)#include<bits/stdc++.h>#define gt() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,std...原创 2018-08-21 13:08:24 · 177 阅读 · 0 评论 -
LOJ10050
LOJ10050异或:相同为假,不同为真 贪心想法,从高位到低位枚举,尽量在上一次的基础上选出两个该位不同的 ——因为高位上一个“1”就大于接下来的所有低位上“1”的加和然后Trie维护,将每个数看成二进制32位就OK了 然后对于每个数,匹配一下: 有不同的,就走 不然就走相同的#include&lt;bits/stdc++.h&gt;#define gt() (p1=...原创 2018-08-21 13:52:29 · 245 阅读 · 0 评论 -
LOJ10051
LOJ10051这题实际上就是加强版的LOJ10050 由于异或一个数偶数次等于啥也没干,所以异或是可以构造“前缀异或”的 那么固定一个终点iii,则我们就是类似“最大连续子段和”一样要找一个max(Simax(Simax(S_i^Sj)Sj)S_j) ——这不就是LOJ10050吗!!!开两个数组L(从左往右),R(从右往左)记录最优解,传递,更新答案即可 O(N∗30)O(N∗...原创 2018-08-21 14:46:06 · 182 阅读 · 0 评论 -
LOJ10052
LOJ10052同LOJ10049,就是读入有毒。。#include&amp;lt;bits/stdc++.h&amp;gt;#define gt() (p1==p2&amp;amp;&amp;amp;(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++)#define isnum(ch) (ch&amp;gt;='0'&amp;amp原创 2018-08-21 15:08:53 · 146 阅读 · 0 评论 -
LOJ10053
LOJ10053字典单词长度这么小,直接写个Trie(真真正正的字典树) 然后类似DP刷表法一样,更新下一状态 如果当前状态能扩展出来,才继续扩展 O(m∗len文章∗len单词)O(m∗len文章∗len单词)O(m*len_{文章}*len_{单词})#include<bits/stdc++.h>#define gt() (p1==p2&&(p2...原创 2018-08-21 15:58:49 · 450 阅读 · 0 评论