Improve performance for closest string 2

This commit is contained in:
hal8174 2025-01-14 16:39:14 +01:00
parent 8c1aa032d5
commit f080ecedec
7 changed files with 34 additions and 68934 deletions

File diff suppressed because it is too large Load diff

View file

@ -1 +1 @@
csafydvimgvnrhraodeieklynoxgajbjhhsvntdfkvuptfuonsdkyxqculmterhvbwrdytoeggorionubonlkcafauvrfyfinexf
csafgdvimgenrhramdeieklynoxgajbjhhsvntdfkvupnjuonsdkylqculmterhvbwrsytosggoxionubonlqcafaujrfyfinexf

View file

@ -1 +1 @@
csaaydvimgenfhraodeixklynorgajxjhhsvgtdfkvupnjuonsdfylqculmterhqbwsdytoeggorienubombkcafauvrsyfiunxfydutnfhomxvqneunkzpdmurffyqtjyncxkzzklifrpopskobxshsrirnmarylsxffdunbparpzhswqdcbxsjrqwmnnmtwoedfbunwvwikywvpgygashfpvxxldndrbibdoobjceojyhnfmaxxbheyqdddahbdluisejzdturigzhsjwpntxcriqsbbvuqtphjmgmuqqksrclcrmbrlihzpcayatgyhiddwjccnzyibwpigwajqgotdyzjxrjmpqlagfpikakqtiplyasxnglbwieemfvqhjitddujbimxcwykyokxbyfhakpdywutxfrjnyztzeefpazptwbsysfndbzpedbrxfkhrahgxmztnhqcmojshiajwbbegfmpehuawrczvhqrwohigzalcbvyvjkshtgmpmberurbjxzgzysnvqxkknrdryhfnvxlbzntrzmypofoefjowrrrlltgwxvdanbfbyijjzeoxcqbvjlcbdabzwkodtimuapgkgbahmwyglchntycbjttbviiihzfuvjuoohcjpuriotvylnufyziqgyaihlxujdtcyjgrrnmrqhooljsyycrkqexwimkruninplbapzdlpuwtgdvmqcjadhibklmnvcaaeyncbttubnbziblidaspkcvbrzzzpmpvlqixrhzwjfumoeaxrcdpypvcjivzegljbcurkyqdijhubnxvidzhfdzxcbppxuxbjvzcicpordjzcljnijvzjiedngrlrcbgfsjqlztqexmafjhloscgsdkxsejvwnvfzxnfldsurnkstjopgshygxrolcwoxkqlbhrfjmzkzttwhsvbmtrbcdriplrxfncwljctgvmlwhghqpnxyawqgkpzwrjeoxqfiofrmv
cusfydvimgenrhraodeixklynoxgajxjhhsvntdfkvupkjuonsdfylqculmterhvlwrdytoeggorionubombkcafauvrsyfiuexfyduwnfhomxvqneunkzpdmurffyrtjyncxkzzklifrpooskobfshsrirnmarylsxfxdunbparpzhmwqdcbxsjrowgnnmtwleddbuhwqwikrwvpgygashfpvexzdndsbibdoobjcexjyhvfnavxahjyqdseqhbdluknejzdwurirzvsjwpntxerjqsbbvustphjmgmutkksrclcldbrlihzpcakktgyzidwwjcqnmyigwpigyqjqjotfyzjxrjgpqhagfpikbkqtiplyfsxnglbwieemfvqhjitddvmbimxywykyokxbyrhakpdywuzxbrfnyztzwefpazptybsysfndbzpederxvxhrahgxmztbhocmolsvvajlbbegempehuiwrozvhqrqogigzalcbvyjqkshtgmpmkerubbjxpazysnvcxkknrdcyhfnvxlbznmrqmypoqoefjowrrrlcxmfxvdanbfbyifaztoxcybvjlprkapzwkomtimuapqxgbahvwygichntycbjtdbvqiigzfuvjuoohckyuriztvylnufyziqgyaihlxfadtcojgqrnmrqhoolrsyycrkqlxwinkrunpnblbanzdlpuwtgdvmfcxadhvbklmnaoausyzcettudnbzibwidaspkivbrzzzpmpqtqixrbzwjfumoexxrcdpypvcdivzegljbcurkysdbjhubncvidzhfdzxcbppeuxbjvzcickordjzctiniuvzaiedngrlzcbgfskqlztyexjafjclbmcgstkrsejvwnvfzxnfldsurnkskjopgiiyfxrxlcwdhkjlbhsxjmtkzttwhsvbmkrdcvriprrxfncllscztvmzwhehqpnhyakqgkpzwrjloxqfiofrmy

View file

