【链接】 我是链接,点我呀:)
【题意】

在这里输入题意

【题解】

想一下,感觉最后的结果肯定是从某一段开始,这一段的gcd为1,然后向左和向右扩散的。
则枚举那一段在哪个地方。
我们设这一段中所有的数字都做了一次gcd.

假设在i..j这一段。
则求gcd的顺序是(i,i+1),(i+1,i+2)...(j-1,j)
这样a[j]=gcd(a[i],a[i+1]..a[j])了

即顺序求了一遍gcd.
这样,预处理一下i到j的gcd.
如果gcd[i][j]==1,则获取到一个可行方案。
求一下次数的最小值就好了
即(j-i)*2 + i-1 + n-j

当然,如果已经有1了,就没必要去凑一个1出来了。
直接枚举从1开始向左、向右就好。

【代码】

#include <bits/stdc++.h>
using namespace std;const int N = 2e3;
int a[N+10],n;
int f[N+10][N+10];int main(){#ifdef LOCAL_DEFINEfreopen("F:\\c++source\\rush_in.txt", "r", stdin);#endifscanf("%d",&n);for (int i = 1;i <= n;i++) scanf("%d",&a[i]);int ans = -1;//have 1for (int i = 1;i <= n;i++)if (a[i]==1){int cnt = 0;for (int j = i-1;j >= 1;j--)if (a[j]!=1){cnt++;}for (int j = i+1;j <= n;j++)if (a[j]!=1){cnt++;}if (ans==-1 || ans > cnt) ans = cnt;}int temp = a[1];for (int i = 2;i <=n;i++) {temp = __gcd(temp,a[i]);    }if (temp!=1){puts("-1");return 0;}for (int i = 1;i <= n;i++){f[i][i] = a[i];for (int j = i+1;j <= n;j++){f[i][j] = __gcd(f[i][j-1],a[j]);}}for (int i = 1;i <= n;i++){for (int j = i;j <= n;j++)if (f[i][j]==1){int temp = (j-i)*2 + (i-1) + (n-j);if (ans==-1){ans = temp;}else ans = min(ans,temp);}}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/AWCXV/p/7855800.html

【Codeforces Round #446 (Div. 2) C】Pride相关推荐

  1. 【Codeforces Round #424 (Div. 2) C】Jury Marks

    [Link]:http://codeforces.com/contest/831/problem/C [Description] 有一个人参加一个比赛; 他一开始有一个初始分数x; 有k个评委要依次对 ...

  2. 【Codeforces Round #422 (Div. 2) C】Hacker, pack your bags!(二分写法)

    [题目链接]:http://codeforces.com/contest/822/problem/C [题意] 有n个旅行计划, 每个旅行计划以开始日期li,结束日期ri,以及花费金钱costi描述; ...

  3. 【Codeforces Round #420 (Div. 2) B】Okabe and Banana Trees

    [题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一 ...

  4. 【Codeforces Round #299 (Div. 2) B】Tavas and SaDDas

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每次取出最小的数字,在后面加上一个4或一个7就好; 会发现最后的数字很少的. [代码] #include <bits/stdc ...

  5. 【Codeforces Round #430 (Div. 2) D】Vitya and Strange Lesson

    [链接]点击打开链接 [题意] 给出一个数组,每次操作将整个数组亦或一个数x,问得到的数组的结果中的mex.mex表示为自然数中第一个没有出现过的数. [题解] 异或的效果是可以累加的,所以不用每次都 ...

  6. 【Codeforces Round #430 (Div. 2) B】Gleb And Pizza

    [链接]点击打开链接 [题意] 在这里写题意 [题解] 根据圆心到原点的距离这个东西判断一下圆在不在那个环里面就好 [错的次数] 0 [反思] 在这了写反思 [代码] #include <cst ...

  7. 【Codeforces Round #452 (Div. 2) C】 Dividing the numbers

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] n为偶数. l = 1, r = n (l,r)放在一组 l++,r-- 新的l,r放在另外一组 直到l+1==r 这个时候,判断两 ...

  8. 【Codeforces Round #442 (Div. 2) A】Alex and broken contest

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 注意是所有的名字里面,只出现了其中某一个名字一次. [代码] #include <bits/stdc++.h> usin ...

  9. 【Codeforces Round #450 (Div. 2) B】Position in Fraction

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找循环节就好. ->其实可以不用找出来整个循环节. 有找到c就直接输出. 找到了循环节还没找到的话,直接输出无解. [代码] ...

最新文章

  1. installshield 2009实现安装包自动编译
  2. object-c中的继承
  3. dynamic关键字
  4. 一次写多个字节的方法 || 数据追加续写
  5. beego1---beego,bee环境配置
  6. Nature最新封面:机器人进军考古界,破解3亿年前生物谜团 | 附Demo
  7. 查询某字段不重复记录的SQL语句
  8. 利用skipList(跳表)来实现排序(待补充)
  9. 20155229 2017-2018-1 《信息安全系统设计基础》课程总结
  10. java gui 计算器_Java实现GUI计算器(完整版)
  11. kaptcha生成java验证码
  12. KingbaseES和PostgreSQL兼容
  13. [luogu P2183] [国家集训队]礼物 {exlucas}
  14. 域名注册网站服务比较
  15. 阿里妈妈返利比率的商品搜索API接口
  16. 洛谷P1200你的飞船在这
  17. Android开发之GPS测试完整案例源码详解之实时检测GPS的状态
  18. docker 安装node
  19. 左连接(LEFT JOIN)实例
  20. 【转】外连接&全连接的区别

热门文章

  1. 零起步的Hadoop实践日记(更改hadoop数据存储位置)
  2. VHD工具-VHDTOOL
  3. 轻松Ghost XP系统!
  4. 美国体验圣帕特里克节(St.Patrick's Day)
  5. QQ卡机问题解决方法
  6. Asp.net2.0:如何使用ObjectDataSource
  7. 大肠结构笔记(持续更新中)
  8. scala获得成员函数列表
  9. ImportError: cannot import name ‘python_2_unicode_compatible‘
  10. 查看ubuntu linux开放的端口以及控制端口范围