求助,64pts!蒟蒻卡死了!
查看原帖
求助,64pts!蒟蒻卡死了!
1036180
ChampionCyan楼主2024/8/31 14:56
#include <bits/stdc++.h>
using namespace std;
int dp[182], stone[102];
bool bridge[92];

inline int smallest(int l, int r) {
	int minn = 2e9;
	for (int i = l; i <= r; i++)
		minn = min(minn, dp[i]);
	return minn;
}

int main() {
	int L, S, T, M, N, cnt = 0;
	scanf("%d%d%d%d", &L, &S, &T, &M);
	N = S * T;
	for (int i = 0; i < M; i++)
		scanf("%d", &stone[i]);
	sort(stone, stone + M);
	if (S == T) {
		for (int i = 0; i < M; i++)
			if (stone[i] % S == 0)
				cnt++;
		printf("%d\n", cnt);
		return 0;
	}
	while (cnt < M) {
		memset(bridge, 0, sizeof(bridge));
		while (cnt < M)
			bridge[stone[cnt++] % N] = 1;
		for (int i = N; i < N + N; i++)
			dp[i] = bridge[i - N] + smallest(i - T, i - S);
		for (int i = N; i < N * 2; i++)
			dp[i - N] = dp[i], dp[i] = 0;
	}
	printf("%d\n", dp[L % N]);
	return 0;
}
2024/8/31 14:56
加载中...