题目链接:http://codeforces.com/contest/1272/problem/E

题意:给定n,给定n个数a[i],对每个数输出d[i]。

对于每个i,可以移动到i+a[i]和i-a[i](如果i+a[i]<=n,i-a[i]>=1)

d[i]是指从i移动到任意一个j的步数,需满足条件a[i]和a[j]的奇偶性不同

不论奇偶,相连的边先放进vector邻接表中

如果i和i+a[i]奇偶性不同,那么ans[i]为1,把i放到queue队列里

同理,如果i和i-a[i]奇偶性不同,那么ans[i]为1,把i放到queue队列里

(bfs)

queue队列里存的是每个有答案的点,刚开始队列里所有点的ans都为1。

由于需要a[i]和a[j]奇偶性不同,则只需要跟有答案的点奇偶性相同即可。

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+;
vector<int> v[maxn];
int ans[maxn],a[maxn];
int main()
{
memset(ans,-,sizeof ans);
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)cin>>a[i]; queue<int> q;
for(int i=;i<=n;i++)
{
int j=i+a[i];
if(j<=n)
{
v[j].push_back(i);
if(a[j]%!=a[i]%)
{
ans[i]=;
q.push(i);
}
}
j=i-a[i];
if(j>=)
{
v[j].push_back(i);
if(a[j]%!=a[i]%)
{
ans[i]=;
q.push(i);
}
}
}
while(!q.empty())//bfs
{
int cur=q.front();
q.pop();
for(int n:v[cur])
{
if(ans[n]==-&&a[n]%==a[cur]%)
{
ans[n]=ans[cur]+;
q.push(n);
}
}
}
for(int i=;i<=n;i++)
{
cout<<ans[i]<<" ";
} return ;
}

Codeforces Round #605 (Div. 3) E - Nearest Opposite Parity的更多相关文章

  1. Codeforces Round #605 (Div. 3) E. Nearest Opposite Parity(最短路)

    链接: https://codeforces.com/contest/1272/problem/E 题意: You are given an array a consisting of n integ ...

  2. Codeforces Round #605 (Div. 3) E - Nearest Opposite Parity (超级源点)

  3. Codeforces Round #605 (Div. 3)

    地址:http://codeforces.com/contest/1272 A. Three Friends 仔细读题能够发现|a-b| + |a-c| + |b-c| = |R-L|*2 (其中L ...

  4. Codeforces Round #605 (Div. 3) 题解

    Three Friends Snow Walking Robot Yet Another Broken Keyboard Remove One Element Nearest Opposite Par ...

  5. Codeforces Round #172 (Div. 2) B. Nearest Fraction 二分

    B. Nearest Fraction Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/281/p ...

  6. 【cf比赛记录】Codeforces Round #605 (Div. 3)

    比赛传送门 Div3真的是暴力杯,比div2还暴力吧(这不是明摆的嘛),所以对我这种一根筋的挺麻烦的,比如A题就自己没转过头来浪费了很久,后来才醒悟过来了.然后这次竟然还上分了...... A题:爆搜 ...

  7. Codeforces Round #605 (Div. 3) D. Remove One Element(DP)

    链接: https://codeforces.com/contest/1272/problem/D 题意: You are given an array a consisting of n integ ...

  8. Codeforces Round #605 (Div. 3) C. Yet Another Broken Keyboard

    链接: https://codeforces.com/contest/1272/problem/C 题意: Recently, Norge found a string s=s1s2-sn consi ...

  9. Codeforces Round #605 (Div. 3) B. Snow Walking Robot(构造)

    链接: https://codeforces.com/contest/1272/problem/B 题意: Recently you have bought a snow walking robot ...

随机推荐

  1. css的块级元素和行级元素

    块级元素 概念: 每个块级元素都是独自占一行.  元素的高度.宽度.行高和边距都是可以设置的.   元素的宽度如果不设置的话,默认为父元素的宽度(父元素宽度100%) <address>/ ...

  2. 利用JaCoCo统计接口测试中代码覆盖率

    ​        做接口测试,很多时候都会听到,你接口测试的覆盖率是多少?很多人会回答80%,你怎么统计的,他说覆盖了80%的需求.这个回答没有错误,但是片面,我们不能只考虑需求的覆盖率,还有业务的覆 ...

  3. PHP读取Excel内的图片

    今天接到了一个从Excel内读取图片的需求,在网上查找了一些资料,基本实现了自己的需求,不过由于查到的一些代码比较久远,不能直接移植到自己的项目里,需要稍加改动一下. 这里介绍一下分别使用phpspr ...

  4. 分享使用PHP开发留言板

    首先我不是一名开发人员,只是一名小小的运维工程师,PHP是我自己喜欢的一门开发语言,所以我偶尔也会敲一些代码,写一些案例.今天我给大家分享的是使用PHP开发的留言板,留言板功能不全所以请大家见谅,也不 ...

  5. 磁盘配额管理disk quotas

    条件: a.确保系统内核支持,Linux一般都支持 b.确保分区格式支持,ext2都只持! c.安装有quota软件,centos默认都有! (1)检查内核是否打开磁盘配额支持 [root@cento ...

  6. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(10)- KBOOT特性(可靠升级)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之可靠升级(Reliable Update)特性. 所谓可靠升级机制,即在更新Applica ...

  7. less使用入门

    概要 为什么要有预处理CSS CSS基本上是设计师的工具,不是程序员的工具.在程序员的眼里,CSS是很头痛的事情,它并不像其它程序语言,比如说PHP.Javascript等等,有自己的变量.常量.条件 ...

  8. C# 根据字符串生成二维码

    1.先下载NuGet包(ZXing.Net) 2.新建控制器及编写后台代码 using System; using System.Collections.Generic; using System.D ...

  9. 指定vue的v-model的类型

    作为一个菜鸟,兼只会依葫芦画瓢的搬砖it狗,并没有系统学习过vue. 在最近项目中,发现了一个奇怪的问题: 使用vant-ui 的field <van-field v-model="f ...

  10. GentOS 7 安装步骤

    附上原作者的博客网址: https://blog.csdn.net/qq_42570879/article/details/82853708 1.CentOS下载CentOS是免费版,推荐在官网上直接 ...