列表

详情


NC14583. 糖糖别胡说,我真的不是签到题目

描述

从前,有  只萌萌的糖糖,他们分成了两组一起玩游戏。他们会排成一排,第  只糖糖会随机得到一个能力值 。从第  秒的时候,第  只糖糖就可以消灭掉所有排在他前面的和他不是同一组的且能力值小于他的糖糖。
为了使游戏更加有趣,糖糖的爸爸,娇姐,会发功  次,第  次发功的时间为 ,则在第  秒结束后,都会增加 1.
现在,娇姐想知道在第  秒后,会有多少只糖糖存活下来。

输入描述

第一行只有一个整数 ,表示测试数据的组数。 第二行有两个整数 。表示糖糖的个数以及娇姐发功的次数。() 第三行到  行,每行有两个整数 ,表示第  只糖糖属于那一组以及他的能力值。() 第  行到第  行,每行有一个整数  ,表示GTW第  次发功的时间.()

输出描述

总共T行,第i行表示第i组数据中,糖糖存活的个数。

示例1

输入:

1 
4 3 
0 3 
1 2 
0 3 
1 1 
1 
3 
4

输出:

3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3 解法, 执行用时: 4001ms, 内存消耗: 0K, 提交时间: 2023-08-13 14:14:46

T = int(input())
for _ in range(T):
	n, m = map(int, input().split())
	a, b, s = [0] * n, [0] * n, [0] * n
	for i in range(n): a[i], b[i] = map(int, input().split())
	for i in range(m): s[int(input()) - 1] += 1
	for i in range(1, n): s[i] += s[i - 1]
	for i in range(1, n): b[i] -= s[i - 1]
	ans, mx = n, [-1e18, -1e18]
	for i in range(n - 1, -1, -1):
		if b[i] < mx[a[i] ^ 1]: ans -= 1
		mx[a[i]] = max(mx[a[i]], b[i])
	print(ans)

上一题