Magical Forest

Time Limit: 24000/12000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 134    Accepted Submission(s): 69

Problem Description
   There is a forest can be seen as N * M grid. In this forest, there is some magical fruits, These fruits can provide a lot of energy, Each fruit has its location(Xi, Yi) and the energy can be provided Ci.
   However, the forest will make the following change sometimes:       1. Two rows of forest exchange.       2. Two columns of forest exchange.    Fortunately, two rows(columns) can exchange only if both of them contain fruits or none of them contain fruits.
   Your superior attach importance to these magical fruit, he needs to know this forest information at any time, and you as his best programmer, you need to write a program in order to ask his answers quick every time.
 
Input
   The input consists of multiple test cases.
   The first line has one integer W. Indicates the case number.(1<=W<=5)
   For each case, the first line has three integers N, M, K. Indicates that the forest can be seen as maps N rows, M columns, there are K fruits on the map.(1<=N, M<=2*10^9, 0<=K<=10^5)
   The next K lines, each line has three integers X, Y, C, indicates that there is a fruit with C energy in X row, Y column. (0<=X<=N-1, 0<=Y<=M-1, 1<=C<=1000)
   The next line has one integer T. (0<=T<=10^5)    The next T lines, each line has three integers Q, A, B.    If Q = 1 indicates that this is a map of the row switching operation, the A row and B row exchange.    If Q = 2 indicates that this is a map of the column switching operation, the A column and B column exchange.    If Q = 3 means that it is time to ask your boss for the map, asked about the situation in (A, B).    (Ensure that all given A, B are legal. )
 
Output
   For each case, you should output "Case #C:" first, where C indicates the case number and counts from 1.
   In each case, for every time the boss asked, output an integer X, if asked point have fruit, then the output is the energy of the fruit, otherwise the output is 0.
 
Sample Input
1
3 3 2
1 1 1
2 2 2
5
3 1 1
1 1 2
2 1 2
3 1 1
3 2 2
 
Sample Output
Case #1:
1
2
1

Hint

No two fruits at the same location.

 
Author
UESTC
 
Source
 
Recommend
We have carefully selected several similar problems for you:  4944 4943 4942 4941 4940 
 
 
思路:stl。。。
 #include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<map>
//#include<pair> #define N 1505
#define M 105
#define mod 1000000007
#define mod2 100000000
#define ll long long
#define maxi(a,b) (a)>(b)? (a) : (b)
#define mini(a,b) (a)<(b)? (a) : (b) using namespace std; map<pair<int,int>,int>v;
map<int,int>X,Y;
int n,m,k;
int q,a,b;
int x,y,c;
int tt;
int T; int main()
{
// freopen("data.in","r",stdin);
scanf("%d",&T);
for(int cnt=;cnt<=T;cnt++)
//while(T--)
//while(scanf("%d%d",&n,&m)!=EOF)
{
//
printf("Case #%d:\n",cnt);
v.clear();X.clear();Y.clear();
scanf("%d%d%d",&n,&m,&k);
while(k--){
scanf("%d%d%d",&x,&y,&c);
v[make_pair(x,y)]=c;
// printf(" %d %d %d\n",x,y,c);
X[x]=x;
Y[y]=y;
// printf(" %d:%d %d:%d\n",x,X[x],y,Y[y]);
}
scanf("%d",&tt);
while(tt--)
{
scanf("%d%d%d",&q,&a,&b);
if(q==){
swap(X[a],X[b]);
//printf(" %d:%d %d:%d\n",a,X[a],b,X[b]);
}
else if(q==){
swap(Y[a],Y[b]);
// printf(" %d:%d %d:%d\n",a,Y[a],b,Y[b]);
}
else{
printf("%d\n",v[make_pair(X[a],Y[b])]);
} } } return ;
}

最新文章

  1. Thinking in BigData 系列
  2. [WebServer] Tomcat 配置访问限制:访问白名单和访问黑名单
  3. ThinkPHP 3.2.3 文件上传时间目录问题
  4. Oracle 11g 服务器安装图解
  5. Linux下搭建nginx php环境
  6. android ListView内数据的动态添加与删除
  7. 在外国网站上看到一个用artoolKit做的demo,学习了用gcd创建单列
  8. hdu 4715 Difference Between Primes (打表 枚举)
  9. Handlebars模板引擎之上手
  10. 【PHP版】火星坐标系 (GCJ-02) 与百度坐标系 (BD-09ll)转换算法
  11. 记录1-更换mac pro内存,硬盘及恢复系统
  12. 使用MXNet的NDArray来处理数据
  13. SpringBoot(4) SpringBoot热部署
  14. &lt;context:annotation-config/&gt;,&lt;mvc:annotation-driven/&gt;和&lt;context:component-scan&gt;之间的关系
  15. Bellman-Ford 最短路径算法
  16. 【转】Android项目使用Ant打包,生成build.xml
  17. 关注被关注表设计-UserFollowMapping
  18. charles工具过滤腾讯视频播放器广告
  19. iOS UI-静态单元格与动态单元格
  20. SimpleCalendar日历插件改版

热门文章

  1. MYSQL导入数据:Table XXX doesn&#39;t exist的解决
  2. java的一些相关介绍(2013-10-07-163 写的日志迁移
  3. Python学习笔记:re模块(正则表达式)
  4. Linux中 find 常见用法示例
  5. SpringMVC 页面传递参数到controller的五种方式
  6. 大数据学习——scala集合练习
  7. TensorFlow batch normalize的使用
  8. LiveScript 流程控制、循环以及列表推导式
  9. TensorFlow笔记——
  10. Vijos1512 SuperBrother打鼹鼠