QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#496181#9134. Building a Fenceucup-team3695#TL 1ms3600kbC++201.6kb2024-07-28 03:51:422024-07-28 03:51:42

Judging History

你现在查看的是最新测评结果

  • [2024-07-28 03:51:42]
  • 评测
  • 测评结果:TL
  • 用时:1ms
  • 内存:3600kb
  • [2024-07-28 03:51:42]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
#define pb push_back
#define mp make_pair

int caps[4];

int main() {
	cin.tie(0)->sync_with_stdio(0);
	cin.exceptions(cin.failbit);

	int t;
	cin >> t;
	while (t--) {
		int w, h, s;
		cin >> w >> h >> s;
		vi sides;
		sides.pb(w);
		sides.pb(w);
		sides.pb(h);
		sides.pb(h);
		sort(all(sides));

		int out = 1e9;

		do {
			
			rep(mask, 0, (1 << 12)) {
				int med = 0;
				rep(i, 0, 4) caps[i] = sides[i];

				rep(i, 0, 4) {
					//cout << i << ' ' << sides[i] << endl;
					if (caps[i] < 0) {
						med = -1;
						break;
					}
					//if (mask == 4061 && sides[0] == 7 && sides[3] == 7) cout << "hi "  << i << ' ' << caps[i] << endl;
					int nums = (caps[i] + s - 1) / s;
					med += nums;

					int rem = s*nums - caps[i];
					if (rem > 0) {
						//if (mask == 4061 && sides[0] == 7 && sides[3] == 7) cout << "rem " << rem << endl;
						int throwbit = 3*i;
						if (mask & (1 << throwbit)) {
							// don't throw it out
							int dest = 0;
							if (mask & (1 << (throwbit+1))) dest += 2;
							if (mask & (1 << (throwbit+2))) dest += 1;
							if (dest <= i) {
								med = -1;
								break;
							}

							caps[dest] -= rem;
						}
					}
				}
				if (med != -1) out = min(out, med);
			}
		} while (next_permutation(all(sides)));

		cout << out << '\n';
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3600kb

input:

7
7 9 4
1 1 2
1 1 4
4 6 2
3 3 5
10 6 4
1 11 5

output:

8
2
4
10
4
8
5

result:

ok 7 numbers

Test #2:

score: -100
Time Limit Exceeded

input:

8000
1 1 1
1 1 2
1 1 3
1 1 4
1 1 5
1 1 6
1 1 7
1 1 8
1 1 9
1 1 10
1 1 11
1 1 12
1 1 13
1 1 14
1 1 15
1 1 16
1 1 17
1 1 18
1 1 19
1 1 20
1 2 1
1 2 2
1 2 3
1 2 4
1 2 5
1 2 6
1 2 7
1 2 8
1 2 9
1 2 10
1 2 11
1 2 12
1 2 13
1 2 14
1 2 15
1 2 16
1 2 17
1 2 18
1 2 19
1 2 20
1 3 1
1 3 2
1 3 3
1 3 4
1 3 5
1 3...

output:

4
2
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
6
3
2
3
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
8
4
4
2
4
3
4
4
4
4
4
4
4
4
4
4
4
4
4
4
10
5
4
4
2
4
4
3
4
4
4
4
4
4
4
4
4
4
4
4
12
6
4
3
4
2
4
4
4
3
4
4
4
4
4
4
4
4
4
4
14
7
5
4
4
4
2
4
4
4
4
3
4
4
4
4
4
4
4
4
16
8
6
4
4
4
4
2
4
4
4
4
4
3
4
4
4
4
4
4
18
9
6
5
4
3
4
4...

result: