本文共 2039 字,大约阅读时间需要 6 分钟。
题目:
#includeusing namespace std;#define POW2(X) (1 << (X))#define CKBIT(S, X) (((S)&POW2(X)) != 0)const double pi = acos(-1.0);const double eps = 1e-11;template inline void ckmin(T & a, T b) { a = min(a, b);}template inline void ckmax(T & a, T b) { a = max(a, b);}template inline T sqr(T x) { return x * x;}#define SIZE(A) ((int)A.size())#define LENGTH(A) ((int)A.length())#define MP(A, B) make_pair(A, B)#define PB(X) push_back(X)#define FOR(i, a, b) for (int i = (a); i < (b); ++i)#define REP(i, a) for (int i = 0; i < (a); ++i)#define ALL(A) A.begin(), A.end()template int CMP(T a[], const T b[], int n) { return memcmp(a, b, n * sizeof(T));}template void COPY(T a[], const T b[], int n) { memcpy(a, b, n * sizeof(T));}template void SET(T a[], int val, int n) { memset(a, val, n * sizeof(T));}using uint = unsigned int;using int64 = long long;using uint64 = unsigned long long;using ipair = pair ;using VI = vector ;using VD = vector ;using VVI = vector ;using VS = vector ;const int MOD = 1000000007;using ll = long long;using namespace std;int main() { ll dots = 1; int N = 12; cout << endl; unordered_map h, v; while (N-- > 0) { unordered_map ht, vt; ht[1] = 6 * dots; vt[3] = vt[5] = vt[1] = 2 * dots; dots *= 9; for (auto & p : v) { if (p.first % 4 == 1) { int d = (p.first - 1) * 9; ht[d + 1] += p.second; ht[d + 3] += p.second; ht[d + 5] += p.second; } else { int d = (p.first + 1) * 9; ht[d - 1] += p.second; ht[d - 3] += p.second; ht[d - 5] += p.second; } } for (auto & p : h) { if (p.first % 4 == 1) { int d = (p.first - 1) * 9; vt[d + 1] += p.second; vt[d + 11] += p.second; vt[d + 13] += p.second; } else { int d = (p.first + 1) * 9; vt[d - 1] += p.second; vt[d - 11] += p.second; vt[d - 13] += p.second; } } h = move(ht); v = move(vt); } ll res = 0; for (auto & p : h) res += p.first * p.second; for (auto & p : v) res += p.first * p.second; cout << res;}
转载地址:http://yuuci.baihongyu.com/