博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【贪心】Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) A. String Reconstruction
阅读量:6542 次
发布时间:2019-06-24

本文共 676 字,大约阅读时间需要 2 分钟。

在每个给出的子串的起始位置打个标记,记录的是从这里开始的最长子串。

然后输出的时候就扫,如果遇到开始位置,就从这里开始输出,如果其后被更长的覆盖,就跳转到更长的串进行输出。

如果位置没被覆盖,就输出'a'。

#include
#include
#include
#include
using namespace std;string s[100010];int n,m,p[2000010],len[100010],nn,now;void print(int x){ for(int i=x,j=0;j
>s[i]>>m; len[i]=s[i].length(); for(int j=1;j<=m;++j){ scanf("%d",&x); if(len[i]>len[p[x]]){ p[x]=i; nn=max(nn,x+len[i]-1); } } } for(int i=1;i<=nn;){ if(p[i]){ print(i); i=now+1; } else{ putchar('a'); ++i; } } puts(""); return 0;}

转载于:https://www.cnblogs.com/autsky-jadek/p/7154016.html

你可能感兴趣的文章
客户同步的脚本
查看>>
总结过去10年的程序员生涯
查看>>
ORACLE OC4J服务器不支持XFire webservices的解决方案
查看>>
ecshop 当前位置的问题
查看>>
快速排序及二分查询测试
查看>>
java下Class.forName的作用是什么,为什么要使用它
查看>>
Vagrant 入门及基于 Vagrant 的 LAMP 开发环境搭建
查看>>
LINQ 表达式树
查看>>
我的友情链接
查看>>
使用python监控memcached基本信息
查看>>
Exchange 分析器工具
查看>>
sql server 2012提示评估期已过的解决方法:
查看>>
【产品需求文档】添加新的运输/快递方式
查看>>
javascript 之 slice方法
查看>>
Azure实践系列 2:Azure AD中的用户管理
查看>>
MyEclipse的Web项目开发:Maven插件jetty服务器的关闭
查看>>
js 验证手机号码
查看>>
让搜索引擎快速收录网站
查看>>
我的友情链接
查看>>
虚拟机中安装Centos
查看>>