【推导】Codeforces Round #410 (Div. 2) C. Mike and gcd problem
2024-09-27 08:29:21
如果一开始就满足题意,不用变换。
否则,如果对一对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;
}
最新文章
- BootStrap_04之jQuery插件(导航、轮播)、以及Less
- [问题2015S13] 复旦高等代数 II(14级)每周一题(第十四教学周)
- 结构类模式(三):组合(Composite)
- Linux命令行下cp,rm,mv命令的使用
- mysqld_multi配置MySQL多实例
- Java凝视Annotation
- 深刻理解HDFS工作机制
- iOS 热更新插件
- 每天一个JS 小demo之“随机”抽奖。主要知识点:Math函数,数组方法,递归
- RBAC__权限设计__结构化表的输出(不知道怎么描述标题,反正就是设计表) 难点重点 必须掌握&#129302;
- Python 爬虫利器 Selenium
- .gitignore文件的配置和生效
- oralce定时任务
- Linux使用curl 方式安装docker-compose 后执行docker-compose version 检查安装是否成功时出错的解决办法
- 【问题解决:SFL4J】启动时SLF4J报错
- Pandas存储为Excel格式:单个xlsx文件下多sheet存储方法
- 测试那些事儿—简述CPU的工作原理
- pip2和pip3冲突问题解决方法
- retrying模块的学习
- Golang设计模式—简单工厂模式(Simple Factory Pattern)