codeforces582C. Superior Periodic Subarrays

工业异常检测评价指标(I-AUROC、PRO等) 模型评价指标:TPR、FPR、Recall、ROC、AUC、AUROC、IoU、PRO、AUPRO等 阅读详情

传送门:http://codeforces.com/problemset/problem/582/C

思路:首先观察题目条件,对于一个数a[i]能出现在“Superior Periodic Subarrays”


首先它要满足对于任意k属于N,a[i]>=a[i+k*n]

并且对于任意k属于N,a[i]>=a[i+k*s]

那么就是任意k属于N,a[i]>=a[i+k*d](d=gcd(s,n))

也就是a[i]是这些数中的最大值


于是我们枚举d=gcd(s,n)

显然d整除n

再求出f[i]表示以i结尾的最长“Superior Periodic Subarrays”长度

再记 cnt[i]表示1-i中有多少个j满足gcd(j,n)==d(可以改为gcd(j/d,n/d)==1)

那么这次对答案的贡献就是cnt[f[i]]

累加起来即可。

#include<cstdio>
#include<cstring>
#include<algorithm>
const int maxn=400010; 
typedef long long ll;
using namespace std;
int n,f[maxn],a[maxn],g[maxn],cnt[maxn];ll ans;bool bo[maxn];

int gcd(int a,int b){return !b?a:gcd(b,a%b);}

int main(){
	scanf("%d",&n);
	for (int i=0;i<n;i++) scanf("%d",&a[i]),a[i+n]=a[i];
	for (int d=1;d<n;d++){//枚举GCD(n,s)
		if (n%d==0){
			memset(bo,0,sizeof(bo));
			for (int k=0;k<d;k++){//枚举起点
				g[k]=0;
				for (int i=k;i<(n<<1);i+=d) g[k]=max(g[k],a[i]);//找出这些相隔为d的数之间最大的数
				for (int i=k;i<(n<<1);i+=d) if (a[i]==g[k]) bo[i]=1;//如果一个数是这些数中最大的才可能在子数列中 
			}
			f[0]=bo[0];//以i结尾的"卓越子序列"最长可能长度 
			for (int i=1;i<(n<<1);i++){
				if (bo[i]) f[i]=f[i-1]+1;else f[i]=0;
				f[i]=min(f[i],n-1);
			}
			cnt[0]=0;//1-i中有多少个数与n的gcd为枚举的d 
			for (int i=1;i<(n/d);i++) cnt[i]=cnt[i-1]+(gcd(i,n/d)==1);//要把Gcd(s,n)==d化简成gcd(s/d,n/d)==1,不然会被卡 
			for (int i=n;i<(n<<1);i++) ans+=cnt[f[i]/d];
			/*for (int i=1;i<n;i++) cnt[i]=cnt[i-1]+(gcd(i,n)==d);
			for (int i=n;i<(n<<1);i++) ans+=cnt[f[i]];*/
		}
	}
	printf("%I64d\n",ans);
	return 0;
}
/*
180
7 6 5 10 3 2 7 3 5 8 8 10 7 6 5 10 3 2 7 3 5 8 8 10 7 6 5 10 1 2 7 3 5 8 1 10 7 6 5 10 3 2 7 3 1 8 8 10 7 6 5 10 3 1 7 3 1 8 8 10 7 6 5 10 3 2 7 1 5 8 8 10 7 6 5 10 3 2 7 3 5 8 8 10 7 6 5 10 3 2 7 3 5 8 8 10 7 6 5 10 3 2 7 3 5 8 8 10 7 6 5 10 3 2 7 3 5 8 8 10 7 6 5 10 1 1 7 3 5 8 8 10 7 6 5 10 3 2 7 3 5 8 8 10 7 6 5 10 3 2 7 3 5 8 8 10 1 6 5 10 3 2 7 3 5 8 1 10 7 6 5 10 3 2 7 3 5 8 8 10

255
*/



