首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
donut专题
HDU 5442 Favorite Donut
第一种方法,最小表示法 其实呢,你将每一个字母反转一下,将’a’变成’z’,就是最小表示法。 但是反转之后,我们如果用最小表示法,得到的是,在原串上位置最靠后的情况,与题意不服,所以我这里就强行将之往后硬判,最坏复杂度是当串所以的字符都相同的情况,退化成 O(n2) O(n^2)。 // whn6325689// Mr.Phoebe// http://blo
阅读更多...
HDU 5442 Favorite Donut 最大表示法+KMP
首先2次最大表示法求出顺序和逆序情况下的位置,不过逆序求出来的是最大的下标,可以利用循环节来推出最小的位置。 #include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1000010;int f[maxn];char s[maxn];void getFail
阅读更多...
【HDU5442】 Favorite Donut(后缀数组)
题意,给你一个长度为n的字符串,让你选择从某一个地方断开(可以正着取也可以反着取)。问你最大的字典序是从哪里断开。 首先先将原串复制一遍,然后用后缀数组求出字典序最大的位置,如果字典序相同则求出最靠前的位置。 然后再将该串翻转,得到反向取字典序最大的串,再直接比较就好了。 code: #include<cstdio>#include<cstring>#include<algorit
阅读更多...
hdu 4189 SWERC 2011 C - Cybercrime Donut Investigation
http://acm.hdu.edu.cn/showproblem.php?pid=4189 题意说是一个数据库,有n(n<=100, 000)个甜甜圈,每个甜甜圈有两个属性l,w. (l,w<10^9) 后面有q个询问,会输入q(q<=50, 000)个罪犯的属性l,w。然后输出每个罪犯与数据库中的资料的最小相似度。相似度是 abs(l1-l2)+abs(w1,w2)。 其实如果把属性看做
阅读更多...