首页 > 其他分享 >ARC080F Prime Flip 题解

ARC080F Prime Flip 题解

时间:2024-04-09 19:14:18浏览次数:18  
标签:Prime 题解 质数 为奇 取反 偶数 ARC080F 情况 操作

传送门

题意:给定初始 \(a\) 数组,每次可以选一个长度为奇质数的区间取反。问全变成 \(0\) 要多少次操作。

和 Password、Xor Replace 的套路相同,做一个差分。

令 \(b_i=a_i\xor a_{i-1}\),目的就是让 \(b\) 数组变为全 \(0\)。对 \(a_i\sim a_{i+p-1}\) 取反相当于对 \(b_i,b_{i+p}\) 取反。显然 \(b\) 中有偶数个 \(1\)。

一次操作可以让 \(b_i,b_j\) 取反,要求 \(j-i\) 是奇质数。

最终的操作可以看作把 \(b\) 中所有 \(1\) 两两匹配,然后每一对 \(1\) 消耗若干次操作变成 \(0\)。

考虑两个位置 \(i,j\) 需要多少次操作才能一起变 \(0\)。

  1. \(j-i\) 为奇质数。显然一次即可。

  2. \(j-i\) 为大于 \(4\) 的偶数。根据哥德巴赫猜想:大于 \(4\) 的偶数可以分成两个奇质数之和。 所以两次即可。一次显然不够,因为加一个奇质数后奇偶性不对。

  3. \(j-i\) 为奇合数,\(3\) 次操作。一次操作变回 \(2\) 的情况。

  4. \(j-i=2\) 或 \(j-i=4\)。对于 \(j-i=2\),因为 \(2=5-3\),两次;\(j-i=4\),因为 \(4=7-3\),两次。不如把该情况和情况 \(2\) 合并。

要操作次数最少,显然尽量选择情况 \(1\)(\(1\) 也不会干扰到情况 \(2,3\))。

于是把 \(b\) 中所有 \(1\) 的位置找出来,分成奇数偶数的二分图。如果两个位置差为奇质数,连边。

先求个最大匹配,就是情况 \(1\) 的个数。然后让奇数偶数各自内部尽量匹配,对应情况 \(2\)。最后让剩下的奇数偶数之间匹配,对应情况 \(3\)。

标签:Prime,题解,质数,为奇,取反,偶数,ARC080F,情况,操作
From: https://www.cnblogs.com/FLY-lai/p/18124559

相关文章

  • 题解:P10234 [yLCPC2024] B. 找机厅
    题意简述给你一个长\(n\)宽\(m\)的\(01\)迷宫,从\((1,1)\)开始要走到\((n,m)\)。如果能走那么输出最短路和路径(路径用\(LRUD\)表示),否则输出\(-1\)。有\(t\)组数据。如果当前格子是\(0\)那么你只能走到\(1\)的格子,反之亦然。思路考虑使用\(BFS\),每次走......
  • AtCoder Beginner Contest 348 A-F 题解
    A-PenaltyKickQuestion高桥将在一场足球比赛中获得\(N\)个点球。对于第\(i\)个罚球,如果\(i\)是\(3\)的倍数,他将罚球失败,否则罚球成功。请打印他罚球的结果。Solution当\(i\%3==0\)时说明能被\(3\)整除Code#include<bits/stdc++.h>usingnamespacest......
  • SP30785的题解
    (一)树链剖分板子题。支持单点取反,区间查询。在线段树的每一个节点上分别记录全为\(1\)或全为\(0\)。代码挺好理解的。(二)AC代码。#include<bits/stdc++.h>usingnamespacestd;constintmxn=3e5+10;intn,q,head[mxn],cnt,id[mxn],cntt,fa[mxn],cnt1,son[mxn],siz[m......
  • 【蓝桥·算法双周赛 第 9 场 小白入门赛】字符迁移【算法赛】题解(字符串+模运算+差分)
    思路差分数组是一种特殊的数组,它的第iii个数定义为原数组的第ii......
  • 【蓝桥·算法双周赛 第 4 场 小白入门赛】自助餐【算法赛】题解(分支+字符串)
    思路首先定义一个整型变量n和一个长整型变量ans,其中n用于存放输入的字符串个数,ans则用于累计所有字符串对应的价格。在接收到n之后,进入一个循环,在循环中,每次接收一个字符串s,并根据s的首字母判断该字符串对应的餐盘种类,并将其价格累加到ans中。具体来说,如果......
  • newstart 部分题解和pwn相关的学习
    做newstart的pwnpieee题的pie的学习首先:对于pieee这道题很简单的栈溢出,除了NX其他的保护都开了,然后呢在左边也发现了后门函数相对偏移为0x1264(对于这里我们只用关心后三位,因为pie不会随机化地址的低12位,通俗点说就是我们十六进制地址的后三位)而一般而言后三位的地址能够确定我......
  • 【题解】洛谷马的遍历
    马的遍历方法:广度优先搜索源代码如下#include<iostream>#include<queue>#include<cstdio>#include<cstring>usingnamespacestd;structcoord{//结构体定义x,y坐标intx,y;};queue<coord>Q;intans[500][500];//-1代表未访问intwalk[8......
  • Leetcode 第 390 场周赛题解
    Leetcode第390场周赛题解Leetcode第390场周赛题解题目1:3090.每个字符最多出现两次的最长子字符串思路代码复杂度分析题目2:3091.执行操作使数据元素之和大于等于K思路代码复杂度分析题目3:3092.最高频率的ID思路代码复杂度分析题目4:3093.最长公共后缀查询思......
  • CF1361E James and the Chase 题解
    Description给定一个有\(n\)个点\(m\)条边的有向强连通图。称一个点是好的当且仅当它到其他点都有且只有一条简单路径。如果好的点至少有\(20\%\)则输出所有好的点,否则输出-1。单个测试点内有多组数据。\(1\leqT\leq2\times10^3,1\leqn\leq10^5,1\leqm\leq2\time......
  • 任务处理【华为OD机试】(JAVA&Python&C++&JS题解)
    一.题目-任务处理在某个项目中有多个任务(用tasks数组表示)需要您进行处理,其中tasks[i]=[si,ei],你可以在si<=day<=ei中的任意一天处理该任务。请返回你可以处理的最大任务数。注:一天可以完成一个任务的处理。输入描述:第一行为任务数量n,1<=n<=100000。后......