【AtCoder】【ARC080F】Prime Flip

AtCoder ARC181 A题解 AtCoder ARC181题解 阅读详情

Description

有无限多的硬币排成一排,其中有一些位置的的硬币是反面的,其他的都是正面的,
现在你每次可以翻转一个区间的所有硬币,要求区间的长度必须为奇质数,
求最少操作次数,

Solution

先把原序列差分,每次就只会更改两个点,
分以下的几种情况讨论:
1. 区间长度为奇质数,代价为1;
2. 区间长度为偶数,代价为2(2:5-3, 4:7-3,大于6的用哥德巴赫猜想);
3. 区间长度为非质数奇数,代价为3(随便一个偶数-3),

以偶了以上的结论,贪心的想,尽量把要做的点两两匹配成奇质数,剩下的用偶数匹配,最后实在不行就补一个奇数的,

匹配用匈牙利即可

Code

#include <cstdio>
#include <algorithm>
#define fo(i,a,b) for(int i=a;i<=b;++i)
#define fod(i,a,b) for(int i=a;i>=b;--i)
#define min(q,w) ((q)>(w)?(w):(q))
#define max(q,w) ((q)<(w)?(w):(q))
using namespace std;
const int N=350,M=1e7;
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n,ans;
bool az[M+10],prz[M+10];
bool B[N][N];
int pr[M/5];
int a[N],b[N],zx[N];
int z[N],TI;
void Pre()
{
    fo(i,2,M)
    {
        if(!prz[i])pr[++pr[0]]=i;
        fo(j,1,pr[0])
        {
            int t=i*pr[j];
            if(t>M)break;
            prz[t]=1;
            if(!t%pr[j])break;
        }
    }
    prz[1]=prz[2]=1;
}
bool OK(int q)
{
    if(z[q]==TI)return 0;
    z[q]=TI;
    fo(i,1,b[0])if(B[q][i]&&(!zx[i]||OK(zx[i])))return zx[i]=q,1;
    return 0;
}
int main()
{
    int q;
    Pre();
    read(n);
    fo(i,1,n)az[read(q)]=1;
    fo(i,1,M+1)if(az[i]!=az[i-1])
    {
        if(i&1)a[++a[0]]=i;
        else b[++b[0]]=i;
    }
    fo(i,1,a[0])fo(j,1,b[0])if(!prz[abs(a[i]-b[j])])B[i][j]=1;
    q=0;
    fo(i,1,a[0])
    {
        ++TI;if(OK(i))++q;
    }
    ans=q+2*((a[0]-q)/2+(b[0]-q)/2);
    if((a[0]-q)&1)ans+=3;
    printf("%d\n",ans);
    return 0;
}
AtCoder比赛类型深度对比:ABC/ARC/AGC到底该打哪个? 本文深度解析AtCoder三大赛事ABC、ARC和AGC的核心差异与定位。ABC是新手友好、每周举行的入门赛,题目难度平滑,适合0-1999Rating选手练习速度与基础算法。ARC为中坚选手的试炼场,侧重算法深度与思维挑战,是冲击更高Rating的关键。AGC则为顶尖高手的月度旗舰赛,注重原创性与极限思维。文章结合赛制、难度数据和评分策略,为不同水平选手提供了清晰的参赛选择与进阶路径建议。 阅读详情

相关推荐

AtCoder-ARC080D Prime Flip——差分+哥德巴赫猜想

真的有题用哥德巴赫猜想!!

偶耶的博客 282

Atcoder ARC174 A -A Multiply

题意:给你一个长度为N的数组A,再给你一个c,你可以选一个区间l-r,这个区间里的每个数都乘以C(可能是负数) ,求A数组和的最大值。思路:c有可能为负,所以我们可以考虑两种情况,一种是l-r的和最大,另一种是l-r和最小,比较即可AC。本蒟蒻第二篇题解,望多多支持。

qiuyilin2012的博客 815

AtCoder极简主义:算法竞赛中的认知减负与思维训练

算法竞赛平台AtCoder以极致极简设计著称,其核心并非UI美学,而是通过清除干扰、聚焦问题本质,实现对程序员逻辑建模能力的系统性锤炼。从ABC的确定性翻译、ARC的状态压缩直觉,到AGC的问题本质重构,它构建了一套层层递进的思维训练体系。这种训练直指计算机科学底层——将自然语言精准转化为数学约束,再映射为可执行算法,强调输入输出形式化、边界条件严苛性与时间复杂度敏感性。在工程实践中,该能力直接提升技术面试表现、架构决策质量与问题抽象效率。‘AtCoder ABC’与‘AGC’作为高频搜索热词,正反映出开发

weixin_30843121的博客 234

【Atcoder】ARC 080 F - Prime Flip

