CSP-J 练习

桶排序 

以洛谷B3691 [语言月赛202212] 狠狠地切割(Easy Version)为例

代码如下

#include
using namespace std;
int n, m, a[5000004], b[5000007], ans = 1, edge, cnt;//cnt=片段
int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++)scanf("%d", &a[i]);
	for (int i = 1; i <= m; i++) {
		scanf("%d", &b[i]);
		for (int j = 1; j <= n; j++)if (b[i] == a[j])a[j] = 0;
	}
	for (int i = 1; i <= n; i++) {
		if (a[i] == 0) {
			if (cnt)ans++;//有结点
			cnt = 0;//节点清零
		} else cnt++;
	}
	if(cnt)ans++;//对最后结点特殊处理
	cout << ans-1;//骗分
	return 0;
}

P.S.这道题还要用快读

你可能感兴趣的:(知识资料库,算法)