博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3682 To Be an Dream Architect
阅读量:6615 次
发布时间:2019-06-24

本文共 1272 字,大约阅读时间需要 4 分钟。

思路参考:

          改用vector实现。

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

 

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

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

/* */ #include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std; vector
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; }

 

转载于:https://www.cnblogs.com/FreeAquar/archive/2011/09/15/FreeAquar.html

你可能感兴趣的文章