adjust
This commit is contained in:
@ -77,7 +77,7 @@ XXX..X....X.XX..X...
|
|||||||
mine_rate=0.133
|
mine_rate=0.133
|
||||||
total_round=0
|
total_round=0
|
||||||
win_round=0
|
win_round=0
|
||||||
for i in range(0,10):
|
for i in range(0,1):
|
||||||
for data in built_in_test_cases:
|
for data in built_in_test_cases:
|
||||||
fn=open("tmp/test.in","w")
|
fn=open("tmp/test.in","w")
|
||||||
fn.write(data)
|
fn.write(data)
|
||||||
|
@ -520,11 +520,9 @@ double EstimateProb(std::pair<int, int> pos, double default_p = 0.06) {
|
|||||||
(visible_status % vis_line_base) * vis_line_base * vis_line_base +
|
(visible_status % vis_line_base) * vis_line_base * vis_line_base +
|
||||||
((visible_status / vis_line_base) % vis_line_base) * vis_line_base +
|
((visible_status / vis_line_base) % vis_line_base) * vis_line_base +
|
||||||
visible_status / (vis_line_base * vis_line_base);
|
visible_status / (vis_line_base * vis_line_base);
|
||||||
if (DataLoad::visible_to_probability.find(visible_status) !=
|
if (DataLoad::visible_to_probability.have(visible_status))
|
||||||
DataLoad::visible_to_probability.end())
|
|
||||||
ps.push_back(DataLoad::visible_to_probability[visible_status] / 255.0);
|
ps.push_back(DataLoad::visible_to_probability[visible_status] / 255.0);
|
||||||
if (DataLoad::visible_to_probability.find(invers_vis_status) !=
|
if (DataLoad::visible_to_probability.have(invers_vis_status))
|
||||||
DataLoad::visible_to_probability.end())
|
|
||||||
ps.push_back(DataLoad::visible_to_probability[invers_vis_status] / 255.0);
|
ps.push_back(DataLoad::visible_to_probability[invers_vis_status] / 255.0);
|
||||||
}
|
}
|
||||||
if (pos.second - 3 >= 0) {
|
if (pos.second - 3 >= 0) {
|
||||||
@ -540,11 +538,9 @@ double EstimateProb(std::pair<int, int> pos, double default_p = 0.06) {
|
|||||||
(visible_status % vis_line_base) * vis_line_base * vis_line_base +
|
(visible_status % vis_line_base) * vis_line_base * vis_line_base +
|
||||||
((visible_status / vis_line_base) % vis_line_base) * vis_line_base +
|
((visible_status / vis_line_base) % vis_line_base) * vis_line_base +
|
||||||
visible_status / (vis_line_base * vis_line_base);
|
visible_status / (vis_line_base * vis_line_base);
|
||||||
if (DataLoad::visible_to_probability.find(visible_status) !=
|
if (DataLoad::visible_to_probability.have(visible_status))
|
||||||
DataLoad::visible_to_probability.end())
|
|
||||||
ps.push_back(DataLoad::visible_to_probability[visible_status] / 255.0);
|
ps.push_back(DataLoad::visible_to_probability[visible_status] / 255.0);
|
||||||
if (DataLoad::visible_to_probability.find(invers_vis_status) !=
|
if (DataLoad::visible_to_probability.have(invers_vis_status))
|
||||||
DataLoad::visible_to_probability.end())
|
|
||||||
ps.push_back(DataLoad::visible_to_probability[invers_vis_status] / 255.0);
|
ps.push_back(DataLoad::visible_to_probability[invers_vis_status] / 255.0);
|
||||||
}
|
}
|
||||||
if (pos.first + 3 <= rows - 1) {
|
if (pos.first + 3 <= rows - 1) {
|
||||||
@ -560,11 +556,9 @@ double EstimateProb(std::pair<int, int> pos, double default_p = 0.06) {
|
|||||||
(visible_status % vis_line_base) * vis_line_base * vis_line_base +
|
(visible_status % vis_line_base) * vis_line_base * vis_line_base +
|
||||||
((visible_status / vis_line_base) % vis_line_base) * vis_line_base +
|
((visible_status / vis_line_base) % vis_line_base) * vis_line_base +
|
||||||
visible_status / (vis_line_base * vis_line_base);
|
visible_status / (vis_line_base * vis_line_base);
|
||||||
if (DataLoad::visible_to_probability.find(visible_status) !=
|
if (DataLoad::visible_to_probability.have(visible_status))
|
||||||
DataLoad::visible_to_probability.end())
|
|
||||||
ps.push_back(DataLoad::visible_to_probability[visible_status] / 255.0);
|
ps.push_back(DataLoad::visible_to_probability[visible_status] / 255.0);
|
||||||
if (DataLoad::visible_to_probability.find(invers_vis_status) !=
|
if (DataLoad::visible_to_probability.have(invers_vis_status))
|
||||||
DataLoad::visible_to_probability.end())
|
|
||||||
ps.push_back(DataLoad::visible_to_probability[invers_vis_status] / 255.0);
|
ps.push_back(DataLoad::visible_to_probability[invers_vis_status] / 255.0);
|
||||||
}
|
}
|
||||||
if (pos.first - 3 >= 0) {
|
if (pos.first - 3 >= 0) {
|
||||||
@ -580,11 +574,9 @@ double EstimateProb(std::pair<int, int> pos, double default_p = 0.06) {
|
|||||||
(visible_status % vis_line_base) * vis_line_base * vis_line_base +
|
(visible_status % vis_line_base) * vis_line_base * vis_line_base +
|
||||||
((visible_status / vis_line_base) % vis_line_base) * vis_line_base +
|
((visible_status / vis_line_base) % vis_line_base) * vis_line_base +
|
||||||
visible_status / (vis_line_base * vis_line_base);
|
visible_status / (vis_line_base * vis_line_base);
|
||||||
if (DataLoad::visible_to_probability.find(visible_status) !=
|
if (DataLoad::visible_to_probability.have(visible_status))
|
||||||
DataLoad::visible_to_probability.end())
|
|
||||||
ps.push_back(DataLoad::visible_to_probability[visible_status] / 255.0);
|
ps.push_back(DataLoad::visible_to_probability[visible_status] / 255.0);
|
||||||
if (DataLoad::visible_to_probability.find(invers_vis_status) !=
|
if (DataLoad::visible_to_probability.have(invers_vis_status) )
|
||||||
DataLoad::visible_to_probability.end())
|
|
||||||
ps.push_back(DataLoad::visible_to_probability[invers_vis_status] / 255.0);
|
ps.push_back(DataLoad::visible_to_probability[invers_vis_status] / 255.0);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < ps.size(); i++) res += ps[i] * ps[i];
|
for (int i = 0; i < ps.size(); i++) res += ps[i] * ps[i];
|
||||||
|
@ -8,9 +8,66 @@ typedef long long LL;
|
|||||||
const int buf_size = 4412555 * 4;
|
const int buf_size = 4412555 * 4;
|
||||||
unsigned char buf[buf_size], data[buf_size];
|
unsigned char buf[buf_size], data[buf_size];
|
||||||
bool already_have[14348907];
|
bool already_have[14348907];
|
||||||
std::unordered_map<LL,unsigned char> visible_to_probability;
|
// std::unordered_map<LL,unsigned char> visible_to_probability;
|
||||||
int rid[15] = {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2};
|
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};
|
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
|
} // namespace DataLoad
|
||||||
void LoadData() {
|
void LoadData() {
|
||||||
using namespace DataLoad;
|
using namespace DataLoad;
|
||||||
@ -18,7 +75,7 @@ void LoadData() {
|
|||||||
size_t data_length = decompressData(buf, raw_length, data, buf_size);
|
size_t data_length = decompressData(buf, raw_length, data, buf_size);
|
||||||
// std::cout<<"decompress finished.\n"<<std::endl;
|
// std::cout<<"decompress finished.\n"<<std::endl;
|
||||||
// already_have.rehash(4412555);
|
// already_have.rehash(4412555);
|
||||||
visible_to_probability.rehash(4412555);
|
// visible_to_probability.rehash(4412555);
|
||||||
const LL raw_line_base = 243;
|
const LL raw_line_base = 243;
|
||||||
const LL vis_line_base = 100000;
|
const LL vis_line_base = 100000;
|
||||||
int cnt=0;
|
int cnt=0;
|
||||||
|
Reference in New Issue
Block a user