在Ubuntu 20.04上,用EtherCAT Igh 1.6.2驱动高创BD3E伺服电机(附完整C代码) 本文详细介绍了在Ubuntu 20.04实时内核环境下,使用EtherCAT Igh 1.6.2主站驱动高创BD3E伺服电机的完整实现方案。从实时系统配置、伺服电机PDO映射到精确控制线程设计,提供了完整的C代码样例和实际项目中的调试技巧,帮助开发者实现工业自动化中的高精度运动控制。 阅读详情

相关推荐

对话系统简介

《文本上的算法》学习笔记1、问答型1.1、基于语义分析的方法1.2、基于信息抽取的方法1.3、端对端的方法2、任务型2.1、生成式模型( Generative Model )2.2、判别式模型( Discrimitive Model )2.3、规则系统3、闲聊型3.1、规则方法3.2、生成模型3.3、检索方法 个人认为NLP领域最难的方向可以说是阅读理解与文本生成/摘要,而对话系统,尤其是闲聊常常...

盘一哈nlp 6752

服务器永葆生机:进程守护、监控告警与自动化运维实战指南

在分布式系统与云计算架构中,服务器稳定性是保障业务连续性的基石。其核心原理在于通过系统级守护机制确保关键服务进程异常退出后能自动重启,并结合资源监控体系实时采集CPU、内存、磁盘及网络等关键指标,实现故障预警与性能瓶颈预测。从技术价值看,这不仅能极大提升系统可用性与韧性,还能通过自动化运维降低人工干预成本,是构建高可用服务架构的关键实践。典型应用场景包括Web服务器、数据库服务器及微服务集群等需要7x24小时不间断运行的在线业务。本文聚焦于**进程守护**与**资源监控**两大核心维度,通过Systemd、

weixin_33912638的博客 467

逆向分析顶象5代各类验证码类型的图片还原方法(附源码)

6.刷新滑块验证码图片,会进入之前的for循环断点,分析此处的代码会发现,该循环循环了处理了n字符串的值,取出n字符中的值并使用charCodeAt生成Unicode 编码,然后又调用了a函数,如果a函数返回true就会把之前生成的Unicode编码+1,a函数参数分别是c数组和Unicode取余32后的值,然后再把Unicode取余32后的值push进c数组,这里的n值为滑块碎片背景图的name。2.搜索"ranges":,会找到ranges赋值的地方,在此处代码断点,并点击跳过断点,结束此次调试。

老衲爱洗头的博客 1195

CodeForces - 582C Superior Periodic Subarrays(数论&计数)

CodeForces - 582C Superior Periodic Subarrays(数论&amp;计数) 题目大意 给出一段纯循环序列a,循环节的长度为n.求有多少对数对(l,s)总是满足以s为循环节,循环节中数字为al,al+1..al+s−1a_l,a_{l+1}..a_{l+s-1}al​,al+1​..al+s−1​的序列设为b使得总是有bi−l+1≥aib_{i-l+1}\ge ...

FLY_WHITE的博客 342

Xilinx平台SRIO介绍(二)SRIO IP核基础知识

使用SRIO IP核必须掌握的基础知识! 理解了这篇,剩下的只是代码罢了。

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 4万+

基于 Spring Cloud 环境污染物数据分析与预测平台

基于 Spring Cloud 环境污染物数据分析与预测平台

934

Codeforces Round #323 (Div. 1) C. Superior Periodic Subarrays

