QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#592225#6818. Barrel TheorytosaniaAC ✓11ms3884kbC++144.4kb2024-09-26 21:17:292024-09-26 21:17:29

Judging History

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

  • [2024-09-26 21:17:29]
  • 评测
  • 测评结果:AC
  • 用时:11ms
  • 内存:3884kb
  • [2024-09-26 21:17:29]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long
int T;
inline int read() {
	int al = 0, fh = 1;
	char ch = getchar();
	while (ch < '0' || ch > '9') {
		if (ch == '-')
			al = -1;
		ch = getchar();
	}
	while (ch <= '9' && ch >= '0') {
		al = al * 10 + ch - '0';
		ch = getchar();
	}
	return al * fh;
}
inline int lowbit(int a) {
	return a & (-a);
}
signed main() {
	T = read();
	for (int yyc = 1; yyc <= T; yyc++) {
		int n, m;
		n = read();
		m = read();
		if (n == 1) {
			cout << "NO\n";
		}
		else if (n == 2) {
			if (m % 2 == 0) {
				cout << "YES\n" << m / 2 << " " << m / 2 << endl;
			}
			else {
				if (m == 3) {
					cout << "NO\n";
				}
				else {
					int ok = 0;
					for (int i = 1; i <= m; i++) {
						if ((i ^ (m - i)) < min(i, m - i)) {
							cout << "YES\n" << i << " " << m - i << endl;
							ok = 1;
							break;
						}
					}
					if (ok == 0) {
						cout << "NO\n";
					}
				}
			}
		}
		else if (m % 2 == 0) {
			if (n % 2 == 0) {
				cout << "YES\n";
				for (int i = 1; i <= n - 2; i++) {
					printf("1 ");
					m--;
				}
				printf("%lld %lld\n", m / (int)2, m / (int)2);
			}
			else {

				if (n == 3) {
					if (lowbit(m) != m) {
						cout << "YES\n";
						cout << m / 2 << " " << m / 2 - lowbit(m / 2) << " " << lowbit(m / 2) << endl;
					}
					else if (m >= 16) {
						cout << "YES\n";
						cout << 3 * m / 16 << " " << 6 * m / 16 << " " << 7 * m / 16 << endl;
					}
					else {
						cout << "NO\n";
					}
				}
				else {
					int k = m - (n - 3);
					if (k <= 4) {
						cout << "NO\n";
					}
					else if (lowbit(k) != k) {
						cout << "YES\n";
						for (int i = 1; i <= n - 3; i++) {
							cout << 1 << " ";
						}
						cout << k / 2 << " " << k / 2 - lowbit(k / 2) << " " << lowbit(k / 2)<<endl;
					}
					else {
						cout << "YES\n";
						for (int i = 1; i <= n - 5; i++) {
							cout << 1 << " ";
						}
						cout << "2 2 ";
						k -= 2;
						cout << k / 2 << " " << k / 2 - lowbit(k / 2) << " " << lowbit(k / 2)<<endl;
					}
				}
			}
		}
		else {
			if (m < 2 * n + 1) {
				cout << "NO\n";
			}
			else {
				if (n % 2 == 0) {
					cout << "YES\n";
					cout << 3 << " ";
					for (int i = 2; i <= n - 2; i++) {
						cout << 2 << " ";
					}
					m -= 2 * (n - 2) + 1;
					cout << m / 2 << " " << m / 2 << endl;
				}
				else {
					int k = m - (n - 3) * 2;
					if ((lowbit(k - 1) != k - 1) && (lowbit(k - 3) != k - 3)) {
						cout << "YES\n";
						for (int i = 1; i <= n - 3; i++) {
							cout << 2 << " ";
						}
						cout << k / 2 << " ";
						int w = lowbit(k / 2);
						if (w == 1)
							w = lowbit(k / 2 - w);
						if ((k / 2 - w) % 2 == 0) {
							cout << k / 2 - w + 1 << " " << w << endl;
						}
						else cout << k / 2 - w << " " << w + 1 << endl;
					}
					else if ((lowbit(k - 1) == k - 1)) {
						if (n == 3) {
							if (k <= 17) {
								cout << "NO\n";
							}
							else {
								cout << "YES\n";
								cout << 3 * (k - 1) / 16 << " " << 6 * (k - 1) / 16 + 1 << " " << 7 * (k - 1) / 16 << endl;
							}
						}
						else if(k>9){
							cout << "YES\n";
							cout << "3 3 ";
							for (int i = 3; i <= n - 3; i++) {
								cout << 2 << " ";
							}
							k -= 2;
							cout << k / 2 << " ";
							int w = lowbit(k / 2);
							if (w == 1)
								w = lowbit(k / 2 - w);
							if ((k / 2 - w) % 2 == 0) {
								cout << k / 2 - w + 1 << " " << w << endl;
							}
							else cout << k / 2 - w << " " << w + 1 << endl;
						}
						else {
							cout<<"NO\n";
						}
					}
					else {
						if (n == 3) {
							if (k <= 19) {
								cout << "NO\n";
							}
							else {
								cout << "YES\n";
								cout << 7 << " " << (k - 7) / 2 + 1 << " " << (k - 7) / 2 - 1 << endl;
							}
						}
						else if(k>11){
							cout << "YES\n";
							cout << 4 << " " << 4 << " ";
							for (int i = 3; i <= n - 3; i++) {
								cout << 2 << " ";
							}
							k -= 4;
							cout << k / 2 << " ";
							int w = lowbit(k / 2);
							if (w == 1)
								w = lowbit(k / 2 - w);
							if ((k / 2 - w) % 2 == 0) {
								cout << k / 2 - w + 1 << " " << w << endl;
							}
							else cout << k / 2 - w << " " << w + 1 << endl;
						}
						else {
							cout<<"NO\n";
						}
					}
				}
			}
		}
	}
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3832kb

input:

3
6 7
5 17
4 4

output:

NO
YES
2 2 6 5 2
YES
1 1 1 1

result:

ok T=3 (3 test cases)

Test #2:

score: 0
Accepted
time: 0ms
memory: 3824kb

input:

4194
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61...

output:

NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
...

result:

ok T=4194 (4194 test cases)

Test #3:

score: 0
Accepted
time: 0ms
memory: 3580kb

input:

1
2 10000000

output:

YES
5000000 5000000

result:

ok T=1 (1 test case)

Test #4:

score: 0
Accepted
time: 0ms
memory: 3624kb

input:

1
3 9999999

output:

YES
4999999 4999997 3

result:

ok T=1 (1 test case)

Test #5:

score: 0
Accepted
time: 0ms
memory: 3628kb

input:

1
5 9999999

output:

YES
2 2 4999997 4999993 5

result:

ok T=1 (1 test case)

Test #6:

score: 0
Accepted
time: 0ms
memory: 3556kb

input:

1
6 9999999

output:

YES
3 2 2 2 4999995 4999995

result:

ok T=1 (1 test case)

Test #7:

score: 0
Accepted
time: 0ms
memory: 3760kb

input:

1
6 10000000

output:

YES
1 1 1 1 4999998 4999998

result:

ok T=1 (1 test case)

Test #8:

score: 0
Accepted
time: 5ms
memory: 3884kb

input:

20
42 500000
18468 500000
6335 500000
6501 500000
19170 500000
15725 500000
11479 500000
9359 500000
6963 500000
4465 500000
5706 500000
8146 500000
3282 500000
16828 500000
9962 500000
492 500000
2996 500000
11943 500000
4828 500000
5437 500000

output:

YES
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 249980 249980
YES
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok T=20 (20 test cases)

Test #9:

score: 0
Accepted
time: 7ms
memory: 3844kb

input:

20
46 500000
9217 500000
4199 500000
17796 500000
9485 500000
19651 500000
14591 500000
6432 500000
10706 500000
18317 500000
5558 500000
8190 500000
12653 500000
607 500000
12154 500000
17830 500000
9814 500000
10368 500000
6659 500000
8962 500000

output:

YES
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 249978 249978
YES
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok T=20 (20 test cases)

Test #10:

score: 0
Accepted
time: 0ms
memory: 3844kb

input:

5104
2 2
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 10
2 11
2 12
2 13
2 14
2 15
2 16
2 17
2 18
2 19
2 20
2 21
2 22
2 23
2 24
2 25
2 26
2 27
2 28
2 29
2 30
2 31
2 32
2 33
2 34
2 35
2 36
2 37
2 38
2 39
2 40
2 41
2 42
2 43
2 44
2 45
2 46
2 47
2 48
2 49
2 50
2 51
2 52
2 53
2 54
2 55
2 56
2 57
2 58
2 59
2 60
2 61
2 6...

output:

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

result:

ok T=5104 (5104 test cases)

Test #11:

score: 0
Accepted
time: 11ms
memory: 3580kb

input:

33333
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
...

output:

YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
15...

result:

ok T=33333 (33333 test cases)