QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#468630#6143. 滚榜little_sun100 ✓495ms458736kbC++141.5kb2024-07-08 21:54:092024-07-08 21:54:09

Judging History

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

  • [2024-07-08 21:54:09]
  • 评测
  • 测评结果:100
  • 用时:495ms
  • 内存:458736kb
  • [2024-07-08 21:54:09]
  • 提交

answer

#include <bits/stdc++.h>

#define R register
#define ll long long
#define sum(a, b) (((a) + (b)))
#define Add(a, b) ((a) = sum(a, b))
#define meow(cat...) fprintf(stderr, cat)

const ll MaxN = 13;
const ll MaxM = 5e2 + 10;

ll f[1 << MaxN | 1][MaxN + 1][MaxM];
ll n, m, lim, max, a[MaxN + 1], num[1 << MaxN | 1];

int lowbit(int x) { return x & (-x); }

inline ll read()
{
    ll x = 0;
    char ch = getchar();
    while(ch > '9' || ch < '0')
        ch = getchar();
    while(ch <= '9' && ch >= '0') 
        x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar();
    return x;
}

signed main()
{   
	n = read(), m = read();
	lim = (1 << n) - 1, a[0] = -1;
	for(ll i = 1; i <= n; i++)
	{
		a[i] = read(), num[1 << i - 1] = i;
		if(a[i] > a[max]) max = i;
	}
	for(ll i = 1; i <= n; i++)
	{
		ll val = n * (a[max] - a[i] + (max < i));
		if(val <= m) f[1 << (i - 1)][i][val] = 1;
	}
	for(int s = 1; s < lim; s++)
	{
		int pop = __builtin_popcount(s);
		for(int t = s; t; t -= lowbit(t))
			for(int sum = 0; sum <= m; sum++)
			{
				int pos = num[lowbit(t)];
				for(int i = 1; i <= n; i++)
					if(!(s & (1 << (i - 1))))
					{
						int val = sum + (n - pop) * std::max(0ll, (pos < i) + a[pos] - a[i]);
						if(val <= m) Add(f[s | (1 << (i - 1))][i][val], f[s][pos][sum]);
					}
			}
	}
	ll ans = 0;
	for(int i = 1; i <= n; i++)
		for(int j = 0; j <= m; j++)
			Add(ans, f[lim][i][j]);
	printf("%lld\n", ans);
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 5
Accepted
time: 1ms
memory: 6040kb

input:

2 8
8950 8954

output:

2

result:

ok 1 number(s): "2"

Test #2:

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

input:

2 10
8841 8843

output:

2

result:

ok 1 number(s): "2"

Test #3:

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

input:

3 9
8765 8761 8765

output:

2

result:

ok 1 number(s): "2"

Test #4:

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

input:

3 8
8385 8385 8387

output:

6

result:

ok 1 number(s): "6"

Test #5:

score: 5
Accepted
time: 1ms
memory: 5764kb

input:

3 9
8581 8585 8582

output:

2

result:

ok 1 number(s): "2"

Test #6:

score: 5
Accepted
time: 4ms
memory: 18184kb

input:

8 100
8856 8864 8858 8860 8856 8863 8859 8857

output:

17589

result:

ok 1 number(s): "17589"

Test #7:

score: 5
Accepted
time: 4ms
memory: 18044kb

input:

8 100
8238 8239 8245 8244 8245 8244 8238 8244

output:

32475

result:

ok 1 number(s): "32475"

Test #8:

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

input:

8 100
9804 9806 9807 9802 9801 9803 9801 9806

output:

37012

result:

ok 1 number(s): "37012"

Test #9:

score: 5
Accepted
time: 12ms
memory: 61152kb

input:

10 200
8002 8014 8011 8013 8002 8003 8002 8016 8009 8004

output:

606309

result:

ok 1 number(s): "606309"

Test #10:

score: 5
Accepted
time: 16ms
memory: 61272kb

input:

10 200
8324 8323 8328 8322 8325 8328 8328 8323 8334 8323

output:

2504995

result:

ok 1 number(s): "2504995"

Test #11:

score: 5
Accepted
time: 11ms
memory: 59768kb

input:

10 200
9416 9415 9417 9404 9408 9409 9410 9416 9415 9411

output:

2553164

result:

ok 1 number(s): "2553164"

Test #12:

score: 5
Accepted
time: 12ms
memory: 61360kb

input:

10 200
9422 9430 9425 9425 9425 9423 9431 9428 9432 9434

output:

2687280

result:

ok 1 number(s): "2687280"

Test #13:

score: 5
Accepted
time: 128ms
memory: 233528kb

input:

12 300
9281 9292 9279 9280 9289 9291 9285 9279 9280 9281 9290 9281

output:

197821618

result:

ok 1 number(s): "197821618"

Test #14:

score: 5
Accepted
time: 127ms
memory: 231660kb

input:

12 300
9737 9726 9731 9736 9723 9727 9722 9732 9736 9733 9737 9728

output:

196607151

result:

ok 1 number(s): "196607151"

Test #15:

score: 5
Accepted
time: 129ms
memory: 233504kb

input:

12 300
8707 8708 8712 8704 8705 8704 8716 8711 8713 8712 8702 8710

output:

337047589

result:

ok 1 number(s): "337047589"

Test #16:

score: 5
Accepted
time: 124ms
memory: 231456kb

input:

12 300
9200 9194 9191 9195 9197 9192 9206 9206 9197 9198 9192 9202

output:

164570332

result:

ok 1 number(s): "164570332"

Test #17:

score: 5
Accepted
time: 495ms
memory: 455972kb

input:

13 500
8217 8233 8238 8217 8237 8237 8217 8217 8230 8234 8225 8223 8220

output:

1500488819

result:

ok 1 number(s): "1500488819"

Test #18:

score: 5
Accepted
time: 451ms
memory: 458736kb

input:

13 500
9781 9780 9772 9779 9785 9788 9788 9777 9791 9784 9782 9777 9768

output:

4627756434

result:

ok 1 number(s): "4627756434"

Test #19:

score: 5
Accepted
time: 491ms
memory: 458712kb

input:

13 500
8096 8078 8103 8104 8085 8089 8081 8085 8102 8095 8097 8100 8090

output:

1388414345

result:

ok 1 number(s): "1388414345"

Test #20:

score: 5
Accepted
time: 439ms
memory: 455144kb

input:

13 500
8739 8728 8743 8727 8730 8735 8733 8738 8731 8743 8728 8722 8722

output:

3106123719

result:

ok 1 number(s): "3106123719"

Extra Test:

score: 0
Extra Test Passed