2014多校7最水的题

  Magical Forest

Magical Forest

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

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 

题意:给出矩阵的长、宽,各个水果的能量、在矩阵中的位置,接下来有t个操作。操作有3种,一种是交换某两列,一种是交换某两行,一种是输出某坐标的水果的能量。矩阵长宽大得飞起,水果最多10^5个。

题解:STL::map

由于地图大得飞起,肯定不能真的存地图,我们建一个map<pair<int,int> , int>把水果的坐标、能量撸进去。然后还有交换行列操作,可以发现这两个操作是独立的,我们可以建立行和列的序号数组,只交换序号就行。但其实行和列也大得飞起,不能真的每行每列都建序号数组,我们也建两个map来存行和列的序号,用来交换。

水得飞起来,我刚开始还想自己写hash,结果写逗乐,发现时限大得飞起,直接用map就过了…

 //#pragma comment(linker, "/STACK:102400000,102400000")
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
#include<stack>
#include<queue>
using namespace std;
#define ll long long
#define usint unsigned int
#define mz(array) memset(array, 0, sizeof(array))
#define minf(array) memset(array, 0x3f, sizeof(array))
#define REP(i,n) for(i=0;i<(n);i++)
#define FOR(i,x,n) for(i=(x);i<=(n);i++)
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define WN(x) printf("%d\n",x);
#define RE freopen("D.in","r",stdin)
#define WE freopen("1biao.out","w",stdout) const int MOD=; struct fruit{
int r,c,e;
}; int n,m,k;
map<int,int>r,c;
map<pair<int,int>,int>S; int main(){
int T,cas=;
int q,x,y,i,qn;
fruit t;
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&k);
r.clear();
c.clear();
S.clear();
for(i=;i<k;i++){
scanf("%d%d%d",&t.r,&t.c,&t.e);
S[make_pair(t.r,t.c)]+=t.e;
r[t.r]=t.r;
c[t.c]=t.c;
}
scanf("%d",&qn);
printf("Case #%d:\n",cas++);
while(qn--){
scanf("%d%d%d",&q,&x,&y);
if(q==)swap(r[x],r[y]);
else if(q==)swap(c[x],c[y]);
else{
printf("%d\n",S[make_pair(r[x],c[y])]);
}
}
}
return ;
}

hdu4941 Magical Forest (stl map)的更多相关文章

  1. hdu 4941 Magical Forest (map容器)

    Magical Forest Time Limit: 24000/12000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  2. HDU 4941 Magical Forest(map映射+二分查找)杭电多校训练赛第七场1007

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 解题报告:给你一个n*m的矩阵,矩阵的一些方格中有水果,每个水果有一个能量值,现在有三种操作,第 ...

  3. hdu4941 Magical Forest

    Problem Description There is a forest can be seen as N * M grid. In this forest, there is some magic ...

  4. HDU 4585 Shaolin(STL map)

    Shaolin Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit cid= ...

  5. HDU 2112 HDU Today(STL MAP + Djistra)

    题目链接:HDU Today 立即集训要開始,抓紧时间练练手,最短路的基础题,第一次用STL的map 题目非常水,可是错了N遍.手贱了.本题不优点理的就是把地名转化为数字 #include <i ...

  6. HDU——2723Electronic Document Security(STL map嵌套set做法)

    Electronic Document Security Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  7. 2018 ICPC 徐州网络预赛 Features Track (STL map pair)

    [传送门]https://nanti.jisuanke.com/t/31458 [题目大意]有N个帧,每帧有K个动作特征,每个特征用一个向量表示(x,y).两个特征相同当且仅当他们在不同的帧中出现且向 ...

  8. 51nod 1562 玻璃切割 (STL map+一点点的思考)

    1562 玻璃切割 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 现在有一块玻璃,是长方形的(w 毫米× h 毫米),现在要 ...

  9. HDU 4585 Shaolin (STL map)

    Shaolin Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

随机推荐

  1. codeforces 723B:Text Document Analysis

    Description Modern text editors usually show some information regarding the document being edited. F ...

  2. Scala特性: 隐式转换

    1.隐式转换特征: 1)隐式参数的用法 · 获取可能的预期类型 · 获取预期类型,并且拥有预期类型的行为 · 对信息进行补充说明(一般用函数做隐式参数的比较多) 2)隐式类: 3)隐式method:

  3. WebConfig节点详解

    <!-- Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法. 很适合新手参看,由于Web.config在使用很灵活,可 ...

  4. java-HashMap方法讲解

    前言:Java8之后新增挺多新东西,在网上找了些相关资料,关于HashMap在自己被血虐之后痛定思痛决定整理一下相关知识方便自己看.图和有些内容参考的这个文章:http://www.importnew ...

  5. 优化DP的奇淫技巧

    DP是搞OI不可不学的算法.一些丧心病狂的出题人不满足于裸的DP,一定要加上优化才能A掉. 故下面记录一些优化DP的奇淫技巧. OJ 1326 裸的状态方程很好推. f[i]=max(f[j]+sum ...

  6. >>> FilterDispatcher <<< is deprecated! Please use the new filters!

    在struts2.3.20下,web.xml中使用 会出现*********************************************************************** ...

  7. JavaWeb---总结(五)Http协议

    一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的 ...

  8. cobbler安装、部署、测试

    cobbler功能介绍 官网:http://cobbler.github.io 安装 yum install -y httpd tftp dhcp cobbler cobbler-web pykick ...

  9. JQuery 和JavaScript的区别

    Google提供的jquery包: http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js jQuery官方的jquery包: ...

  10. CentOS6.5 安装Sphinx 配置MySQL数据源

      前提安装完mysql,并创建测试表和数据 DROP TABLE IF EXISTS `documents`; CREATE TABLE IF NOT EXISTS `documents` ( `i ...