第四题AK代码 struct Node { vector<int> pos; }; int main() { int n; cin >> n; vector<int> res(n); unordered_map<int, Node*> map; //以值为键 for (int i = 0; i < n; ++i) { cin >> res[i]; if (map.find(res[i]) == map.end()) { //没找到,需要新建 Node* node = new Node; node->pos.push_back(i); map[res[i]] = node; } else { Node* node = map[res[i]]; node->pos.push_back(i); } } long long int count = 0; for (int j = 1; j < n; ++j) { unordered_map<int, long long int> jmap; //sum的值对应的数目 for (int k = j + 1; k < n; ++k) { int sum = 3 * res[j] - res[k]; if (map.find(sum) != map.end()) { if (jmap.find(sum) == jmap.end()) { Node* node = map[sum]; int length = node->pos.size(); long long int tmp = 0; for (int p = 0; p < length; ++p) { if (node->pos[p] < j) { ++tmp;; } else { break; } } jmap[sum] = tmp; count += tmp; } else { count += jmap[sum]; } } } } cout << count; }
点赞 评论

相关推荐

04-19 11:59
门头沟学院 Java
卷不动辣24314:挂,看来不该投这个部门的
点赞 评论 收藏
分享
谁知道呢_:要掉小珍珠了,库库学三年,这个结果
点赞 评论 收藏
分享

牛客热帖

更多
牛客网
牛客企业服务