每个i位置对于某个s,会支配所有x mod len = i mod len的位置,其中x是[l+j]*s。 举个例子 n=3,s=2,则a[1]≥a[1],a[2],a[3]:1 2 3 1 2 31 2 1 2 1 2n=3,s=2,则a[1]\geq a[1],a[2],a[3]:\\ 1\ 2\ 3\ 1\ 2\ 3\\1\ 2\ 1\ 2\ 1\ 2 n=4,s=2,则a[1]≥a[

Mr.Phoebe的专栏 985

学Simulink--机器人基础关节控制场景实例:基于Simulink的无刷直流电机(BLDC)关节六步换相位置控制仿真

本文详细介绍了基于Simulink的BLDC六步换相位置控制仿真方法,针对机器人关节的低成本控制需求。重点阐述了霍尔定位、六步换相和位置闭环三大核心原理,通过Simulink建模实现了从霍尔信号处理到位置环控制的全流程。仿真结果表明,该系统可实现0.3°的定位精度和80ms的响应时间,满足教育机器人等应用场景需求。文章还提供了核心代码模块和参数设置方法,并探讨了转矩脉动抑制、无传感器控制等进阶优化方向,为低成本机器人关节驱动提供了实用解决方案。

amy_mhd的博客 152

别再只仿真了!聊聊DMTD相位测量在5G基站时钟同步里的真实挑战

本文探讨了DMTD相位测量技术在5G基站时钟同步中的实际应用挑战,从仿真到真实部署的工程化难题。分析了时钟抖动、FPGA资源优化、长时测量数据处理等关键问题,并提供了硬件选型和系统集成的实用解决方案,帮助工程师跨越理论与实践的鸿沟。

weixin_30460489的博客 669

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

1589

华为od 面试八股文_测试/测试开发_05_含答案

华为od 面试八股文_测试/测试开发_05_含答案

MISAYAONE的博客 2556

Codeforces 582C Superior Periodic Subarrays

1. a[i] == a[i+k*n] 2. a[i] >= a[i+k*s] => a[i] >= a[i+k*g] ( g = gcd(n, s) ) 枚举g, 当一个子序列合法时,当且仅当序列中的每一个数为它所在环中的最大值。 枚举位置i,得到关于i为终点的最长合法子序列。 枚举长度s,每一个小于等于s的长度l对s的贡献为1,当且仅当gcd(n, s) == g 再次枚举

Tooc0ld 315

如何正确理解和获取S参数

差分四端口的S参数是由双端口S参数逐步演化而来,因此,在数学中,其各分量均可以从单端S参数推导而来,在实际的仿真和测试中,软件和测量设备也是通过获取单端S参数矩阵再进行运算得到混合S参数矩阵的,并非直接获取。

一只豌豆象的博客 5150

游戏系统设计重构:从“噩梦模式”到健康体验的技术实践

在软件工程与游戏开发中,系统设计常面临挑战性与用户体验的平衡问题。其核心原理在于通过合理的规则设计、数值策划与反馈机制,构建可持续的用户参与循环。技术价值体现在提升系统的可维护性、可扩展性及用户留存率。应用场景广泛覆盖游戏功能模块、电商促销活动、社交互动机制等需要用户深度参与的系统。本文聚焦于常被开发者称为“噩梦模式”的高难度设计,通过具体案例剖析其常见陷阱,如概率黑盒与失败惩罚过重等问题,并给出重构方案与工程实践,旨在将负面反馈转化为可落地的优化路径。

weixin_33858485的博客 381

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Codeforces 582C. Superior Periodic Subarrays(数学+计数)

  首先可以把 i mod n=j mod n的看成是同一类,i mod s=j mod s的也看成是同一类,也就是i mod gcd(s,n)的是同一类,很好理解,但是不会数学证明...大概可以想成数轴上一点可以向左向右跳s或n,根据错位相消能互达的两点最小距离为gcd(s,n),所以如果选择点i必须满足a(i)>=a(i+k*gcd(s, n))。   于是可以枚举d表示gcd(s, ...

weixin_30258901的博客 112

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...

Leetcode 1630. Arithmetic Subarrays(易于理解的解法)

Leetcode 1630. Arithmetic Subarrays 题目链接: Arithmetic Subarrays 难度:Medium 题目大意: 根据题目要求构建子数组,判断子数组是否是Arithmetic数组。 思路: 写一个函数来判断一个数组是否是Arithmetic数组。然后按照题目要求依次构造子数组,进行判断即可。 代码 class Solution { public List<Boolean> checkArithmeticSubarrays(int[] nums

xue1236的博客 320

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C. Good Subarrays(老套路思维了)

吐槽一句:这种题型遇到过好多次 几乎每一次都是枚举区间开头位置计算结果 区间长度每增加1就需要一个0进来抵消区间长度每增加1就需要一个0进来抵消区间长度每增加1就需要一个0进来抵消 当数字为1时,加不加这个1无所谓,加入这个1,区间长度加1,值也加1当数字为1时,加不加这个1无所谓,加入这个1,区间长度加1,值也加1当数字为1时,加不加这个1无所谓,加入这个1,区间长度加1,值也加1 当数字为2时,如果假如这个2,区间长度加1,值加2,此时需要有0来填充当数字为2时,如果假如这个2,区间长度加1,值加2,

jziwjxjd的博客 1348

Continuous Subarray Sum

本次題目是有關於動態規劃的應用,Continuous Subarray Sum,題目的大致要求如下: Given a list of non-negative numbers and a target integer k, write a function to check if the array has a continuous subarray of size at least 2

louiewu的博客 310

C. Good Subarrays(思维+前缀和)好题啊

codeforces Educational Codeforces Round 93 (Rated for Div. 2) 题意:求n长度数组中区间和和为区间长度的区间个数。 思路分析:首先想到用前缀和优化,如果直接前缀和判断每一个区间,时间复杂度为O(n*n),果不其然超时了。如果我们将数组中所有元素都-1,那么问题就简单了不少,符合条件的区间和为0。问题转换为求区间和为0的区间个数,就可以开始整活了。 我们首先维护一个map<int,int> M; M[sum[i]]表示目前第i个元素为止

weixin_45756956的博客 387

bzoj3141: [Hnoi2013]旅行

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3141 思路:一道杂技题....证明杂技,写的也杂技,13年最神的题 首先有一个结论 设S为+1和-1的总和,记sum为后缀和(为什么是后缀?因为做的时候要判后面是还否有解) 如果S!=0,那么ans=ceil(S/m) 否则如果sum[i]==0的个数>=m则为0,否则为1 证明

thy的专栏 1294

ubuntu下对拍

#!bin/bash while true; do ./gen ./std ./xx if diff test.out test.ans;then echo AC else echo WA exit 0 fi done 其中gen是数据生成器,std是标程,xx是要对拍的程序,要写文件读入输出

thy的专栏 1193

bzoj2728: [HNOI2012]与非

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2728 思路:首先我们要玩出nand的性质 nand可以表示出所有逻辑运算 not a=a nand a a and b=not (a nand b) .... 这题另一个性质就是如果a[1]~a[n]的所有数第i位和第j位相同,那么nand出来的数第i位和第j位也相同

thy的专栏 1183

bzoj3573: [Hnoi2014]米特运输

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3573 思路:语文题... 正常题意: 给定一棵树和每个点的权值,问最少改动多少个点的权值使得: 1.每个点的所有儿子权值相等 2.每个点的权值等于所有儿子权值和 既然有这两个条件,那我们确定一个点的权值就确定了整棵树所有点的权值。 枚举每个点不变,算出根节点的权值,选出

thy的专栏 885

codeforces 573C. Bear and Drawing

传送门:http://codeforces.com/problemset/problem/573/c 思路:见官方题解。。。 #include #include #include #include const int maxn=100010; using namespace std; int n,leg[maxn];bool del[maxn]; vector w[maxn];

thy的专栏 738

hdu contest day1 1001 OO’s Sequence

传送门:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1001&cid=589 思路:超级大暴力:枚举l,r,暴力判断每个数,复杂度O(n^4)爆炸了 那么枚举l,r肯定不行了。 换个思路,判断每个数对多少个区间产生了贡献 对于第i个数a[i],我们分别往左和往右找到第一个约数,他们的位置分别为j-1,k+1 那么a

thy的专栏 358
上一篇: codeforces585D. Lizard Era: Beginning
下一篇: bzoj1063: [Noi2008]道路设计
thy_asdf
博客等级 码龄12年 16粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值