[思维] aw3779. 相等的和(思维+构造+题意理解+aw周赛009_2)
Posted Ypuyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[思维] aw3779. 相等的和(思维+构造+题意理解+aw周赛009_2)相关的知识,希望对你有一定的参考价值。
1. 题目来源
链接:3779. 相等的和
2. 题目解析
读题,理解题意。
任意两序列,任减一个值,保证两序列其余总和一致。
那么可以枚举每个序列中的每个元素被删减后,其剩余元素和是多少,用哈希表维护即可。 若剩余元素和相同,并且是两个不同序列的话,即找到一个答案,返回即可。
本题关键还是思路,要想到枚举每个元素删减的结果,并用哈希表维护剩余的元素和。
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
#define x first
#define y second
const int N = 2e5+5;
int n;
int w[N];
int main() {
cin >> n;
unordered_map<int, PII> mp;
for (int i = 1; i <= n; i ++ ) {
int len; cin >> len;
int sum = 0;
for (int j = 1; j <= len; j ++ ) cin >> w[j], sum += w[j];
for (int j = 1; j <= len; j ++ ) {
int s = sum - w[j];
if (mp.count(s) && mp[s].x != i) {
printf("YES\\n%d %d\\n%d %d\\n", mp[s].x, mp[s].y, i, j);
return 0;
}
mp[sum - w[j]] = {i, j};
}
}
puts("NO");
return 0;
}
以上是关于[思维] aw3779. 相等的和(思维+构造+题意理解+aw周赛009_2)的主要内容,如果未能解决你的问题,请参考以下文章
[dfs] aw167. 木棒(dfs剪枝与优化+分类讨论+思维+好题)
[思维] aw3577. 选择数字(思维+脑筋急转弯+aw周赛009_1)