Codeforces Testing Round #16 C.Skier
2024-08-30 18:41:09
题意: 一个人在雪地上滑雪,每次可以向上下左右四个方向移动一个单位,如果这条路径没有被访问过,则需要5秒的时间,如果被访问过,则需要1秒(注意:判断的是两点之间的距离,不是单纯的点).给你他的行动轨迹,求消耗的时间.
题解:我们用两个pair来维护边,用map来对边进行标记,每次更新map记得双向更新即可(e.g:(1,2)和(2,1)两个方向都要标记).
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <stack>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <unordered_set>
#include <unordered_map>
#define ll long long
#define fi first
#define se second
#define pb push_back
#define me memset
const int N = 1e6 + 10;
const int mod = 1e9 + 7;
using namespace std;
typedef pair<int,int> PII;
typedef pair<long,long> PLL;
typedef pair<PII,PII> PP; int t;
string s;
int cnt;
PII o,p;
PP S1,S2;
map<PP,bool> mp; int main() {
ios::sync_with_stdio(false);
cin>>t;
while(t--){
p=o={0,0};
cnt=0;
cin>>s;
mp.clear();
for(char c:s){
if(c=='N') p.se++;
else if(c=='S') p.se--;
else if(c=='W') p.fi--;
else if(c=='E') p.fi++;
S1={o,p};
S2={p,o};
if(mp[S1]) cnt++;
else{
cnt+=5;
mp[S1]=mp[S2]=true;
}
o=p;
}
printf("%d\n",cnt);
}
return 0;
}
最新文章
- &ldquo;会&rdquo;和 ";好&rdquo;纯粹是两个概念
- C#正则表达式匹配字符串
- 使用Vs2012开发Metro时在另一台win8平板上调试的步骤
- Memcached Java Client API详解
- Android ActionBar与ViewPager合用
- BZOJ3105: [cqoi2013]新Nim游戏
- iwpriv工具通过ioctl动态获取相应无线网卡驱动的private_args所有扩展参数
- javascript笔记——正则表达式学习笔记
- SQL Server查询所有的表名/空间占用量/行数
- About Interface
- Xcode4.4中,代码无法高亮、无法自动补全
- Eclipse 实现关键字自动补全功能 (转)
- 创建Sdcard
- 如何提升 CSS 选择器性能
- ignite通过注解配置查询
- @Resource @Autowired 区别
- JDK自带的Timer类
- [c/c++] programming之路(26)、结构体
- 2018-2019-2 20165205《网络对抗技术》Exp4 恶意代码分析
- PHPNow升级PHP版本
热门文章
- pyi文件是干嘛的?(一文读懂Python的存根文件和类型检查)
- 【Linux】snmp在message中报错: /etc/snmp/snmpd.conf: line 311: Error: ERROR: This output format has been de
- SSTI
- fsutil比较有用的几个命令
- Java运算符及包机制
- python中json模块的使用
- 手把手做一个基于vue-cli的组件库(上篇)
- nothreading use single threaded
- 作为一款内存数据库,为什么断电后Redis数据不会丢失
- P5858 Golden Swold