垃圾分类
利用下三角矩阵求得空闲区块的数目space
和冲突的最大值conflict
。如果space>=conflict
则约束条件不影响分成两个车厢;否则根据space
值返回。
def garbage(values, n):
if not values:
return n // 2 * 2
conflict, space = 0, 0
for nu in range(n):
current = sum(values[nu][:nu])
if current == 0:
space += 1
if current > conflict:
conflict = current
if space >= conflict:
return n // 2 * 2
else:
return space * 2
if __name__ == '__main__':
n, m = list(map(int, input().strip().split()))
values = [[0 for _ in range(n)] for _ in range(n)]
for _ in range(m):
one, two = list(map(int, input().strip().split()))
if one < two:
one, two = two, one
values[one-1][two-1] = 1
res = garbage(values, n)
print(res)
'''
5 2
1 4
3 4
5 4
1 2
2 3
3 4
4 5
'''
简单游戏
懒人模式,暴力求解。提交结果超时,通过45%。
def simple_game(seq, n, m):
if not seq:
return 0
if n <= m:
return sum(seq)
res = sum(seq)
for cursor in range(m, n):
for si in range(n-cursor+1):
cur = sum(seq[si:si+cursor])
# print(cursor, si, seq[si:si + cursor], cur)
if cur < res:
res = cur
return res
if __name__ == '__main__':
n, m = list(map(int, input().strip().split()))
seq = list(map(int, input().strip().split()))
res = simple_game(seq, n, m)
print(res)
'''
5 3
1 2 3 4 5
5 3
-2 1 -1 -1 -1
'''
(最近更新:2019年09月19日)