// 离散化点 思路应该是对的 吧 但没时间去检查编译上的错误
#include <bits/stdc++.h>
using namespace std;
const int M =;
#define ri register int
int n,sum;
struct dian{
int x,y,id,bj,zlin;
}a[M],yuan[M],arr[M][M];
int m,X[M],Y[M],m2,vis[M][M];
void dfs(int a,int b,int zl,int xx,int yy) // 1 up 2 xia ,3 zuo ,4 rou
{
if(arr[a][b].zlin)
{
zl=arr[a][b].zlin;
sum+=abs(arr[a][b].x-xx+);
sum+=abs(arr[a][b].y-yy+);
if(arr[a][b].id==) return;
xx=arr[a][b].x,yy=arr[a][b].y;
if(zl==) dfs(a,b+,,xx,yy);
if(zl==) dfs(a,b-,,xx,yy);
if(zl==) dfs(a-,b,,xx,yy);
if(zl==) dfs(a+,b,,xx,yy);
return ;
}if(arr[a][b].id==)
{
sum+=abs(arr[a][b].x-xx+);
sum+=abs(arr[a][b].y-yy+);
return ;
}
arr[a][b].bj=;
if(zl==) dfs(a,b+,,xx,yy);
if(zl==) dfs(a,b-,,xx,yy);
if(zl==) dfs(a-,b,,xx,yy);
if(zl==) dfs(a+,b,,xx,yy);
}
void dfs1(int a,int b)
{
if(arr[a][b].id==) return; //
if(a>m||a<) return ;
if(b>m2||b<) return ;
arr[a][b].bj=;
dfs1(a+,b);dfs1(a,b+);
dfs1(a-,b);dfs1(a,b-);
}
int main(){
scanf("%d",&n);
yuan[].x=yuan[].y=a[].x=a[].y=X[]=Y[]=;
a[].id=;yuan[].id=;
for(ri i=;i<=n+;i++)
{ char c[];int b;
scanf("%s%d",c,&b);
if(c[]=='R') a[i].x=a[i-].x+b,a[i].y=a[i-].y,a[i].zlin=;
if(c[]=='L') a[i].x=a[i-].x-b,a[i].y=a[i-].y,a[i].zlin=;
if(c[]=='U') a[i].y=a[i-].y+b,a[i].x=a[i-].x,a[i].zlin=;
if(c[]=='D') a[i].y=a[i-].y-b,a[i].x=a[i-].x,a[i].zlin=;
X[i]=a[i].x;yuan[i].x=a[i].x; yuan[i].id=i;
Y[i]=a[i].y; a[i].id=i;yuan[i].y=a[i].y;
}
sort(X+,X+n++);
m=unique(X+,X+n++)-X-;
for(ri i=;i<=n+;i++)
{
a[i].x=lower_bound(X+,X+m+,a[i].x)-X;
}
sort(Y+,Y+n+);
m2=unique(Y+,Y+n++)-Y-;
for(ri i=;i<=n+;i++)
{
a[i].y=lower_bound(Y+,Y+m2+,a[i].y)-Y;
}
for(ri i=;i<=n+;i++)
{
arr[a[i].x][a[i].y].id=i;
arr[a[i].x][a[i].y].x=yuan[i].x;X[a[i].x]=yuan[i].x;
arr[a[i].x][a[i].y].y=yuan[i].y;Y[a[i].y]=yuan[i].y;
arr[a[i].x][a[i].y].bj=;
}
dfs(a[n+].x,a[n+].y,a[n+].zlin,a[n+].x,a[n+].y);
dfs1(m,m2);
for(ri i=;i<=m;i++)
for(ri j=;j<=m2;j++)
{
if(arr[i][j].bj==)
{
sum+=abs(X[j]-X[j-]);
sum+=abs(X[i]-X[i-]);
}
}
printf("%d\n",sum);
return ;
}

