UOJ
BrooksBUAA
这个作者很懒,什么都没留下…
展开
-
[UOJ 131]【NOI2015】品酒大会:后缀数组+并查集
点击这里查看原题首先用后缀数组求出每个串和上个串的公共前缀长度,然后按公共前缀长度由长到短进行合并,用并查集维护。/* User:Small Language:C++ Problem No.:131 */ #include<bits/stdc++.h> #define ll long long #define inf ((ll)1<<60) using namespace std; const in原创 2017-06-05 08:45:50 · 485 阅读 · 0 评论 -
[UOJ 130]【NOI2015】荷马史诗:哈夫曼树
点击这里查看原题二叉哈夫曼树教程:http://blog.csdn.net/shuangde800/article/details/7341289 这里是k叉哈夫曼树,依然采取贪心策略,不过需要注意的是首先要判断(n-1)%(k-1)是否为0,不为0则要添加权值为0的节点直到(n-1)%(k-1)=0 这是因为,每次合并操作会取出k个点,放进1个点,即每次减少k-1个点。而最终目标是使n个点变为原创 2017-06-06 08:18:59 · 476 阅读 · 0 评论 -
[UOJ 5]【NOI2014】动物园:KMP
点击这里查看原题cnt[i]表示从i出发,经过cnt[i]次nex[i]到达0。于是做两次KMP,第一次求nex[i]和cnt[i],第二次求i一直nex[i]到达的第一个≤i/2的位置/* User:Small Language:C++ Problem No.:5 */ #include<bits/stdc++.h> #define ll long long #define inf ((ll)1<原创 2017-06-06 10:28:36 · 520 阅读 · 0 评论 -
[UOJ 3]【NOI2014】魔法森林:LCT
点击这里查看原题将所有路径按a升序排序,用LCT维护路径上最大的b,将边权化为点权,如果加入一条边x,其两端点分别为u,v,那么将u与i+x连边,v与i+x连边。 如果(u,v)路径最大的b值大于当前边的b,那么删去b最大的边。 注意:access操作中必须pushup,因为这个调了好久/* User:Small Language:C++ Problem No.:3 */ #include<bi原创 2017-06-06 20:59:38 · 407 阅读 · 0 评论 -
[UOJ 220]网格:Tarjan
点击这里查看原题把蛐蛐视为障碍,其他视为空地,那么对答案有影响的只有蛐蛐周围24个方格(八连通)中的空地,其中,八连通的空地为1级空地,八连通外围的空地为2级空地,然后分类讨论 跳蚤数量<2或跳蚤数量等于2且相邻,无解 某个蛐蛐周围的方格不在同一连通块内,0 某个空地是一级空地且为割点,1 n或m=1,1 其他情况,2 最初用map写的,然后有两个点TLE了,于是只好手写hash 然而调了一早上交原创 2017-06-04 11:05:54 · 348 阅读 · 0 评论