设为首页 加入收藏

TOP

HDU 4941 Magical Forest(离散化)
2015-07-20 17:55:56 】 浏览:8325
Tags:HDU 4941 Magical Forest 离散

HDU 4941 Magical Forest

题目链接

题意:给定一些点,点有值,现在3种操作交换行,列,询问某个点值

思路:这是签到题,坐标系很大,所以把坐标离散化储存,每次交换的时候只要把相应的行列坐标交换即可,查询就在交换过的上面查就可以了

代码:

#include 
  
   
#include 
   
     #include 
    
      #include 
      using namespace std; #define MP(a,b) make_pair(a,b) typedef pair
      
        pii; int t, n, m, k, xn, yn; map
       
         val; map
        
          X; map
         
           Y; void add(map
          
            &X, int x, int &xn) { if (X.count(x)) return; X[x] = xn++; } int main() { int cas = 0; scanf("%d", &t); while (t--) { val.clear(); X.clear(); Y.clear(); xn = yn = 0; scanf("%d%d%d", &n, &m, &k); int x, y, v; while (k--) { scanf("%d%d%d", &x, &y, &v); add(X, x, xn); add(Y, y, yn); val[MP(X[x],Y[y])] = v; } scanf("%d", &k); int q, a, b; printf("Case #%d:\n", ++cas); while (k--) { scanf("%d%d%d", &q, &a, &b); if (q == 1) { add(X, a, xn); add(X, b, xn); swap(X[a], X[b]); } else if (q == 2) { add(Y, a, yn); add(Y, b, yn); swap(Y[a], Y[b]); } else { if (val.count(MP(X[a], Y[b]))) printf("%d\n", val[MP(X[a],Y[b])]); else printf("0\n"); } } } return 0; }
          
         
        
       
      
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇POJ 1856 Sea Battle(DFS) 下一篇POJ 2738 Two Ends(记忆化)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目