From dc2c83cb378956716657fc947cf0dfb3c4203e6f Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Sat, 30 Sep 2023 01:00:53 +0800 Subject: [PATCH] adjust --- src/include/client.h | 110 +++++++++++++++++++++++++++++++++++++- src/include/dataload.h | 116 ++++++++++++++++++----------------------- 2 files changed, 161 insertions(+), 65 deletions(-) diff --git a/src/include/client.h b/src/include/client.h index 4a53077..b98a91b 100644 --- a/src/include/client.h +++ b/src/include/client.h @@ -13,7 +13,115 @@ #include #include -#include "dataload.h" +#include +#include + +#include "data.h" +#include "zb64.h" +namespace DataLoad { +typedef long long LL; +const int buf_size = 4412555 * 4; +unsigned char buf[buf_size], data[buf_size]; +bool already_have[14348907]; +// std::unordered_map visible_to_probability; +int rid[15] = {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2}; +int cid[15] = {0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4}; +class HashTable { + struct Node { + LL key; + unsigned char value; + Node *next; + Node(LL k, unsigned char v) : key(k), value(v), next(nullptr) {} + }; + Node *table[14348907]; + + public: + HashTable() { + for (int i = 0; i < 14348907; i++) table[i] = nullptr; + } + ~HashTable() { + for (int i = 0; i < 14348907; i++) { + Node *p = table[i]; + while (p) { + Node *q = p->next; + delete p; + p = q; + } + } + } + unsigned char &operator[](LL key) { + int index = key % 14348907; + Node *p = table[index]; + while (p) { + if (p->key == key) return p->value; + p = p->next; + } + p = new Node(key, 0); + p->next = table[index]; + table[index] = p; + return p->value; + } + bool have(LL key) { + int index = key % 14348907; + Node *p = table[index]; + while (p) { + if (p->key == key) return true; + p = p->next; + } + return false; + } +} visible_to_probability; +} // namespace DataLoad +void LoadData() { + using namespace DataLoad; + size_t raw_length = base64_decode(pre_calc_prob, buf, buf_size); + size_t data_length = decompressData(buf, raw_length, data, buf_size); + // std::cout<<"decompress finished.\n"<= 3 || nc < 0 || nc >= 5) continue; + mcnt += (inner_mp[nr][nc] == 0 ? 1 : 0); + } + visible_map[row][col] = mcnt; + } + } + LL visible_status = 0; + for (int i = 0; i < 15; i++) { + int row = rid[i], col = cid[i]; + visible_status = visible_status * 10 + visible_map[row][col]; + } + visible_to_probability[visible_status] = data[cnt++]; + } + // std::cout<<"Load data finished.\n"< visible_to_probability; int rid[15] = {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2}; int cid[15] = {0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4}; -class HashTable -{ - struct Node - { - LL key; - unsigned char value; - Node* next; - Node(LL k,unsigned char v):key(k),value(v),next(nullptr){} - }; - Node* table[14348907]; -public: - HashTable() - { - for(int i=0;i<14348907;i++) - table[i]=nullptr; - } - ~HashTable() - { - for(int i=0;i<14348907;i++) - { - Node* p=table[i]; - while(p) - { - Node* q=p->next; - delete p; - p=q; - } - } - } - unsigned char& operator[](LL key) - { - int index=key%14348907; - Node* p=table[index]; - while(p) - { - if(p->key==key) - return p->value; - p=p->next; - } - p=new Node(key,0); - p->next=table[index]; - table[index]=p; - return p->value; - } - bool have(LL key) - { - int index=key%14348907; - Node* p=table[index]; - while(p) - { - if(p->key==key) - return true; - p=p->next; - } - return false; - } -}visible_to_probability; +class HashTable { + struct Node { + LL key; + unsigned char value; + Node *next; + Node(LL k, unsigned char v) : key(k), value(v), next(nullptr) {} + }; + Node *table[14348907]; + + public: + HashTable() { + for (int i = 0; i < 14348907; i++) table[i] = nullptr; + } + ~HashTable() { + for (int i = 0; i < 14348907; i++) { + Node *p = table[i]; + while (p) { + Node *q = p->next; + delete p; + p = q; + } + } + } + unsigned char &operator[](LL key) { + int index = key % 14348907; + Node *p = table[index]; + while (p) { + if (p->key == key) return p->value; + p = p->next; + } + p = new Node(key, 0); + p->next = table[index]; + table[index] = p; + return p->value; + } + bool have(LL key) { + int index = key % 14348907; + Node *p = table[index]; + while (p) { + if (p->key == key) return true; + p = p->next; + } + return false; + } +} visible_to_probability; } // namespace DataLoad void LoadData() { using namespace DataLoad; size_t raw_length = base64_decode(pre_calc_prob, buf, buf_size); size_t data_length = decompressData(buf, raw_length, data, buf_size); -// std::cout<<"decompress finished.\n"<