結果
問題 | No.1199 お菓子配り-2 |
ユーザー |
|
提出日時 | 2021-10-10 20:55:19 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 399 ms / 1,000 ms |
コード長 | 1,924 bytes |
コンパイル時間 | 324 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 51,840 KB |
最終ジャッジ日時 | 2024-09-14 16:40:50 |
合計ジャッジ時間 | 19,361 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge6 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 45 |
ソースコード
from sys import setrecursionlimit, stdinfrom collections import defaultdict, dequefrom itertools import permutations, combinations, productfrom functools import lru_cachefrom random import sample, choice, randint, randomfrom heapq import heappush, heappopfrom math import factorial, gcd, expfrom copy import copy, deepcopyfrom time import timesetrecursionlimit(500000)readline = stdin.readline# @lru_cache(maxsize=None)INF = 10 ** 18MOD = 1000000007MOD2 = 998244353DYDX = [(-1, 0), (1, 0), (0, -1), (0, 1)]def I(): return int(readline())def S(): return readline()[:-1]def LI(): return list(map(int, readline().split()))def SPI(): return map(int, readline().split())def SPII(): return map(lambda x: int(x)-1, readline().split())def FIE(x): return [readline()[:-1] for _ in [0] * x]def NODE(x): return [[] for _ in [0] * x]def ranges(*args): return [(i, j) for i in range(args[0]) for j in range(args[-1])]def nynx(y, x, ly = INF, lx = INF): return [(y+dy, x+dx) for dy, dx in DYDX if 0 <= y+dy < ly and 0 <= x+dx < lx]def imax(A, idx=-1, m=-(1<<18)):for i, a in enumerate(A): m, idx = [[m, idx], [a, i]][m < a]return idxdef imin(A, idx=-1, m=1<<18):for i, a in enumerate(A): m, idx = [[m, idx], [a, i]][m > a]return idxdef cmin(dp, i, x):if x < dp[i]: dp[i] = xdef cmax(dp, i, x):if x > dp[i]: dp[i] = xdef gen(x, *args):ret = [x] * args[-1]for e in args[:-1][::-1]: ret = [deepcopy(ret) for _ in [0] * e]return retdef puts(E):for e in E: print(e)def pprint(E):print()puts(E)####################################################################N, M = SPI()A = [LI() for _ in range(N)]dp = gen(-INF, N+1, 2)dp[0][0] = 0for i, a in enumerate(A):s = sum(A[i])# not takedp[i+1][0] = dp[i][0]dp[i+1][1] = dp[i][1]# takecmax(dp[i+1], 1, dp[i][0]+s)cmax(dp[i+1], 0, dp[i][1]-s)print(max(dp[N]))