zoukankan      html  css  js  c++  java
  • hdu 3682 To Be an Dream Architect

    思路参考:http://blog.csdn.net/liuwei_nefu/article/details/6009644

              改用vector实现。

    收获:另一种的hash思想,vector去重。

    最朴素的hash,即三维数组记录是肯定不行的。

    原文的作者思维很巧妙,看懂后非常容易实现。

    /*

    */
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <climits>
    #include <algorithm>
    #include <functional>
    #include <cstdlib>
    #include <queue>
    #include <vector>
    #include <stack>
    #include <cmath>
    #include <map>
    using namespace std;
    vector<int> num;

    int main()
    {
    int nCase;
    int n, m;
    while(scanf("%d", &nCase)!=EOF)
    {
    while(nCase--)
    {
    num.clear();
    int len=0;
    scanf("%d%d", &n, &m);
    getchar();
    while(m--)
    {
    char a, b;
    int val1, val2;
    scanf("%c=%d,%c=%d", &a, &val1, &b, &val2);
    getchar();
    if(a=='X')
    {
    if(b=='Y')
    for(int i=1; i<=n; i++)
    num.push_back(val1*n*n+val2*n+i);
    else
    for(int i=1; i<=n; i++)
    num.push_back(val1*n*n+i*n+val2);
    }
    if(a=='Y')
    {
    if(b=='X')
    for(int i=1; i<=n; i++)
    num.push_back(val2*n*n+val1*n+i);
    else
    for(int i=1; i<=n; i++)
    num.push_back(i*n*n+val1*n+val2);
    }
    if(a=='Z')
    {
    if(b=='X')
    for(int i=1; i<=n; i++)
    num.push_back(val2*n*n+i*n+val1);
    else
    for(int i=1; i<=n; i++)
    num.push_back(i*n*n+val2*n+val1);
    }
    }
    sort(num.begin(), num.end());//sort the vector
    num.erase( unique( num.begin(), num.end() ), num.end());
    printf("%d\n", num.size());
    }
    }
    return 0;
    }



  • 相关阅读:
    爱奇艺笔试题 输出01020304... ...
    ThreadPoolExecutor 中为什么WorkQueue会在corePoolSize满了之后入队
    jvisualvm 的使用
    连续子数组的最大和
    最长连续子序列
    leetcode 需要了解的知识点储备
    java String
    mysql MVCC
    java 批量导出(zip文件)
    java 中接口调用
  • 原文地址:https://www.cnblogs.com/FreeAquar/p/FreeAquar.html
Copyright © 2011-2022 走看看