【组合数学算贡献+枚举】CF816div2 C. Monoblock

news/2024/12/12 6:31:19/

题解都看了半天才懂

Problem - C - Codeforces

题意:

 

思路:

一开始的思路是这样的:

 

只能说,想到了更换枚举对象,然后组合数学算贡献

也想到了修改操作与(a[i]和a[i-1])有关

但是我想的是枚举区间长度,然后对于每个长度len计算贡献

对于相邻的len-1和len,贡献能不能O(1)或O(logn)计算

事实上枚举的对象都错了

应该去枚举的是每个端点包含的所有区间的贡献

先去考虑怎么计算初始价值

如果a[i]!=a[i-1],那么加上i左边的所有端点1~i对应的所有区间贡献都,即+=i

否则总贡献就加上[i,i]这个区间对应的贡献,即+1

然后去考虑每次修改对总贡献的影响

Code:

#include <bits/stdc++.h>#define int long longusing namespace std;const int mxn=2e5+10;int N,Q,x,y;
int a[mxn];void solve(){cin>>N>>Q;for(int i=1;i<=N;i++) cin>>a[i];a[0]=-1;int ans=1,sum=1;for(int i=2;i<=N;i++){sum+=(a[i]==a[i-1])?1:i;ans+=sum;}while(Q--){cin>>x>>y;if(a[x]==y){cout<<ans<<'\n';continue;}if(y==a[x-1]){ans-=(x-1)*(N-x+1);}else if(a[x]==a[x-1]){ans+=(x-1)*(N-x+1);}if(y==a[x+1]){ans-=x*(N-x);}else if(a[x]==a[x+1]){ans+=x*(N-x);}a[x]=y;cout<<ans<<'\n';}
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;while(__--)solve();return 0;
}

 


http://www.ppmy.cn/news/60818.html

相关文章

抽象工厂模式

抽象工厂模式 抽象工厂模式定义使用场景需求背景1. 首先定义抽象工厂接口2. 定义汽车工厂和服装工厂,并实现了抽象工厂接口3. 定义汽车和服装的具体实现类4. 使用示例5. 输出结果6. 小结 抽象工厂模式定义 为创建一组相关或相互依赖的对象提供一个接口&#xff0c;而且无须指定…

Unity-ML-Agents-Food Collector环境-FoodCollectorSettings.cs

Recording Statistics&#xff1a;https://github.com/Unity-Technologies/ml-agents/blob/release_19/docs/Learning-Environment-Design.md#recording-statistics 环境链接&#xff1a;https://github.com/Unity-Technologies/ml-agents/tree/release_19/Project/Assets/ML-…

如何在微服务下保证事务的一致性

背景 随着业务的快速发展、业务复杂度越来越高&#xff0c;传统单体应用逐渐暴露出了一些问题&#xff0c;例如开发效率低、可维护性差、架构扩展性差、部署不灵活、健壮性差等等。而微服务架构是将单个服务拆分成一系列小服务&#xff0c;且这些小服务都拥有独立的进程&#…

encrypted勒索病毒攻击nas服务器,服务器中了勒索病毒解密数据恢复

近年来&#xff0c;勒索病毒的攻击技术不断升级&#xff0c;各种加密型的病毒不断出现&#xff0c;给我们工作和生活带来了很大困扰。其中&#xff0c;encrypted勒索病毒攻击NAS网络存储设备已经变得越来越常见。而这次我们将为大家探讨如何预防encrypted勒索病毒攻击NAS服务器…

通过实现MyBatis的Interceptor接口在SQL头部增加统一注释

背景 从事运维或DBA工作的童鞋会非常熟悉在SQL前部增加注释的操作。类似如下的SQL&#xff1a; /* appUk:[testapp];host ip:[192.168.1.111];traceId:[dcb7f7a0cbe72817];spanId[dcb7f7a0cbe72817] */ INSERT INTO test_table ( project_id, tenant, c_project_id, g_ra_typ…

ASP.NET Core Web API用户身份验证

一、JWT介绍 ASP.NET Core Web API用户身份验证的方法有很多&#xff0c;本文只介绍JWT方法。JWT实现了服务端无状态&#xff0c;在分布式服务、会话一致性、单点登录等方面凸显优势&#xff0c;不占用服务端资源。简单来说&#xff0c;JWT的验证过程如下所示&#xff1a; &a…

如何从0到1落地自动化测试?何为成熟模型?测试老鸟的总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 过去十年&#xf…

代码随想录算法训练营第五十天| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

文章目录 123.买卖股票的最佳时机III188.买卖股票的最佳时机IV:star: 123.买卖股票的最佳时机III 至多买卖两次 分清楚动态规划所有状态至关重要&#xff0c;这是求dp数组的前提 和之前买卖股票问题解题思路相似&#xff0c;只是多增加了第二天的状态 总结&#xff1a;买卖股票…