题意:

解法:

注意:题目的d不一定是n的因子,因此不能直接下标对d取模分组.什么时候a[i]会从1变成0?
一定是a[i]=1且a[i+d]=0的时候,
我们反过来考虑,如果a[i]=0且a[i-d]=1,那么a[i-d]就会变成0.
从0开始bfs即可.对于a[x]=0的x,如果a[x-d]=1,
那么将a[x-d]由1变成0,并将x-d推入队列.
如果bfs之后仍然有数=1,那么无解.
否则答案就是bfs的轮数.算法复杂度O(n).

code:

#include<bits/stdc++.h>
#define MULTI_CASE
#define PI pair<int,int>
// #define int long long
using namespace std;
const int maxm=2e6+5;
int a[maxm];
int n,d;
void solve(){cin>>n>>d;for(int i=0;i<n;i++){cin>>a[i];}int ans=-1;queue<int>q;for(int i=0;i<n;i++){if(!a[i])q.push(i);}while(q.size()){    //bfsint len=q.size();ans++;for(int i=0;i<len;i++){int x=q.front();q.pop();int pre=(x-d+n)%n;if(a[pre]){a[pre]=0;q.push(pre);}}}for(int i=0;i<n;i++){if(a[i]){cout<<-1<<endl;return ;}}cout<<ans<<endl;
}
void Main(){#ifdef MULTI_CASEint T;cin>>T;while(T--)#endifsolve();
}
void Init(){ios::sync_with_stdio(0);cin.tie(0);#ifndef ONLINE_JUDGEfreopen("../in.txt","r",stdin);freopen("../out.txt","w",stdout);#endif
}
signed main(){Init();Main();return 0;
}

Codeforces1579 F. Array Stabilization (AND version)(思维+bfs)相关推荐

  1. CodeForces - 1547F Array Stabilization (GCD version)(ST表+二分)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数组 aaa,下标从 000 开始,每次操作分为两个步骤: 构建出数组 bbb,有 bi=gcd(ai,a(i+1)modn)b_i=gcd(a ...

  2. CF1547F Array Stabilization (GCD version) st表 + 尺取/二分

    传送门 题意: 思路: 容易发现,我们将所有aaa都除上所有aaa的gcdgcdgcd,实际上就是让你求一个最小的lenlenlen,对于所有iii,gcd(ai,ai+1,...,ai+len−1) ...

  3. CF-1209 F. Koala and Notebook(建图BFS)

    CF-1209 F. Koala and Notebook(建图BFS) 题目链接 题意 n个城市m个双向边,从点1可以到达任何点,把点1到到其他点所经过的边写成一行可以得到一个大数,你的任务使得这个 ...

  4. codeforces1454 F. Array Partition

    这周忙死,一直没机会吧补一下题,周二晚上打的div3,过了A~E,F就看了下题目就没时间了,无聊的时候想应该会用到ST表,然后想要维护指针,后来写的时候发现维护不了,然后就歇菜了... F. Arra ...

  5. EMC (DMX) solutions Enabler Symmetrix Array Management CLI Version 6.5

    EMC solutions Enabler Symmetrix Array Management CLI Version 6.5功能,还是可以做到的.下面说一下监控方法,其实还是很简单. 用MC so ...

  6. 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...

  7. CodeForces - 1559D2 Mocha and Diana (Hard Version)(思维)

    题目链接:点击查看 题目大意:给出两棵森林,每次可以同时在两个森林中增加同一条边,问最多可以增加多少条边,使得两个森林仍然还是森林 题目分析:结论参考至:https://blog.csdn.net/R ...

  8. Orac and Game of Life CodeForces - 1350E(思维+BFS)

    Please notice the unusual memory limit of this problem. Orac likes games. Recently he came up with t ...

  9. Codeforces Round #617 (Div. 3) E2. String Coloring (hard version) 思维 + dp + Dilworth定理

    传送门 文章目录 题意: 思路: 题意: 让你给一个串染色,不同颜色且相邻的一对字符可以互换位置,用最少的颜色,使交换后这个字符串字典序最小. 思路: 考虑将字符串分成若干个非递减的子序列,由于其非递 ...

最新文章

  1. 学python的好处-python有什么优点
  2. Windows7 连接Windows Server服务器时提示:计算机无法连接到远程计算机上的另一个控制台会话。...
  3. python文本聚类分析_python机器学习kmeans算法——对文本进行聚类分析
  4. Visual Paradigm中文乱码
  5. 一文掌握面向Windows平台的深度学习工控程序开发(使用Paddle Inference部署MFC、C#程序,内含完整代码链接)
  6. (附源码)计算机毕业设计SSM基于Java网络游戏后台管理系统
  7. android水印图片素材,水印软件哪个好用app 安卓手机视频加图片水印的方法有吗?...
  8. 植物大战僵尸 php,植物大战僵尸Online
  9. 设计模式 | 原型模式
  10. 解决 pq: SSL is not enabled on the server
  11. python实现12306查询火车票
  12. 遥感测深方法综述(二)CZMIL 机载LiDAR 测深系统
  13. Java——使用多线程模拟真实高并发业务并保证安全性(一)
  14. 磁盘检测SMART工具
  15. 代价敏感 数据不均衡_数据质量差的代价
  16. HTML第一周学习笔记(标题重置版)
  17. unity游戏之太空射击
  18. logit方程怎么写_呆哥数学坐标系与参数方程——最全概括【1】
  19. ERP系统的八大主要功能模块
  20. 分支限界算法 之 A*算法(启发式搜索算法)---九宫重排游戏(也称八数码问题)

热门文章

  1. 微服务:程序员和架构师的分水岭
  2. 五、jQuery 对表单、表格的操作(走过路过瞅瞅吧)
  3. 关于jQuery方法间调用的返回值问题
  4. 第101篇 盲盒智能合约(ERC1155)
  5. 世界美好与你环环相扣_吉他谱_C调简单版
  6. 张朝阳不再狂妄,搜狐的艰难复苏路
  7. 易语言D3DHook
  8. linux命令行蜂鸣声太大,在Linux Gnome系统上关闭终端的硬件蜂鸣声的方法
  9. 硬盘坏道终结者---低级格式化
  10. java图书销售系统,基于jsp的图书销售管理系统-JavaEE实现图书销售管理系统 - java项目源码...