如果一开始就满足题意,不用变换。

否则,如果对一对ai,ai+1用此变换,设新的gcd为d,则有(ai - ai+1)mod d = 0,(ai + ai+1)mod d = 0

变化一下就是2 ai mod d = 0

2 ai+1 mod d = 0

也就是说,用两次变换之后,gcd至少扩大2倍,于是,最优方案就是我们将所有的奇数都变成偶数。

只需要找出所有奇数段,答案就是sigma([奇数段的长度/2]+(奇数段的长度 mod 2 ==1 ?))。

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
int n;
ll a[100010];
int main(){
// freopen("c.in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%I64d",&a[i]);
}
int GCD=(int)a[1];
for(int i=2;i<=n;++i){
GCD=__gcd(GCD,(int)a[i]);
}
if(GCD!=1){
puts("YES\n0");
return 0;
}
int cnt=0,sta;
for(int i=1;i<=n;++i){
if(a[i]%2ll==1 && (i==1 || a[i-1]%2ll==0)){
sta=i;
}
if(a[i]%2ll==1 && (i==n || a[i+1]%2ll==0)){
cnt+=(i-sta+1)/2+((i-sta+1)%2==1 ? 2 : 0);
}
}
printf("YES\n%d\n",cnt);
return 0;
}

最新文章

  1. BootStrap_04之jQuery插件(导航、轮播)、以及Less
  2. [问题2015S13] 复旦高等代数 II(14级)每周一题(第十四教学周)
  3. 结构类模式(三):组合(Composite)
  4. Linux命令行下cp,rm,mv命令的使用
  5. mysqld_multi配置MySQL多实例
  6. Java凝视Annotation
  7. 深刻理解HDFS工作机制
  8. iOS 热更新插件
  9. 每天一个JS 小demo之“随机”抽奖。主要知识点:Math函数,数组方法,递归
  10. RBAC__权限设计__结构化表的输出(不知道怎么描述标题,反正就是设计表) 难点重点 必须掌握&#129302;
  11. Python 爬虫利器 Selenium
  12. .gitignore文件的配置和生效
  13. oralce定时任务
  14. Linux使用curl 方式安装docker-compose 后执行docker-compose version 检查安装是否成功时出错的解决办法
  15. 【问题解决:SFL4J】启动时SLF4J报错
  16. Pandas存储为Excel格式:单个xlsx文件下多sheet存储方法
  17. 测试那些事儿—简述CPU的工作原理
  18. pip2和pip3冲突问题解决方法
  19. retrying模块的学习
  20. Golang设计模式—简单工厂模式(Simple Factory Pattern)

热门文章

  1. Eureka Server的高可用
  2. [干货,阅后进BAT不是梦]面试心得与总结---BAT、网易、蘑菇街
  3. java解析XML之DOM解析和SAX解析(包含CDATA的问题)
  4. django wsgi nginx 配置
  5. mssql批量刷新多个表的数据
  6. mybatis开启字段自动映射为java驼峰命名规则
  7. 在 Visual Studio 中使用正则表达式
  8. Leetcode 之Binary Tree Inorder Traversal(43)
  9. 高德地图web 端智能围栏
  10. MySQL查找出重复的记录