제출 #1137764

#제출 시각아이디문제언어결과실행 시간메모리
1137764huutuanBroken Device 2 (JOI22_device2)C++20
25 / 100
456 ms20356 KiB
#include "Anna.h" #include <utility> #include <vector> #include <bits/stdc++.h> using namespace std; namespace Anna_solver{ const int M=1700; int Declare(){ return M; } mt19937 rng(69420); pair<vector<int>, vector<int>> Anna(unsigned long long A){ vector<int> v; v.push_back(1); while (1){ vector<int> vv; vector<int> ord(64); iota(ord.begin(), ord.end(), 0); shuffle(ord.begin(), ord.end(), rng); for (int j:ord){ if (A>>j&1) vv.push_back(0); vv.push_back(1); } if ((int)v.size()+(int)vv.size()>M) break; v.insert(v.end(), vv.begin(), vv.end()); } return {vector<int>(v.size(), 0), v}; } } int Declare() { return Anna_solver::Declare(); } std::pair<std::vector<int>, std::vector<int> > Anna(long long A) { return Anna_solver::Anna(A); }
#include "Bruno.h" #include <utility> #include <vector> #include <bits/stdc++.h> using namespace std; namespace Bruno_solver{ const int M=1700; mt19937 rng(69420); long long Bruno(vector<int> v){ unsigned long long ans=ULONG_MAX; vector<int> id, d; for (int i=0; i<(int)v.size(); ++i){ if (v[i]==1) id.push_back(i); } for (int i=0; i<(int)id.size()-1; ++i){ d.push_back(id[i+1]-id[i]-1); } for (int i=0; i<(int)d.size()/64; ++i){ vector<int> ord(64); iota(ord.begin(), ord.end(), 0); shuffle(ord.begin(), ord.end(), rng); unsigned long long a=0; for (int j=i*64; j<(i+1)*64; ++j){ if (d[j]) a|=1ull<<ord[j%64]; } ans&=a; } vector<int> ord(64); iota(ord.begin(), ord.end(), 0); shuffle(ord.begin(), ord.end(), rng); return ans; } } long long Bruno(std::vector<int> u) { return Bruno_solver::Bruno(u); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...