zoukankan      html  css  js  c++  java
  • poj 2785 4 Values whose Sum is 0

    地址 http://poj.org/problem?id=2785

    解法

    四层遍历肯定不考虑 然后考虑使用map 记录 C和D的各种组合的值

    然后遍历 a+b的值 在搜索map中有无负的相同的绝对值的数

    结果还是TLE了

    由于poj的C++比较旧 没有unordered_map 所以只有考虑二分查找了

    思路还是相同 就是查找map 的代码改成二分查找

     1 #include <iostream>
     2 #include <vector>
     3 #include <algorithm>
     4 #include <map>
     5 
     6 
     7 using namespace std;
     8 
     9 /*
    10 Sample Input
    11 4
    12 1 1 1 1
    13 1 1 1 1
    14 1 1 1 1
    15 2 2 -2 -2
    16 
    17 Sample Output
    18 5
    19 */
    20 
    21 vector<int> VA(5000);
    22 vector<int> VB(5000);
    23 vector<int> VC(5000);
    24 vector<int> VD(5000);
    25 
    26 int n;
    27 
    28 map<long long, vector<int> > CDSum;
    29 
    30 vector<long long> CDS;
    31 
    32 int ret = 0;
    33 
    34 
    35 void solve()
    36 {
    37     //将cd的和预先处理好
    38     for (int i = 0; i < n; i++) {
    39         for (int j = 0; j < n; j++) {
    40             long long sum = VC[i] + VD[j];
    41         /*    CDSum[sum].push_back(i);
    42             CDSum[sum].push_back(j);*/
    43             CDS.push_back(sum);
    44         }
    45     }
    46 
    47     sort(CDS.begin(),CDS.end());
    48 
    49     for (int i = 0; i < n; i++) {
    50         for (int j = 0; j < n; j++) {
    51             long long sum = VA[i] + VB[j];
    52             //map<long long, vector<int> >::iterator it = CDSum.find(-sum);
    53             /*if (it != CDSum.end()) {
    54                 ret += it->second.size() / 2;
    55             }*/
    56             ret += upper_bound(CDS.begin(), CDS.end(), -sum) - lower_bound(CDS.begin(),CDS.end(),-sum);
    57         }
    58     }
    59 
    60 
    61     cout << ret << endl;
    62 }
    63 
    64 int main()
    65 {
    66     cin >> n;
    67 
    68     for (int i = 0; i < n; i++) {
    69         cin >> VA[i] >> VB[i] >> VC[i] >> VD[i];
    70     }
    71 
    72     solve();
    73 
    74     return 0;
    75 }
    View Code
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    HDU 5188 zhx and contest(带限制条件的 01背包)
    Appium IOS 自己主动化測试初探
    微软自拍应用iOS版公布
    小白学开发(iOS)OC_ block数据类型(2015-08-08)
    从王自如和老罗的论战中我貌似懂得了点神马...
    trie树(字典树)
    分析深圳电信的新型HTTP劫持方式
    主要的约瑟夫环问题
    Linux下的led驱动程序,ok6410
    Android Support 包里到底有什么
  • 原文地址:https://www.cnblogs.com/itdef/p/12093053.html
Copyright © 2011-2022 走看看