@ -1 +1 @@
mjyhvvxwfnmfqkiehyqoujfpezjtfnusibfwvqqdtywxfgbyrsaevvkteupsjebatbqdjemjoneygrhqswzzijeqdourkpbdhjhkzjvezughojeyktyssyudchhlitpjjvzkqpqlmvwfjspopxgudwwcumsrbfxmoevpplligxwlehgoqbszxrgpjohrurlfxjzuvxmasyzlzdorckgfqgoeanrpavqexopwslgcflgmepmkhzouiajxbcmagptxaytgieqruivqfsbpruugatoexyegbvisemmgjipgaygrcgmligjoksbhamlbvxbjclfwdqkcoeschpeqexnwohcxybiuukoyhewemsjkqcgfcsdjlvzkknbbvlkfxentestcrdresjxuijwlwilsaqynzwseieixrbknoyloivyvccxwplomopgxlbankjsxuqadsxtltkcndielbomecqrffdegahjoassbfakiwmkvzwdwwyaudzrbpsozeawyalmunxnbuyddwztgbknhoseojxhhkmcuwmmgteqbyifksaujqrclzxpmhcjcrskjievbtjjvzpyqoxsaavznbtrnonrgmyqlbpuaehodxatwpyccclemnshpmkcyfysttfzfqgyiaujawjxoioujxthzyaqwewwafbsbjecadkmjqlrrftvpiedngujblwxlfnmdvtqsjnsjhcatruetbywndpccorxulqbnzbhqfknzyxnmmfqueqckflqaputwcthcliwpgygynssylwvqnebvrovsjewsixsyhlpbbxdeomdzljmrbkntreemdwolbpfysselzqbywdhaquimrdoszxxkieybpkoxgyagsgaesmnuimriphupxhetzkthdgcavipapofgyezwbmzucokaeeqqisuzwtskosxmixgscwqnhemwzlgvecabqzcvfvrjmudrlaapxrjandtbniysjxghgheytscdtsqz
mjyhvvxwfnmfqkuehyqoujfkezptfnusibfwvqqdtywxfgbyrsaevvkthupsjebahbqdjbmjoneygrhqswzzijeqdourkpbdhjhkzjvezughojeyktyssyudchhlitpjjvzkqqqlmvwfjspopxgudwwcumsrbfxmoevpplligxwlehgoqbszxrgpjohrurlfxjzuvxmasyzlzdfrckgfqgoeanrpabqexopwklgcflgmepmkhzouiajwbcmaggtxaytgilqruivifsbpruugatzexyegbvwsemmgjipgaygrcgmlihjokibyamlbvibkclfwdqgcoeschpeqexnwohclybiuukoyhewemsjkqcgfcsdjlvcksnbbvlkfxfntestcrdresjxuijwlwiluaqynzwseieixrbknoyloivyvccowplomopgxlbankjsxuqaddxtltkcnkiekbomecqrffdegahjoassbfapiwmkvzwdwwyagdzxbprozeewealmunxnbuvddlztgbknhoseojxhhkocowbogteqbyifcssujqrclzxpmhcjcbskjievbtojvppyqkxsaavzdbtrnonrgmyqlbpuaehodxatwpyccclemnshiukcyfysttvzfqgyiaujawnxsioujxthzyaqwewwafbsbjecadkmjqlrrrtvpiedigujbloxlfnmdvtqsjnsjhcajruetbywnxpbcorxulqbnkbhqfknzyxnmmfquecckflqavutwcthcligpgygynssylwvqnebvfovsdewsixsyhltbbxdeomdzljmrgkntreemdwolbpfyoselzqbywdhaqjimrdoszxxkieybpkoxgyagsgaespnuimriphupxhetzkthdecavipapofgyezwbmducokaeeqqisuzwtskosxmixgscwqnhemwzlgvecabqzcvfvrjmudrlaapxrjandtbniysjxghgheytscdtsqz

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -98,16 +98,38 @@ fn solve(input: &[Vec<u8>]) -> String {
let mut result = String::new();
for (i, col) in columns.iter().enumerate() {
let t = model
.get_obj_attr_batch(attr::X, variables[col].clone())
.unwrap();
let mut hash = HashMap::new();
let mut p = columns[0..i].iter().filter(|&c| c == col).count();
let mut previous = HashMap::new();
for (i, col) in columns.iter().enumerate() {
if !hash.contains_key(col) {
let t = model
.get_obj_attr_batch(attr::X, variables[col].clone())
.unwrap()
.into_iter()
.map(|v| v as usize)
.collect_vec();
hash.insert(col, t);
}
let t = hash.get(col).unwrap();
let mut p = match previous.entry(col) {
std::collections::hash_map::Entry::Occupied(mut occupied_entry) => {
*occupied_entry.get_mut() += 1;
*occupied_entry.get()
}
std::collections::hash_map::Entry::Vacant(vacant_entry) => {
vacant_entry.insert(0);
0
}
};
let mut j = 0;
while t[j] as usize <= p {
p -= t[j] as usize;
while t[j] <= p {
p -= t[j];
j += 1;
}