【算法】数论,二分图最大匹配 【题意】有无限张牌,给定n张面朝上的牌的坐标(N<=100),其它牌面朝下,每次操作可以选定一个>=3的素数p,并翻转连续p张牌,求最少操作次数使所有牌向下。 【题解】 1.定义bi,当ai和ai-1的朝向相同时,bi=0,否则bi=1。特别的,a0朝向下。 则问题转化为:给定01序列b[],每次选L(正数)和P(奇素数),翻转bL和bP,求最少操...

weixin_33991418的博客 196

atcoder:arc129(a,b,c),abc228(a,b,c)题解

arc129 A题: 题意: 输入N,L,R,求L~R这个区间内,有多少个数与N异或运算后小于N?(N^X<N)。 思路: 异或运算:在二进制下,0^0=1,1^1=0,0^1=1,1^0=1. 不难发现,当一个数的最高位1与同位置的1异或后,得到的数一定小于本身。所以只需要反复找N中的1位然后与该位置为1的数异或,结果一定小于本身 ...

archor777的博客 935

Atcoder ARC102测试数据

日本竞赛网站Atcoder的ARC102场的测试数据,题面可以在Atcoder找到。

AtCoder算法竞技平台简介

AtCoder是日本最大的算法竞技网站,域名为http://atcoder.jp/(注意http://www.atcoder.jp/ 是其官网)。AtCoder支持日语和英语。 AtCoder每周六北京时间20:00(日本标准时间则为21:00)会有比赛。AtCoder的比赛分为三个等级: (1)AtCoder Beginner Contest (ABC),是给算法初学者参加的。总共有4道...

小树学信奥 2万+

STM32F407单一定时器输出4路不同频率及占空比的PWM波

STM32F407单一定时器输出4路不同频率及占空比的PWM波

qq_43868701的博客 4919

[AtCoder Regular Contest 080] F: Prime Flip (arc080F)

原题链接 https://arc080.contest.atcoder.jp/tasks/arc080_d Description 给出无限多的卡牌,从1开始顺序标号 现在有N个卡牌是正面朝上的,给出它们的标号,其他的都是反面朝上 你可以进行如下的操作 选择长度为奇质数的一段连续卡牌,将它们翻面 求最少需要多少次操作使得所有卡牌反面朝上 N&lt;=100 Solutio...

Never give in. 391

深入SVT SPI VIP配置:如何灵活控制CS间隔、数据帧大小与时钟频率(含代码片段)

本文深入探讨了SVT SPI VIP的高级配置技巧,包括精确控制CS信号间隔、突破数据帧大小限制以及动态时钟频率切换。通过实战代码片段和详细配置步骤,帮助验证工程师灵活应对复杂SPI协议验证场景,提升验证效率和覆盖率。特别适合需要处理非标准SPI时序和特殊数据帧的芯片验证项目。

weixin_27014595的博客 280

(完整版)从零开始教你玩转ComfyUI-保姆级部署教程-手把手带你ComfyUI工作流搭建

ComfyUI就像拥有一支神奇魔杖,可以轻松创造出令人惊叹的AI生成艺术。从本质上讲,ComfyUI是构建在Stable Diffusion之上的基于节点的图形用户界面(GUI),而Stable Diffusion是一种最先进的深度学习模型,可以根据文本描述生成图像。但ComfyUI真正特别之处在于,它如何让像你这样的艺术家释放创造力,将你最疯狂的想法变为现实。想象一下有一块数字画布,你可以通过连接不同的节点来构建自己独特的图像生成工作流,每个节点代表一个特定的功能或操作。

php源码 4万+

AtCoder - ARC 117 - C(思维+杨辉三角结论+卢卡斯定理/模拟)

已知一个金字塔的底层颜色分布,蓝白红,上面格子的颜色取决于下面两个相邻格子的颜色。如果相邻格子为同色,那么上面那个格子也是这个颜色;如果相邻格子为不同色,那么上面那个格子就是不同于下面两种颜色的第三种颜色。给你金字塔最顶层的方块数为 N,和底层颜色分布,用字符 B 表示蓝色,字符 W 表示白色,字符R 表示红色。问:金字塔顶端是什么颜色。

m0_64172681的博客 1675

Vmware安装windowsServer2022版本

全网最详细的Vmware安装windowsServer2022版本

A乐神的博客 7014

【题解】AtCoder ARC128D - Neq Neq

AtCoder ARC128D - Neq Neq 题解

m0_72720401的博客 322

(一)深入理解Bluez协议栈之蓝牙Mesh的支持(1/5)

BlueZ是Linux官方蓝牙协议栈。它是一个基于GNU General Public License (GPL)发布的开源项目,从Linux 2.4.6开始便成为Linux 内核的一部分。如果你是linux平台开发蓝牙的的工程师,肯定会接触过Bluez协议栈,hciconfig,hciattach,hciconfig等工具都是很好用的工具。

3321

VEML7700环境光传感器原理图设计,已量产(光线传感器)

