| ||||||||||
| 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