uoj上,由於一群人開心的在hack著,有的題的測試資料都有
10000
組了!為了處理這些資料,vfk決定把這道題所有輸入資料都弄出來,每個資料給個編號,比如uo
j1.in
,uoj
2.in 。
這些編號是隨機的,可以不連續,比如三組資料分別叫uo
j1.in
, uo
j100.in
,uoj
2014.in
。輸入資料的檔名一定是:題目名 + 資料編號 + 「.in.in」。
8dajiahaowoshiyangli9.in
dajiahaowoshiyangli5.in
dajiahaowoshiyangli2.in
dajiahaowoshiyangli1.in
dajiahaowoshiyangli3.in
dajiahaowoshiyangli7.in
dajiahaowoshiyangli6.in
dajiahaowoshiyangli8.in
dajiahaowoshiyangli1.in測試點編號dajiahaowoshiyangli2.in
dajiahaowoshiyangli3.in
dajiahaowoshiyangli5.in
dajiahaowoshiyangli6.in
dajiahaowoshiyangli7.in
dajiahaowoshiyangli8.in
dajiahaowoshiyangli9.in
nn的規模
1 ~5n
≤100
6 ~10n
≤10000
保證每個字串的長度小於等於
100 .
時間限制:1s
空間限制:
256mb
直接排序。
第一關鍵字:長度;
第二關鍵字:字典序;
時間複雜度為o(
nllogn
) 。
#include
#include
#include
using
namespace
std;
const
int n=32768;
const
int l=128;
int n;
struct p
p[n];
inline
intoperator
< (p pa,p pb)
int main(void)
其實資料範圍加強,也是可以做的.
還是快排,優化字串的比較方法.
對於兩個字串,我們先預處理處字首hash值,然後二分長度找到不相同的第一位。
時間複雜度優化為o(
nlog
nlogl)
.
#include
#include
#include
using
namespace
std;
typedef
unsigned
long
long ulint;
const
int n=32768;
const
int l=128;
const
int m=257;
int n;
struct p
p[n];
inline
void p::calc(void)
}inline
intoperator
< (p pa,p pb)
return pa.s[r+1]1];
}int main(void)
sort(p+1,p+n+1);
for (int i=1;i<=n;i++) printf("%s\n",&p[i].s[1]);
return
0;}
另外還可以使用trie. o(
nl) .
較大的數字的處理方法:
①用字串儲存,注意不要誤用int;
②注意比較數的大小的時候,首先要比較長度,然後再按字典序比較;
③涉及運算時要用陣列倒著存,高精度模擬;
排序的常用方法:
①氣泡排序:針對小資料;
②快速排序/sort:普通資料;
③基數排序/trie樹排序:當元素的種類很少時考慮使用;
不要忽略方法①和方法③.
關於字典序比較的實現:
①strcmp,字典序逐位比較,o(
l)②若要多次比較,可以考慮預處理出字首hash值,然後二分+hash找最多的相同位,再比較下一位.
預處理o(l
) ,比較o(
logl
) .
資料結構與演算法9 排序1
void x sort elementtype a,int n x表示排序方法的名字 a是輸入的陣列 n是元素個數從上到下,相鄰兩個元素根據大小關係交換位置,第一次排序後最大的數會落到最底層,然後對於n 1個數繼續重複上述過程 void bubble sort elementtype a,int n...
優先佇列實現字典序最小的拓撲排序
煩人的依賴 時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 ubuntu20.04 正式發布了,zls 是乙個作死小能手,於是他決定嘗試一下這個船新版本。好不容易裝完系統,zls 想要給他的系統裝一些常...
9 MySQL的資料排序
1 單個欄位的排序order by desc降序 0 9,a z,a z mysql select prod name,prod price from products order by prod price prod name prod price carrots 2.50 tnt 1 stick...