原题链接:Chef and Digit Jumps
题意:原题中有链接。
题解:一道很明显的bfs题,就是跳就可以了,当然,跳的时候可以加一些优化,具体看代码

#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;
#define Maxn 100000
char s[Maxn+5];
int n;
int a[Maxn+5];
queue<int> q;
vector<int> x[10];
bool in[Maxn+5];
bool vis[10];
void bfs(){q.push(1);a[1]=0;in[1]=1;int now;while(!q.empty()){now=q.front();if(now==n){break;}in[now]=0;q.pop();if(now-1>0&&a[now-1]>a[now]+1){a[now-1]=a[now]+1;if(!in[now-1]){q.push(now-1);in[now-1]=1;}}if(now+1<=n&&a[now+1]>a[now]+1){a[now+1]=a[now]+1;if(!in[now+1]){q.push(now+1);in[now+1]=1;}}if(vis[s[now]-'0']){continue;}//每一个数只要跳一次即可,后面来的肯定不会更优vis[s[now]-'0']=1;for(int i=0;i<(int)x[s[now]-'0'].size();i++){if(a[x[s[now]-'0'][i]]>a[now]+1){a[x[s[now]-'0'][i]]=a[now]+1;if(!in[x[s[now]-'0'][i]]){q.push(x[s[now]-'0'][i]);in[x[s[now]-'0'][i]]=1;}}}}
}
int main(){memset(a,0x3f,sizeof a);scanf("%s",s+1);while(s[++n]!='\0'){x[s[n]-'0'].push_back(n);}n--;bfs();printf("%d\n",a[n]);return 0;
}

转载于:https://www.cnblogs.com/withhope/p/11141279.html

CodeChef Chef and Digit Jumps 题解相关推荐

  1. UVa 1225 Digit Counting 题解

    英文 Description Trung is bored with his mathematics homeworks. He takes a piece of chalk and starts w ...

  2. Codechef Chef Cuts Tree

    该思博的时候就思博到底,套路的时候不能再套路的一道题 首先我们将联通块的大小平方和进行转化,发现它就等价于连通点对数,而这个可以转化为连接两点的边数(距离)和 所以我们考虑第\(i\)天时,一个点对\ ...

  3. CodeChef Chef and Churu [分块]

    题意: 单点修改$a$ 询问$a$的区间和$f$的区间和 原来普通计算机是这道题改编的吧... 对$f$分块,预处理$c[i][j]$为块i中$a_j$出现几次,$O(NH(N))$,只要每个块差分加 ...

  4. Code Chef December Challenge 2018题解

    传送门 \(MAXEP\) 二分,不过二分的时候要注意把\(mid\)设成\(\left\lfloor{9l+r\over 10}\right\rfloor\),这样往右的次数不会超过\(6\)次 / ...

  5. Code Chef May Challenge 2019题解

    传送门 \(REDONE\) 贡献可以拆成\(X(Y+1)+Y\),那么一个数\(x\)的贡献对最终答案的贡献就是\(x(a_1+1)(a_2+1)...\),那么最终答案肯定是\(\sum\limi ...

  6. Codechef June Challenge 2020 简要题解

    这次题目比较简单. The Tom and Jerry Game! 略 Operations on a Tuple 略 The Delicious Cake 略 Convenient Airports ...

  7. UVa 1586 Molar mass 分子量 题解

    英文 Description An organic compound is any member of a large class of chemical compounds whose molecu ...

  8. Fast Fourier Transform

    写在前面的.. 感觉自己是应该学点新东西了.. 所以就挖个大坑,去学FFT了.. FFT是个啥? 坑已补上.. 推荐去看黑书<算法导论>,讲的很详细 例题选讲 1.UOJ #34. 多项式 ...

  9. linux ssh端口是什么意思,SSH是什么?Linux如何修改SSH端口号?

    数字对象NSNumber //将int类型转化成对象 ; NSNumber *numberString = [NSNumber numberWithInt:number]; //对象是可以放入数组的 ...

最新文章

  1. 智能连接:5G、AI和IoT的组合如何改变美洲
  2. 利用 Vmware 安装 Linux 虚拟机
  3. 香港虚拟主机怎么转服务器,香港虚拟主机好慢怎么办
  4. MySQL监控系统Lepus的搭建
  5. unity3d 不规则外发光描边_Shader案例之内发光和边缘泛光效果
  6. 【原】常见的模块,你语义化了没
  7. 【Java从0到架构师】Linux 基础知识、常用命令
  8. 神经网络训练双螺旋曲线模型
  9. 【考研英语语法】一般过去式练习题
  10. OSChina 周三乱弹 ——怎么样防止隔壁老王
  11. 0w1_CTF_Writeup
  12. pandas批量处理体育成绩
  13. pfamscan 的使用_使用 HMMER 进行 PFAM 注释
  14. CENTOS: 安装memSQL
  15. 零基础python机器学习笔记--代码实战第二天数据分析
  16. signature=501807407682dd47ffe7345fc7b18d2e,Signature-Free Intrusion Detection
  17. JavaScript伪数组和数组
  18. 高精地图编辑生成 opendrive OpenSCENARIO
  19. 人工智能的可持续发展的“秘密”
  20. vue.js实现用户评论、登录、注册、及修改用户部分信息功能代码。

热门文章

  1. 深度理解特斯拉自动驾驶解决方案 1:HydraNet
  2. 转:听话,是一个员工最没用的品质!
  3. 新政问答|个税又出新消息了?十问十答助你解析
  4. 【JVM】十五、垃圾回收相关算法
  5. php网站分工,如何网页设计分工
  6. 数据库连接池连接超时报错
  7. 修改 Windows 系统用户文件夹名 以解决兼容性问题
  8. [摄影]感光度(ISO)
  9. 【UOJ170】Picks loves segment tree VIII
  10. UV/PV/IP之间的联系和区别