社区讨论

样例过了,但是全 WA,悬关求调

P1777帮助参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mhj07sjg
此快照首次捕获于
2025/11/03 18:35
4 个月前
此快照最后确认于
2025/11/03 18:35
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long

using namespace std;

int n, k;
int dp[2][1 << 8][110][9];
int a[110];

int popc(int p)
{
	int res = 0;
	while(p) res += (p & 1), p >>= 1;
	return res;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int idx = 0;
	while(1)
	{
		++ idx;
		cin >> n >> k;
		if(n == 0 && k == 0) break;
		for(int s = 0;s < (1 << 8);s ++) for(int j = 0;j <= k;j ++) for(int l = 0;l < 8;l ++) dp[0][s][j][l] = dp[1][s][j][l] = 1e9;
		int S = 0;
//		dp[0][0][0][8] == 0;
		for(int i = 1;i <= n;i ++)
		{
			cin >> a[i];
			a[i] -= 25;
			S |= (1 << a[i]);
			for(int s = 0;s < (1 << 8);s ++) for(int j = 0;j <= k;j ++) for(int l = 0;l <= 8;l ++) dp[i & 1][s][j][l] = 1e9;
			if(i - 1 <= k) dp[i & 1][1 << a[i]][i - 1][a[i]] = 1;
//			cout << i << "\n";
			for(int s = 0;s < (1 << 8);s ++)
			{
				for(int j = 0;j <= k;j ++)
				{
					for(int l = 0;l < 8;l ++)
					{
						if(dp[(i & 1) ^ 1][s][j][l] > n) continue;
						dp[i & 1][s | (1 << a[i])][j][a[i]] = min(dp[i & 1][s | (1 << a[i])][j][a[i]], dp[(i & 1) ^ 1][s][j][l] + (l != a[i]));
						dp[i & 1][s][j + 1][l] = min(dp[i & 1][s][j + 1][l], dp[(i & 1) ^ 1][s][j][l]);
//						cout << s << " " << j + 1 << " " << dp[(i & 1) ^ 1][s][j][l] << " " << dp[i & 1][s][j + 1][l] << "* \n";
//						cout << (s | (1 << a[i])) << " " << l << " " << a[i] << " " << dp[i & 1][s | (1 << a[i])][j][a[i]] << " \n";
					}
				}
			}
		}
		int ans = 1e9;
		for(int s = 0;s < (1 << 8);s ++)
		{
			for(int j = 0;j <= k;j ++)
			{
				for(int l = 0;l < 8;l ++)
				{
					if(dp[n & 1][s][j][l] <= n) ans = min(ans, dp[n & 1][s][j][l] + popc(s ^ S));
					//					if(dp[n & 1][s][j][l] + popc(s ^ S) == 1) cout << s << " " << j << " " << l << " " << dp[n & 1][s][j][l] << "\n";
				}
			}
		}
		cout << "Case " << idx << ": ";
		cout << ans << "\n";
	}
	return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...