最近做便携显示设备的自动亮度调节模块,最终敲定了 VEML7700 这款数字光传感器 —— 一是它 0~120klx 的宽量程刚好覆盖 “暗室→户外强光” 的全场景,二是 Filtron™技术让它的光谱响应和人眼高度贴合,测出来的 “亮度” 更符合实际视觉感受,加上 O-Trim™技术把输出公差压到 10% 以内,省了不少后期校准的功夫。搭好电路后串口直接读 lx 数值,稳定性和精度都够,这篇聊聊这个模块的硬件设计细节。

不脱发的程序猿 603

AtCoder - arc125_a Dial Up

如果a数组中不含有得到b数组所需的数字,那么就直接输出-1,否则就有答案 只有a与第一次不相等 从a数组中找到第一个与最后一个与不相等的数的位置,位置标记为l和r,那么第一次需要移动的次数就是 后续如果发生不匹配的情况移动只需在01之间来回移动,所以每次移动的次数都是1 答案就是每次移动次数加上复制的次数1 int a[N], b[N], n, m; void get_l_r(int cur, int &l, int &r) { for (int i = 1; i &

weixin_52278699的博客 257

Lammps实现Ar的沸腾过程(包含in文件)

Lammps实现简单的沸腾过程

Rockyoung 3503

AtCoder - arc086_d Shift and Decrement分析与实现

如果现在把操作次数统计为p_0+x+p_x,这样会用更多的次数完成相同的操作,这里有一个关键点,根据上面的p_0被累加的方式,p_0的二进制表达中1的个数是真实的p_0到p_(x-1)的操作次数的和,例如p_0 = 11011010,这代表着在p_0被增加前,p_0=0 p_1=1 p_2=0 p_3=1等等。当p处于某一区间时,为让所需操作次数减少,应该让p的二进制表达中1的个数尽量少(求一个区间[a,b]中的数的二进制表达中1的数目最少的数的方法见后)

codemonkey_66798的博客 1030

通信算法之267 : DJI无人机 云哨 DroneID 640ms

消费级无人机可以用于高级航拍、物流和人道主义救援等等。但是其广泛使用给安全、安保和隐私带来了许多风险。例如,攻击方可能会使用无人机进行监视、运输非法物品,或通过侵入机场上方的封闭空域造成经济损失。为了防止恶意使用,无人机制造商采用多种对策来强制安全可靠地使用无人机,例如对速度和高度施加软件限制,或使用地理围栏实施禁飞区。作为对传统对策的补充,市场领导者大疆(DJI)为无人机实施了一种称为 DroneID 的跟踪协议,该协议旨在将无人机及其操作员的位置传输给授权实体,例如执法部门或关键基础设施的运营商。

leegang12的专栏 3309

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

AT 杂题选做

AtCoder Regular Contest 081 难度正常的一场 ARC。 A 题感觉有点眼熟,但是不管了,反正是可以秒掉的题。 B 题: 难度:2.0 难在第一步的观察(当然可能非常套路) 由于是 2×n2\times n2×n 的网格,所以不难推出,形状一定是多个竖着的骨牌,然后多个横着的骨牌,然后又是竖着的骨牌… 所以就直接排列组合乱搞竖着横着然后从左往右搞就好了。 C 题: 难度:2.9 惨遭这题误导 ...

cryozwq的博客 540

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

AtCoder arc146. B - Plus and AND题解

AtCoder arc146. B - Plus and AND题解

post12345的博客 403

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【AtCoder】【AGC011f】Train Service Planning

Description有一条地铁线路,n段路,n+1个站,每段路可以同时交汇走两辆车或只能走一辆车, 每个站可以停车,停车不占用线路, 现在每隔Kmin发一次车,分别从起点/终点开向终点/起点,

2502

[arc080f]Prime Flip

题目大意有无穷个硬币,初始有n个正面向上,其余均正面向下。 你每次可以选择一个奇质数p,并将连续p个硬币都翻转。 问最小操作次数使得所有硬币均正面向下。做法不妨考虑差分。差分后1的数量一定为偶数。 然后一次操作[l,r]会翻转两端l-1与r。 现在问题变成两两配对使得操作次数尽量少。 有三种情况: 1、|i-j|是奇质数,那么1步即可。 2、|i-j|是偶数,那么2步即可。(2可以5-

不来也不去的一只失忆蝴蝶 989

[ARC080F]Prime Flip——贪心+最大二分匹配

题目大意: 有若干个01排成一行,每一个可以选择一个长度为奇质数的区间进行每个数字的翻转,问最小多少次可以将所有的1变成0。 思路: 考虑到是区间的操作,我们现将这个数组差分一下,即和前面的数不同为1,否则为0,这样区间操作就变成了两个点的操作。 显然我们要每次两个点两个点地改成0。考虑两个点之间的距离和操作数量的关系。 如果距离为奇质数的话,就只需要一次操作。 如果距离为偶数的就要两...

ylsoi的博客 468
上一篇: 【AtCoder】【AGC011f】Train Service Planning
下一篇: 【GDOI2018冲刺】总结
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值