uva 512
1. 问题
- 不知道怎么存储操作
- 看代码注释,else if等
2. 代码
#include <iostream>
#include <stdio.h>
#include <string.h>
#define LOCAL
#define MAXN 10000
using namespace std;
int r=0,c=0,n=0,num=0;
// 存储操作,将所有操作集成到一个struct中
struct Command
{
char c[5];
int r1,c1,r2,c2;
int a,x[20];
} cmd[MAXN];
int simulate(int *r0,int *c0)
{
for(int i=0; i<n; i++)
{
if(cmd[i].c[0]=='E')
{
if(cmd[i].r1==*r0&&cmd[i].c1==*c0)
{
*r0=cmd[i].r2;
*c0=cmd[i].c2;
}
// 必须用else if 不能用if不然又交换回去
else if(cmd[i].r2==*r0&&cmd[i].c2==*c0)
{
*r0=cmd[i].r1;
*c0=cmd[i].c1;
}
}
else
{
// 在一个操作完成后变动数据,提前变动会出问题
int dr=0,dc=0;
for(int j=0;j<cmd[i].a;j++)
{
int x=cmd[i].x[j];
if(cmd[i].c[0]=='I')
{
if(cmd[i].c[1]=='R'&&x<=*r0)
dr++;
// *r0=*r0+1;
if(cmd[i].c[1]=='C'&&x<=*c0)
dc++;
// *c0=*c0+1;
}
else
{
if(cmd[i].c[1]=='R'&&x==*r0)
return 0;
if(cmd[i].c[1]=='C'&&x==*c0)
return 0;
if(cmd[i].c[1]=='R'&&x<*r0)
dr--;
// *r0=*r0-1;
if(cmd[i].c[1]=='C'&&x<*c0)
dc--;
// *c0=*c0-1;
}
}
// *r0+=dr;
// *c0+=dc;
}
}
return 1;
}
int main()
{
#ifdef LOCAL
freopen("input","r",stdin);
// freopen("output","w",stdout);
#endif // LOCAL
while(cin>>r>>c>>n&&r)
{
for(int i=0; i<n; i++)
{
cin>>cmd[i].c;
if(cmd[i].c[0]=='E')
{
cin>>cmd[i].r1>>cmd[i].c1>>cmd[i].r2>>cmd[i].c2;
}
else
{
cin>>cmd[i].a;
for(int j=0; j<cmd[i].a; j++)
{
cin>>cmd[i].x[j];
}
}
}
if(num>0)
cout<<endl;
cout<<"Spreadsheet #"<<++num<<endl;
int q=0;
cin>>q;
while(q--)
{
int r0,c0;
cin>>r0>>c0;
cout<<"Cell data in ("<<r0<<","<<c0<<") ";
if(!simulate(&r0,&c0))
cout<<"GONE"<<endl;
else
cout<<"moved to ("<<r0<<","<<c0<<")"<<endl;
}
}
return 0;
}
uva 512的更多相关文章
- Uva - 512 - Spreadsheet Tracking
Data in spreadsheets are stored in cells, which are organized in rows (r) and columns (c). Some oper ...
- 【例题 4-5 uva 512】Spreadsheet Tracking
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每个操作对与一个点来说变化是固定的. 因此可以不用对整个数组进行操作. 对于每个询问,遍历所有的操作.对输入的(x,y)进行相应的变 ...
- The Super Powers UVA 11752 分析分析 求无符号长整形以内的数满足至少可以用两种不同的次方来表示。比如64 = 2^6 = 8^2; 一个数的1次方不算数。
/** 题目:The Super Powers UVA 11752 链接:https://vjudge.net/contest/154246#problem/Y 题意:求无符号长整形以内的数满足至少可 ...
- 1Z0-053 争议题目解析512
1Z0-053 争议题目解析512 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 512.Which two statements correctly describe the r ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
随机推荐
- python __nonzero__方法
类的nonzero方法用于将类转换为布尔值.通常在用类进行判断和将类转换成布尔值时调用.比如语句if A: print 'foo'中就会调用A.nonzero()来判断.下面这个程序应该能帮助你理解n ...
- android 自定义progressbar 样式
在res下创建drawable文件夹,新建文件drawable/progressbar_color.xml <layer-list xmlns:android="http://sche ...
- MySQL一些常见查询方式
1.查询端口号命令: show global variables like 'port'; 2.查看版本号: select version(); 3.查看默认安装的MySQL的字符集 show var ...
- 【转】kalman滤波
Kalman Filter是一个高效的递归滤波器,它可以实现从一系列的噪声测量中,估 计动态系统的状态.广泛应用于包含Radar.计算机视觉在内的等工程应用领域,在控制理论和控制系统工程中也是一个非常 ...
- Python 3 mysql 数据类型
Python 3 mysql 数据类型 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/m ...
- Python3 内置函数补充匿名函数
Python3 匿名函数 定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问 def func(x,y,z=1): return x+y+z print(func(1,2,3)) 匿名 ...
- 【Flask】query可用参数
### query可用参数:1. 模型对象.指定查找这个模型中所有的对象.2. 模型中的属性.可以指定只查找某个模型的其中几个属性.3. 聚合函数. * func.count:统计行的数量. * fu ...
- 给GridView删除列添加删除提示
首先设置CommandField,把ShowEditButton.ShowDeleteButton属性都设置为true,也可以只设置ShowDeleteButton属性,那样下面的代码你要修 ...
- 分享知识-快乐自己:FastDFS 图片服务器的搭建
使用一台虚拟机来模拟,只有一个Tracker.一个Storage服务,配置nginx访问图片. 1):安装依赖包 yum -y install zlib zlib-devel pcre pcre-de ...
- 普林斯顿算法(1.3)并查集(union-find算法)——本质就是一个数 下面的子树代表了连在一起的点
转自:https://libhappy.com/2016/03/algs-1.3/ 假设在互联网中有两台计算机需要互相通信,那么该怎么确定它们之间是否已经连接起来还是需要架设新的线路连接这两台计算机. ...