Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:C++ AC代码(纯模拟,为了不超时,数据进行了部分减支)In Reply To:C++ AC代码(纯模拟,为了不超时,数据进行了部分减支) Posted by:freelark at 2017-01-03 22:48:47 > #include <iostream> > #include <stdlib.h> > #include <numeric> //加法用 > using namespace std; > > int *size = new int[7]; > int *box = new int[36]; > int total, num=0; > > bool insert_flag(int x, int y, int i) > { > for (int m = 0; m < i; m++) > { > for (int n = 0; n < i; n++) > if (box[(x + m) * 6 + (y + n)] != 0 || (x + m)>5 || (y + n)>5) > return false; > } > return true; > } > > void pack() > { > if (num > 0) total++; > while (num > 0) > { > int last, first = 0; > for (int i = 1; i <= 6; ++i) > { > if (size[i] != 0) > { > if (first == 0) first = i; > last = i; > } > } > for (int i = last; i >= first; i--) > { > while (size[i] != 0) > { > int x = 0, y = 0; > while (!insert_flag(x, y, i) && (x + y) <= 10) > { > y++; > if (y == 6){ > y = 0; > x++; > } > } > if (x + i <= 6 && y + i <= 6) > { > for (int m = 0; m < i; m++) > for (int n = 0; n < i; n++) > box[(x + m) * 6 + (y + n)] = i; > size[i]--; > num--; > } > else break; > } > if (i == first && size[i]!=0 ) > { > total++; > memset(box, 0, 36 * sizeof(int)); > break; > } > } > } > } > > int main() > { > while (1) > { > total = 0; > memset(box, 0, 36 * sizeof(int)); > for (int i = 1; i <= 6; ++i) > cin >> size[i]; > num = accumulate(size + 1, size + 7, 0); > if (!num) break; > //以下减少运算量 > if (size[6] > 0){ total += size[6]; size[6] = 0; } > if (size[3] / 4 > 0) { total += size[3] / 4; size[3] = size[3] % 4; } > if (size[1] <= 11 * size[5]) size[1] = 0; else size[1] -= 11 * size[5]; > if (size[5] > 0){ total += size[5]; size[5] = 0; } > > num = accumulate(size + 1, size + 7, 0); > pack(); > cout << total << endl; > } > delete[]size; > delete[]box; > system("pause"); > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator