Atcoder Dwango Programming Contest V C - k-DMC

本文详细解析了C-k-DMC算法,这是一种用于计算字符串中特定字符组合出现次数的算法,尤其适用于处理大规模数据集。文章通过几个示例说明了如何在限定长度内寻找特定字符序列,同时提供了高效的实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C - k-DMC

 

Time Limit: 2.525 sec / Memory Limit: 1024 MB

Score : 600600 points

Problem Statement

In Dwango Co., Ltd., there is a content distribution system named 'Dwango Media Cluster', and it is called 'DMC' for short.
The name 'DMC' sounds cool for Niwango-kun, so he starts to define DMC-ness of a string.

Given a string SS of length NN and an integer kk (k≥3)(k≥3), he defines the kk-DMC number of SS as the number of triples (a,b,c)(a,b,c) of integers that satisfy the following conditions:

  • 0a<b<cN−10≤a<b<c≤N−1
  • S[a]S[a] = D
  • S[b]S[b] = M
  • S[c]S[c] = C
  • ca<kc−a<k

Here S[a]S[a] is the aa-th character of the string SS. Indexing is zero-based, that is, 0aN−10≤a≤N−1 holds.

For a string SS and QQ integers k0,k1,...,kQ−1k0,k1,...,kQ−1, calculate the kiki-DMC number of SS for each ii (0iQ−1)(0≤i≤Q−1).

Constraints

  • 3N≤1063≤N≤106
  • SS consists of uppercase English letters
  • 1Q≤751≤Q≤75
  • 3kiN3≤ki≤N
  • All numbers given in input are integers

 

Input

Input is given from Standard Input in the following format:

NNSSQQk0k0 k1k1 ...... kQ−1kQ−1

Output

Print QQ lines. The ii-th line should contain the kiki-DMC number of the string SS.

 

Sample Input 1 Copy

Copy

18

DWANGOMEDIACLUSTER

1

18

Sample Output 1 Copy

Copy

1

(a,b,c)=(0,6,11)(a,b,c)=(0,6,11) satisfies the conditions.
Strangely, Dwango Media Cluster does not have so much DMC-ness by his definition.

 

Sample Input 2 Copy

Copy

18

DDDDDDMMMMMCCCCCCC

1

18

Sample Output 2 Copy

Copy

210

The number of triples can be calculated as 6×5×76×5×7.

 

Sample Input 3 Copy

Copy

54

DIALUPWIDEAREANETWORKGAMINGOPERATIONCORPORATIONLIMITED

3

20 30 40

Sample Output 3 Copy

Copy

0

1

2

(a,b,c)=(0,23,36),(8,23,36)(a,b,c)=(0,23,36),(8,23,36) satisfy the conditions except the last one, namely, ca<kic−a<ki.
By the way, DWANGO is an acronym for "Dial-up Wide Area Network Gaming Operation".

 

Sample Output 4 Copy

Copy

30

DMCDMCDMCDMCDMCDMCDMCDMCDMCDMC

4

5 10 15 20

Sample Output 4 Copy

Copy

10

52

110

140

