有 個長度為 的陣列 ,初始內容相同,同時選定一個特殊陣列 。
對於陣列 有以下兩個操作( 且操作不越界):
- 選定 ,,然後 ,, ,;
- 選定 ,,然後 ,, ,;
操作 1 只能在非特殊陣列上使用,操作 2 只能在特殊陣列上使用,每個陣列至少有一次操作。
給定操作後的 個數組,求特殊陣列的編號及其被操作次數。
考慮將陣列 看成差分陣列,令其字首和為 , 操作 1,2 就變成了區間操作,發現操作 2 的減法操作的區間明顯要大一些,由此發現每次操作 2, 便減 。
void solve()
{
int n, m;
std::cin >> n >> m;
std::vector<std::vector<long long>> c(n, std::vector<long long>(m));
std::vector<long long> ss(n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
std::cin >> c[i][j];
}
std::partial_sum(c[i].begin(), c[i].end(), c[i].begin());
ss[i] = std::accumulate(s[i].begin(), s[i].end(), 0ll);
}
int key = std::min_element(ss.begin(), ss.end()) - ss.begin();
std::cout << key + 1 << " " << ss[(key + 1) % n] - ss[key] << std::endl;
}