第三题void solve(){ int N; cin >> N; vector<int> s(N); for (auto &;e : s) cin >> e; vector<int> dp(7, -4000); for (int i = 0; i < N; i++) { int re = s[i] < 0 ? 7 + s[i] % 7 : s[i] % 7; vector<int> udp = dp; for (int j = 0; j < 7; j++) { int cur = (j + s[i]) >= 0 ? (j + s[i]) % 7 : 7 + (j + s[i]) % 7; if (dp[j] == -4000) continue; udp[cur] = max(udp[cur], dp[j] + s[i]); } udp[re] = max(udp[re], s[i]); dp = move(udp); } cout << dp[0] << endl; }
3 2
牛客网
牛客企业服务