【例题 4-5 uva 512】Spreadsheet Tracking
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
每个操作对与一个点来说变化是固定的。
因此可以不用对整个数组进行操作。
对于每个询问,遍历所有的操作。对输入的(x,y)进行相应的变换就好了。
数据之间有空行。
【代码】
/*
ope=0 EX操作 交换a[x1][y1],a[x2][y2]
ope=1 DR操作 删除v中的行(无序)
ope=2 IR操作 在v中的位置插入空行(无顺序)
ope=3 DC操作 删除v中的列(无序)
ope=4 IC操作 插入v中的列(无序)
*/
#include <bits/stdc++.h>
using namespace std;
int r,c;
int n;
struct abc{
int ope;
vector<int> v;
};
abc temp;
vector<abc> a;
void input_mul(int ope){
temp.ope = ope;
temp.v.clear();
int cnt;cin >> cnt;
for (int j = 0;j < cnt;j++){
int x;
cin >> x;
temp.v.push_back(x);
}
a.push_back(temp);
}
int main()
{
//freopen("/home/ccy/rush.txt","r",stdin);
ios::sync_with_stdio(0),cin.tie(0);
int kase = 0;
while (cin >> r >> c){
if (r==0 && c==0) break;
if (kase>0) cout<<endl;
cout<<"Spreadsheet #"<<++kase<<endl;
a.clear();
cin >> n;
for (int i = 0;i < n;i++){
string ts;
cin >> ts;
if (ts=="EX"){
temp.ope = 0;
temp.v.resize(4);
for (int j = 0;j < 4;j++) cin >> temp.v[j];
a.push_back(temp);
}
if (ts=="DR") input_mul(1);
if (ts=="IR") input_mul(2);
if (ts=="DC") input_mul(3);
if (ts=="IC") input_mul(4);
}
int q;
cin >> q;
while (q--){
int x,y,tx,ty;
cin >> x >> y;
tx = x,ty = y;
bool ok = 1;
for (int i = 0;i < (int) a.size();i++){
if (a[i].ope==0){
int x1,y1,x2,y2;
x1 = a[i].v[0],y1 = a[i].v[1];
x2 = a[i].v[2],y2 = a[i].v[3];
if (x1==x && y1 == y){
x = x2;y = y2;
}else
if (x2==x && y2==y){
x = x1;y = y1;
}
}
if (a[i].ope==1){
int subx = 0;
for (int rr:a[i].v){
if (rr<x) subx++;else if (rr==x) ok = 0;
}
x-=subx;
}
if (a[i].ope==2){
int addx = 0;
for (int rr:a[i].v){
if (rr<=x) addx++;
}
x+=addx;
}
if (a[i].ope==3){
int suby = 0;
for (int cc:a[i].v){
if (cc<y) suby++;else if (cc==y) ok = 0;
}
y-=suby;
}
if (a[i].ope==4){
int addy = 0;
for (int cc:a[i].v){
if (cc<=y) addy++;
}
y+=addy;
}
}
cout<<"Cell data in ("<<tx<<","<<ty<<") ";
if (ok==0){
cout<<"GONE"<<endl;
}else{
cout<<"moved to ("<<x<<","<<y<<")"<<endl;
}
}
}
return 0;
}
【例题 4-5 uva 512】Spreadsheet Tracking的更多相关文章
- Uva - 512 - Spreadsheet Tracking
Data in spreadsheets are stored in cells, which are organized in rows (r) and columns (c). Some oper ...
- Spreadsheet Tracking
Spreadsheet Tracking Data in spreadsheets are stored in cells, which are organized in rows (r) and ...
- uva 512
1. 问题 不知道怎么存储操作 看代码注释,else if等 2. 代码 #include <iostream> #include <stdio.h> #include < ...
- 踪电子表格中的单元格(Spreadsheet Tracking, ACM/ICPC World Finals 1997, UVa512)
有一个r行c列(1≤r,c≤50)的电子表格,行从上到下编号为1-r,列从左到右编号为1 -c.如图4-2(a)所示,如果先删除第1.5行,然后删除第3, 6, 7, 9列,结果如图4-2(b) 所示 ...
- UVA 215 Spreadsheet Calculator (模拟)
模拟题.每个单元格有表达式就dfs,如果有环那么就不能解析,可能会重复访问到不能解析的单元格,丢set里或者数组判下重复. 这种题首先框架要对,变量名不要取的太乱,细节比较多,知道的库函数越多越容易写 ...
- 思维水题:UVa512-Spreadsheet Tracking
Spreadsheet Tracking Data in spreadsheets are stored in cells, which are organized in rows (r) and c ...
- D5 LCA 最近公共祖先
第一题: POJ 1330 Nearest Common Ancestors POJ 1330 这个题可不是以1为根节点,不看题就会一直wa呀: 加一个找根节点的措施: #include<alg ...
- 算法笔记--斜率优化dp
斜率优化是单调队列优化的推广 用单调队列维护递增的斜率 参考:https://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html 以例1举 ...
- 回文树&后缀自动机&后缀数组
KMP,扩展KMP和Manacher就不写了,感觉没多大意思. 之前感觉后缀自动机简直可以解决一切,所以不怎么写后缀数组. 马拉车主要是通过对称中心解决问题,有的时候要通过回文串的边界解决问题 ...
随机推荐
- 飘逸的python - 极简的二叉树前中后序通杀函数
对于任一结点.能够按某种次序运行三个操作: 訪问结点本身(N) 遍历该结点的左子树(L) 遍历该结点的右子树(R) 用来表示顺序,即,前序NLR/中序LNR/后序LRN. 以下我们用namedtupl ...
- 检测含有挖矿脚本的WiFi热点——果然是天下没有免费的午餐
见:http://www.freebuf.com/articles/web/161010.html 本质上是在开放wifi热点,自己搭建挖掘的网页,让接入的人访问该网页. 802.11无线协议本身特点 ...
- 洛谷 P3953 [ NOIP 2017 ] 逛公园 —— 最短路DP
题目:https://www.luogu.org/problemnew/show/P3953 主要是看题解...还是觉得好难想啊... dfs DP,剩余容量的损耗是边权减去两点最短路差值...表示对 ...
- element快速开发建站的动态UI------优
网站快速成型工具 只为这样的你: Element,一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的组件库,提供了配套设计资源,帮助你的网站快速成型 http://element.elem ...
- 0423-mysql查询语句大全
建表.数据插入代码: #新建学生表 drop table if exists student; create table student( sno ) not null primary key com ...
- C/C++中的位运算符
--------开始-------- 我自己都记不住这是第几次把这几个位运算符搞混了,刚好在刚用过来把这几个位运算符记下来,俗话说的好好记性不如个烂笔头. 运算符: 与 或 ...
- Django day15 (一) cbv装饰器 , 中间件
一: 装饰器 二: 中间件
- 使用JQuery制作幻灯片(轮播图)
1.首先看一下目录结构 images文件夹放所需要播放的图片. js文件夹放jquery库和main.js 2.html代码: <!DOCTYPE html> <html lang= ...
- 使用Attiny 85开发板制作BadUSB
什么是BadUSB?请查看:http://www.baike.com/wiki/BadUSB 或者看看腾讯这个视频!https://v.qq.com/x/page/l01425u2igw.html ...
- 7.union
联合结果集union 简单的结果集联合: select number,name,age from emp union select cardnumber,name,age from emp2 基本的原 ...