CodeChef Chef and Digit Jumps 题解
原题链接: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 题解相关推荐
- UVa 1225 Digit Counting 题解
英文 Description Trung is bored with his mathematics homeworks. He takes a piece of chalk and starts w ...
- Codechef Chef Cuts Tree
该思博的时候就思博到底,套路的时候不能再套路的一道题 首先我们将联通块的大小平方和进行转化,发现它就等价于连通点对数,而这个可以转化为连接两点的边数(距离)和 所以我们考虑第\(i\)天时,一个点对\ ...
- CodeChef Chef and Churu [分块]
题意: 单点修改$a$ 询问$a$的区间和$f$的区间和 原来普通计算机是这道题改编的吧... 对$f$分块,预处理$c[i][j]$为块i中$a_j$出现几次,$O(NH(N))$,只要每个块差分加 ...
- Code Chef December Challenge 2018题解
传送门 \(MAXEP\) 二分,不过二分的时候要注意把\(mid\)设成\(\left\lfloor{9l+r\over 10}\right\rfloor\),这样往右的次数不会超过\(6\)次 / ...
- Code Chef May Challenge 2019题解
传送门 \(REDONE\) 贡献可以拆成\(X(Y+1)+Y\),那么一个数\(x\)的贡献对最终答案的贡献就是\(x(a_1+1)(a_2+1)...\),那么最终答案肯定是\(\sum\limi ...
- Codechef June Challenge 2020 简要题解
这次题目比较简单. The Tom and Jerry Game! 略 Operations on a Tuple 略 The Delicious Cake 略 Convenient Airports ...
- UVa 1586 Molar mass 分子量 题解
英文 Description An organic compound is any member of a large class of chemical compounds whose molecu ...
- Fast Fourier Transform
写在前面的.. 感觉自己是应该学点新东西了.. 所以就挖个大坑,去学FFT了.. FFT是个啥? 坑已补上.. 推荐去看黑书<算法导论>,讲的很详细 例题选讲 1.UOJ #34. 多项式 ...
- linux ssh端口是什么意思,SSH是什么?Linux如何修改SSH端口号?
数字对象NSNumber //将int类型转化成对象 ; NSNumber *numberString = [NSNumber numberWithInt:number]; //对象是可以放入数组的 ...
最新文章
- 智能连接:5G、AI和IoT的组合如何改变美洲
- 利用 Vmware 安装 Linux 虚拟机
- 香港虚拟主机怎么转服务器,香港虚拟主机好慢怎么办
- MySQL监控系统Lepus的搭建
- unity3d 不规则外发光描边_Shader案例之内发光和边缘泛光效果
- 【原】常见的模块,你语义化了没
- 【Java从0到架构师】Linux 基础知识、常用命令
- 神经网络训练双螺旋曲线模型
- 【考研英语语法】一般过去式练习题
- OSChina 周三乱弹 ——怎么样防止隔壁老王
- 0w1_CTF_Writeup
- pandas批量处理体育成绩
- pfamscan 的使用_使用 HMMER 进行 PFAM 注释
- CENTOS: 安装memSQL
- 零基础python机器学习笔记--代码实战第二天数据分析
- signature=501807407682dd47ffe7345fc7b18d2e,Signature-Free Intrusion Detection
- JavaScript伪数组和数组
- 高精地图编辑生成 opendrive OpenSCENARIO
- 人工智能的可持续发展的“秘密”
- vue.js实现用户评论、登录、注册、及修改用户部分信息功能代码。