kao shi di er ti(还没有订正)的更多相关文章

  1. kao shi

    1 #include "date.h" #include "utils.h" #include <iostream> using std::cout ...

  2. python文件对象几种操作模式区别——文件操作方法详解

    文件对象的字节模式/b模式(以utf-8编码为例) 读操作 写操作 指针操作 ASCII字节 返回bytes/字节类型的Ascii 写入bytes类型字节 例如:b'This is ascii' 使用 ...

  3. TI推出SimpleLink低能耗蓝牙CC2541

    TI推出SimpleLink低能耗蓝牙CC2541 日前,德州仪器 (TI) 宣布推出 SimpleLink™ 低能耗蓝牙 (Bluetooth®Low Energy) CC2541-Q1, 这是一款 ...

  4. 数据库系统概论——从E-R模型到关系模型

    E-R模型和关系模型都是现实世界抽象的逻辑表示 E-R模型并不被 DBMS直接支持,更适合对现实世界建模 关系模型是 DBMS直接支持的数据模型 基本 E-R图中的元素包括实体集.联系集.属性 椭圆框 ...

  5. 【DSP开发】【计算机视觉】TI 视觉软件开发套件ADAS

    关键字:TI  视觉软件开发套件  ADAS 日前,德州仪器 (TI) 宣布推出其视觉软件开发套件(SDK),从而为开发人员提供了一款灵活的框架.一组丰富齐全的硬件设备驱动程序和一套适用的开发工具,可 ...

  6. 【DSP开发】TI第二代KeyStone SoC诠释德仪的“云”态度

    11月14日,期盼已久的德州仪器基于ARM Cortex-A15的产品终于新鲜出炉.伴随着TIKeyStone II多核 SoC系列产品的发布,结合了ARM Cortex-A15 处理器.C66x D ...

  7. 【DSP开发】解读TI的KeyStone II云技术应用

    最近,德州仪器(TI)公司推出6款最新KeyStone II多核SoC,助力云应用.TI公司多核DSP中国市场开发经理蒋亚坚先生向媒体讲解了这6款KeyStone II新产品的特点与目标应用.     ...

  8. php获取汉字的拼音 拼音首字母

    /***获取汉字的拼音*/function pinyin($s, $isfirst = false) { static $pinyins; $s = trim($s); $len = strlen($ ...

  9. php中文转拼音2

    <?php /** * strtopinyin.php * * @name 汉字字符转拼音 * @author Kudosharry * @version v1.0 * */ class Str ...

随机推荐

  1. Anaconda 包管理与环境管理

    包管理命令 conda命令 安装包 conda install 包名称 卸载包 conda remove 包名称 更新包 conda update 包名称 模糊查询 conda search 包名称 ...

  2. C# monitor keyboard and print pressed key

    using System; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Diagnos ...

  3. vue.config.js添加路径别名

    在组件库中添加配置文件后其它文件需要引用它,此时想到利用路径的别名比较方便,相当于缩写了,请看下面的添加过程: (一)在vue.config.js文件中添加的内容如粗体字体所示: const path ...

  4. formateDate

    function formateDate(fmt, date) { let _this = new Date(date) let o = { "M+": _this.getMont ...

  5. Python函数进阶:闭包、装饰器、生成器、协程

    返回目录 本篇索引 (1)闭包 (2)装饰器 (3)生成器 (4)协程 (1)闭包 闭包(closure)是很多现代编程语言都有的特点,像C++.Java.JavaScript等都实现或部分实现了闭包 ...

  6. [转载]Ubuntu 使用Compiz配置炫酷3D桌面

    原文地址 个人引言: 这个Compiz使用与我的这篇Blog:打摆不顺利?是你没看这篇!相互有联系.这个Compiz是打摆工具之一,可以把打摆窗口调成透明,这样机房监控拍下来的屏幕会是打摆窗口下面的某 ...

  7. 剑指offer-面试题18-删除链表的节点-链表

    /* 题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点. */ /* 思路: 将要删除的节点的下一个节点的value和next复制过来,删除下一个节点. 考虑两种特殊情 ...

  8. lasso-ridge

    线性回归 线性回归很简单,用线性函数拟合数据,用 mean square error (mse) 计算损失(cost),然后用梯度下降法找到一组使 mse 最小的权重. lasso 回归和岭回归(ri ...

  9. 《操作系统真象还原》MBR

    以下是读本书第三章的收获. 如何知道一个源程序的各符号(指令和变量)地址?简单来说,地址就是该符号偏移文件开头的距离,符号的地址是按顺序编排的,所以两个相邻的符号,其地址也是相邻的.对于指令来说,指令 ...

  10. PAT (Advanced Level) Practice 1036 Boys vs Girls (25 分)

    This time you are asked to tell the difference between the lowest grade of all the male students and ...