酷代码 AI
菜单
服务商

给定一个长度为 n 的整数序列 a 1 ,a 2 ,…,a n 。 有 q 次询问,其中第 j (1≤j≤q) 次询问将会给出 L j ,R j (1≤L j ≤R j ≤n)。定义区间 [l,r] (1≤l≤r≤n) 是极好的,当且仅当区间 [l,r] 的长度在 [L j ,R j ] 内,即 L j ≤r−l+1≤R j 。定义区间 [l,r] (1≤l≤r≤n) 的权值为 ∑ i=l r a i 。对于所有 i=1,2,…,n,求出所有包含 i 的极好区间的最大权值,即 max 1≤l≤i≤r≤n {∑ i=l r a i ∣L j ≤r−l+1≤R j }。 输入 输入的第一行包含一个正整数 n,表示序列长度。 输入的第二行包含 n 个整数 a 1 ,a 2 ,…,a n 。 输入的第三行包含一个正整数 q,表示询问次数。 输入的第 j+3 (1≤j≤q) 行包含两个正整数 L j ,R j ,表示第 j 次询问。 输出 对于每次询问,设包含 i (1≤i≤n) 的极好区间

```python n = int(input()) a = list(map(int, input().split())) # 前缀和数组 prefix_sum = [0] * (n + 1) for i in range(1, n + 1): prefix_sum[i] = prefix_sum[i - 1] + a[i - 1] q = int(input()) for _ in range(q): L, R = map(int, input().split()) ans = 0 for i in range(1, n + 1): k = float('-inf') for l in range(1, i + 1): for r in range(i, n + 1): length = r - l + 1 if L <= length <= R: value = prefix_sum[r] - prefix_sum[l - 1] k = max(k, value) ans ^= (i * k) % (1 << 64) print(ans) ``` [2025-12-10 22:14:58 | AI问答 | 224点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多