解题报告:本题用暴力枚举是肯定超时的,有三重循环左右,本来打算用二分,结果还是不好实现。仔细观察一下发现了规律,以K长度为滑动窗口向后动,分别记录D,M,DM的数量。如果一个D要脱离滑动窗口,那么与DM就会少M的个数,DMC的数量不影响,因为可看做之前那个时刻的数量,所以只要动态增删D,M的数量控制DM的数量,然后遇到C直接加上DM的数量即可。这个过程应该分治来解决。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
	LL n,a[1000]={0},q;
	 string s;
	 cin>>n;
	 cin>>s;
	 cin>>q;
	 while(q--)
	 {LL DMnum=0,Dnum=0,Mnum=0,DMCnum=0,k;
	 cin>>k;
	 	  for(LL i=0;i<s.length();i++)
	  {if(i-k>=0&&s[i-k]=='D')
		   {
		   	Dnum--;
		   	DMnum-=Mnum;
		   }
		   if(i-k>=0&&s[i-k]=='M')
		   {
		   	Mnum--;
		   	
		   }
		   
	  	 if(s[i]=='D')Dnum++;
	  	 if(s[i]=='M')
	  	 {
	  	 	Mnum++;
	  	 	DMnum+=Dnum;
		   }
		   if(s[i]=='C')
		   {
		   	DMCnum+=DMnum;
		   }
		   
	  	 
	  }
	  cout<<DMCnum<<"\n";
	 }
	
}
资源下载链接为: https://pan.quark.cn/s/d0b0340d5318 Cartopy安装所需包分为两个部分,分别需要下载。以下是下载链接和建议的操作步骤: Cartopy安装所需包2:Cartopy安装所需包2.rar 安装教程:Cartopy安装教程之pip篇 下载文件: 首先,分别下载上述两个链接中的文件。第一个链接包含了Cartopy安装所需的包(部分),第二个链接是详细的安装教程。 建议将下载的文件解压后,统一放在一个路径下,例如命名为“Cartopy安装文件”的文件夹,方便后续操作。 参考安装教程: 安装教程详细介绍了通过pip安装Cartopy的步骤,包括环境变量设置、下载必要安装包、安装过程以及测试。 根据教程,需要安装的依赖包包括numpy、pyshp、Shapely、pyproj、Pillow等,教程中还提供了针对Windows系统的预编译版本下载链接。 安装过程中可能会遇到缺少pykdtree和scipy模块的情况,教程也提供了相应的解决方法。 安装注意事项: 确保Python环境变量已正确设置,可通过命令行输入python --version来验证。 安装Wheel工具,用于安装.whl文件。 按照教程中的命令依次安装各个依赖包,注意版本号需与Python版本匹配。 如果遇到缺少模块的错误,按照教程中的方法进行安装。 通过以上步骤,可以顺利完成Cartopy的安装。如果在安装过程中遇到问题,可以参考安装教程中的详细说明或在相关社区寻求帮助。
资源下载链接为: https://pan.quark.cn/s/dab15056c6a5 《Isight教程——Isight参数优化理论与实例详解》是一本专注于Isight软件在参数优化领域的专业书籍,非常适合初学者。Isight是一款功能强大的多学科优化工具,广泛应用于工程设计、仿真分析和决策支持。它能够有效管理复杂系统模型,实现多目标优化,并在不同工程领域高效整合数据。 本书内容分为两大部分:参数优化理论和实际应用案例。在理论部分,读者将学习如何构建优化问题的数学模型,包括设定目标函数和约束条件。优化算法是解决问题的关键,Isight支持多种算法,如梯度法、无梯度法、遗传算法、模拟退火等,每种算法都有其适用场景和优势。理解这些算法的工作原理和优缺点,有助于选择合适的策略解决实际问题。 在实例部分,通过详细步骤解析,展示了如何在Isight中实现这些理论。每个章节的Isight源码都对应一个具体的工程问题,涵盖机械设计、流体动力学、结构力学等多个领域。通过实际操作,读者可以掌握模型导入、接口配置、优化设置以及结果后处理等关键步骤。此外,读者还将学会如何利用Isight的图形用户界面(GUI)或脚本语言(如Python或Matlab)来定制化工作流程,提高工作效率。每个源码文件都包含了模型输入、优化参数、求解器设置和结果输出等内容,通过对这些代码的学习和实践,读者可以深入理解Isight如何将理论知识转化为实际的工程解决方案。 教程还强调了Isight与其他软件的集成能力,例如与ANSYS、ABAQUS、Comsol等常用工程仿真软件的接口。这种跨软件的协同工作方式使得数据交换和模型联动更加便捷,对于现代工程设计至关重要,因为它允许工程师在一个统一的平台上管理整个项目的优化流程。 《Isight教程——Isight参数优化理论与实例详解》是一本全面且实用的学习资源。它不仅提
资源下载链接为: https://pan.quark.cn/s/7cc20f916fe3 在电商领域,网站模板是搭建在线商店的高效且经济的方式。这些模板集成了预设计的页面布局、色彩搭配、图形元素和交互功能,能帮助开发者或非专业人士快速搭建出专业外观的电商平台。"电商网站模板40多套"提供了丰富选择,满足不同商家和个人的需求,无论是简约、时尚还是传统风格的设计都能找到。 设计风格多样:40多套模板覆盖了多种设计风格,如极简主义、扁平化、响应式布局,以及针对时尚、家居、电子产品等特定行业的定制模板。每套模板通常包含主页、产品展示页、购物车、用户登录/注册、订单处理、关于我们等常见页面。 响应式布局:在移动设备普及的当下,响应式设计是关键。这些模板能够自动适配不同屏幕,尺寸确保在手机、平板和桌面电脑上都能提供良好的用户体验。 优化用户体验:优质的电商模板会注重用户体验,例如清晰的产品图片展示、简洁的导航菜单、便捷的搜索功能、直观的购物车和结账流程等,从而提高转化率和销售额。 集成内容管理系统:这些模板通常与流行的CMS系统(如WordPress、Shopify、Magento等)兼容,方便用户管理商品、订单和客户数据。 SEO友好:电商模板会考虑搜索引擎优化,包括合理的HTML结构、优化的元标签和友好的URL,以提升网站在搜索引擎结果中的排名。 可定制性:虽然模板提供了预配置设计,但同时也允许一定程度的自定义,比如调整颜色、字体、添加自定义代码等,以满足用户的独特需求。 安全性:电商模板需要遵循安全标准,例如使用HTTPS加密、集成安全支付网关,以保护用户数据和交易安全。 多语言支持:对于面向多语言市场的商家,模板应支持多语言切换,方便不同地区的用户访问。 插件和扩展:模板可能预装了实用插件,如评价系统、优惠券管理、邮件订阅等,也可能提供扩展接口,方便用户添加更多功能。 技术支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值