【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

每个操作对与一个点来说变化是固定的。
因此可以不用对整个数组进行操作。
对于每个询问,遍历所有的操作。对输入的(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的更多相关文章

  1. Uva - 512 - Spreadsheet Tracking

    Data in spreadsheets are stored in cells, which are organized in rows (r) and columns (c). Some oper ...

  2. Spreadsheet Tracking

     Spreadsheet Tracking  Data in spreadsheets are stored in cells, which are organized in rows (r) and ...

  3. uva 512

    1. 问题 不知道怎么存储操作 看代码注释,else if等 2. 代码 #include <iostream> #include <stdio.h> #include < ...

  4. 踪电子表格中的单元格(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) 所示 ...

  5. UVA 215 Spreadsheet Calculator (模拟)

    模拟题.每个单元格有表达式就dfs,如果有环那么就不能解析,可能会重复访问到不能解析的单元格,丢set里或者数组判下重复. 这种题首先框架要对,变量名不要取的太乱,细节比较多,知道的库函数越多越容易写 ...

  6. 思维水题:UVa512-Spreadsheet Tracking

    Spreadsheet Tracking Data in spreadsheets are stored in cells, which are organized in rows (r) and c ...

  7. D5 LCA 最近公共祖先

    第一题: POJ 1330 Nearest Common Ancestors POJ 1330 这个题可不是以1为根节点,不看题就会一直wa呀: 加一个找根节点的措施: #include<alg ...

  8. 算法笔记--斜率优化dp

    斜率优化是单调队列优化的推广 用单调队列维护递增的斜率 参考:https://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html 以例1举 ...

  9. 回文树&后缀自动机&后缀数组

    KMP,扩展KMP和Manacher就不写了,感觉没多大意思.   之前感觉后缀自动机简直可以解决一切,所以不怎么写后缀数组.   马拉车主要是通过对称中心解决问题,有的时候要通过回文串的边界解决问题 ...

随机推荐

  1. mongodb数据库的启动和停止

             数据库的启动和停止是数据库最主要的操作,也是数据库可以提供服务和被连接管理的前提条件.不同的数据库启动和停止的方式有一些差异.但也有同样之处,启动和关闭也必然会和数据库的进程有关 ...

  2. P1052 过河(状态压缩)

    P1052 过河(状态压缩) 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把 ...

  3. MySQL:常用语句

    ylbtech-MySQL:常用语句 1.返回顶部 1. -- ---------------------------- -- Table structure for st_student -- -- ...

  4. Django day01 web应用程序 , http协议

    一:web应用程序1.什么是web应用程序 是一种可以通过web访问的应用程序,最大的好处就是, 只要有浏览器,用户就能很容易访问到应用程序 2. web应用程序的优缺点 缺点: 应用程序强调了浏览器 ...

  5. Python27天 反射 ,isinstance与ssubclass 内置方法

    所学内容 反射 1.hasattr ( 判断一个属性在对象里有没有 ) -------------------- [对象,字符串属性]本质是:# 判断 ' name ' in obj.__dict__ ...

  6. 【寒假集训系列DAY3】

    DAY2的坑之后会补上 DAY3 今天暴力分拿的还是不错的...60+30+25=115,但还是太弱了呀,每题都只会暴力(话说第3题直接输-1给了15分,本以为只会给5分,然后打了半个小时的爆搜... ...

  7. 9 在C#控制台程序(console)中让用户输入

    经过前面那些练习,我们已经熟悉录入一些简单的代码.这些代码可以进行一些简单的运算,在dos窗口打印出一些东西出来.我们现在要开始学习如何把数据从外部输入到我们的程序中. 其实大多数程序的工作是完成下面 ...

  8. .Net Core 学习(二)上篇

    用Visual Studio和ASP.NET Core MVC创建Web API 1.启动Visual Studio.从文件菜单,选择新建>项目.选择ASP.NET Core Web Appli ...

  9. mvc3结合spring.net-依赖注入

    namespace Tuzi.Models.IService { public interface IPersonService { string say(string words); } names ...

  10. spring - quartz - experssion 表达式

    字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN- ...