首页 > 其他分享 >[Codeforces] CF1705C Mark and His Unfinished Essay

[Codeforces] CF1705C Mark and His Unfinished Essay

时间:2023-11-24 20:46:20浏览次数:38  
标签:Essay His Unfinished int len st en long 字符串

题目传送门

题意

给定长度为 \(n\) 的字符串 \(s\),进行 \(c\) 次操作,每次操作将 \(s_l\) 到 \(s_r\) 复制到字符串尾。 全部操作结束后有 \(q\) 次询问,每次询问字符串 \(s\) 的第 \(k\) 位。

数据保证 \(r\) 不超过当前字符串长度,\(k\) 不超过最终字符串长度。

思路及分析

通过数据范围,我们可以很明显的察觉到这题的正解不是模拟

首先来画一幅图,这是模拟题目样例1中的复制后的字符串

再将其按照每次操作划分一下:

再来手玩一下样例,如果把第\(10\)个位置的产生过程标出来,就是如下:

不难发现,除非当前字母属于最初的字符串,否则他一定有一个复制前的位置与之对应。所以,如果要求出当前字母的位置,就要知道复制前与之对应的位置的字母

这个操作就很像一个递归操作,终止条件就是当前字母的位置已经在最初的字符串中了。

这种方法只需要存储每次分的段落的左右端点即可,每次递归寻找,时间复杂度\(O(qc^2)\)

代码

很明显,这题需要开\(long\space long\),但是不开的话会奇怪的TLE(别问我是怎么知道的

#include<bits/stdc++.h>
#define int long long
using namespace std;
struct node
{
	int l,r;
	int len;
	int st,en;
}a[50];
int n,c,q,len;
string s;

int find(int now,int turn)
{
	if(now<=n) return now;
	int t=(now-a[turn].st+1)+a[turn].l-1,i=1,cnt=n;
	while(a[i].en<t) i++;
//	cout<<"> "<<t<<" "<<i<<endl;
	return find(t,i);
}

int run()
{
	cin>>n>>c>>q>>s;
	a[0].l=1,a[0].r=n,a[0].st=1,a[0].en=n,a[0].len=n;
	for(int i=1;i<=c;i++)
	{
		cin>>a[i].l>>a[i].r;
		a[i].len=a[i].r-a[i].l+1;
		a[i].st=a[i-1].en+1,a[i].en=a[i].st+a[i].len-1;
	}
//	for(int i=1;i<=c;i++) cout<<a[i].st<<" "<<a[i].en<<" "<<a[i].len<<endl;
	while(q--)
	{
		int t,i=0;
		cin>>t;
		while(a[i].en<t) i++;
//		cout<<t<<" "<<i<<endl;
		cout<<s[find(t,i)-1]<<endl;
	}
}

signed main()
{
	int t;
	cin>>t;
	while(t--)
	{
		run();
	 } 
}

标签:Essay,His,Unfinished,int,len,st,en,long,字符串
From: https://www.cnblogs.com/lyk2010/p/17854720.html

相关文章

  • Java Runtime (class file version 61.0), this version of the Java Runtime only re
    转: https://blog.csdn.net/qq_26898033/article/details/1289155001错误信息org/springframework/boot/maven/BuildInfoMojohasbeencopiledbyamorerecentversionoftheJavaRuntime(classfileversion61.0),thisversionoftheJavaRuntimeonlyrecogniz......
  • uniapp开发[Vue warn]: Unhandled error during execution of scheduler flush. This
    如下,uniapp开发nvue页面报如下警告:15:30:25.079[Vuewarn]:Unhandlederrorduringexecutionofrenderfunctionat<UniGroupclass="w710cell_groupbg_whiteborder_radius16flex_row"top="10">at<Index__pageId=1__pagePath="pages/g......
  • CodeWhisperer 体验总结
    CodeWhisperer体验总结|CodeWhisperer是一款亚马逊新推出的通用代码生成器可以实时进行代码数据的提供还可以定义安全问题CodeWhisperer对个人用户是免费使用企业用户需要订阅使用亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、......
  • This application requires a java runtime environment 1.6.0
    解决Thisapplicationrequiresajavaruntimeenvironment1.6.0问题描述在安装ptolemyII的时候,提示我没有java运行环境。但是实际上作为jvm的hn,我电脑上就有各种版本的jdk,什么环境变量、java-version都保证没问题,别的软件也能运行,就它不行问题解决jdk是通过解压而后设......
  • CF1705C Mark and His Unfinished Essay
    MarkandHisUnfinishedEssay题目传送门题意给定长度为$n$的字符串$s$,进行$c$次操作,每次操作将$s_l$到$s_r$复制到字符串尾。全部操作结束后有$q$次询问,每次询问字符串$s$的第$k$位。数据保证$r$不超过当前字符串长度,$k$不超过最终字符串长度。思路及分......
  • 埃森哲使用 Amazon CodeWhisperer 助力开发人员提高工作效率
    AmazonCodeWhisperer是一款AI编程助手,可根据开发人员使用自然语言编写的注释和IDE(集成开发环境)中的代码生成建议,帮助开发人员提高工作效率。借助CodeWhisperer,开发人员无需在IDE与文档或开发者论坛之间切换,加快编码过程。通过CodeWhisperer的实时代码建议,开发人员可以在......
  • Grafana学习(5)——Introduction to histograms and heatmaps
    Ahistogramisagraphicalrepresentationofthedistributionofnumericaldata.Itgroupsvaluesintobuckets(sometimesalsocalledbins)andthencountshowmanyvaluesfallintoeachbucket.Insteadofgraphingtheactualvalues,histogramsgraphthe......
  • 【Java】乡镇卫生院、社区卫生服务中心云HIS源码
    云HIS采用云端SaaS服务的方式提供,用户通过浏览器即能访问,无需关注系统的部署、维护、升级等问题,系统充分考虑了模板化、配置化、智能化、扩展化等设计方法,覆盖了基层医院机构的主要工作流程,能够与监管系统有序对接,并能满足系统后期扩展的需要。一、医保数据上传医保数据上传是将......
  • CodeWhisperer 一款好玩的 AI 插件
    忙里抽闲,今天试了试CodeWhisperer这款插件,我是在IDEA中做的测试,下面是我的一些使用感想: 安装CodeWhisperer插件:在IntelliJIDEA中,可以通过插件管理器安装CodeWhisperer插件,然后在项目中右键单击Java文件,选择CodeWhisperer菜单,打开CodeWhisperer窗口。编写测......
  • 【略读论文|时序知识图谱补全】Temporal Knowledge Graph Reasoning with Historical
    会议:AAAI,时间:2023,学校:上海交通大学摘要:大多数时序知识图谱的推理方法高度依赖于事件的递归或周期性,这给推断与缺乏历史交互的实体相关的未来事件带来了挑战。本文提出一种新的基于历史对比学习训练框架的对比事件网络(CENET)的新事件预测模型。1.CENET学习历史和非历史依赖来区......