当前位置: 首页 > news >正文

Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) C. String Reconstruction 并查集

C. String Reconstruction

题目连接:

http://codeforces.com/contest/828/problem/C

Description

Ivan had string s consisting of small English letters. However, his friend Julia decided to make fun of him and hid the string s. Ivan preferred making a new string to finding the old one.

Ivan knows some information about the string s. Namely, he remembers, that string ti occurs in string s at least ki times or more, he also remembers exactly ki positions where the string ti occurs in string s: these positions are xi, 1, xi, 2, ..., xi, ki. He remembers n such strings ti.

You are to reconstruct lexicographically minimal string s such that it fits all the information Ivan remembers. Strings ti and string s consist of small English letters only.

Input

The first line contains single integer n (1 ≤ n ≤ 105) — the number of strings Ivan remembers.

The next n lines contain information about the strings. The i-th of these lines contains non-empty string ti, then positive integer ki, which equal to the number of times the string ti occurs in string s, and then ki distinct positive integers xi, 1, xi, 2, ..., xi, ki in increasing order — positions, in which occurrences of the string ti in the string s start. It is guaranteed that the sum of lengths of strings ti doesn't exceed 106, 1 ≤ xi, j ≤ 106, 1 ≤ ki ≤ 106, and the sum of all ki doesn't exceed 106. The strings ti can coincide.

Output

Print lexicographically minimal string that fits all the information Ivan remembers.

Sample Input

3
a 4 1 3 5 7
ab 2 1 5
ca 1 4

Sample Output

abacaba

Hint

题意

给n个字符串,告诉你有n个位置的是这个字符串的开始,然后让你输出最后字符串的样子。

题解:

由于显然每个位置的字符是唯一的,换句话而言,就是每个位置我们都只用访问一次就够了,没必要重复的进行访问。

我们用并查集去维护这个就好了。

代码

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
const int maxn = 2e6+7;
int fa[maxn];
int ans[maxn];
int fi(int x){
    return x==fa[x]?x:fa[x]=fi(fa[x]);
}
int n,mx=0;
string s;
int main(){
    scanf("%d",&n);
    for(int i=0;i<maxn;i++)fa[i]=i;
    int mx = 0;
    for(int i=0;i<n;i++){
        cin>>s;
        int k;
        scanf("%d",&k);
        for(int j=0;j<k;j++){
            int x;
            scanf("%d",&x);
            int st=x;
            int end=x+s.size();
            mx=max(mx,end);
            x=fi(x);
            while(x<end){
                ans[x]=s[x-st]-'a';
                int x2=fi(fi(x)+1);
                fa[fi(x)]=x2;
                x=x2;
            }
        }
    }
    for(int i=1;i<mx;i++)
        cout<<char(ans[i]+'a');
    cout<<endl;
}

转载于:https://www.cnblogs.com/qscqesze/p/7189946.html

相关文章:

  • STC15F2K60S2与USART HMI串口屏之间的通信
  • 关于JAVA中包装类的是什么类型传递这个问题的笔记
  • 【洛谷1607】【USACO09FEB】庙会班车
  • 搭建wordpress-安装xshell
  • python基础2
  • POJ 1830 开关问题(高斯消元求解的情况)
  • Python3的一些基本输入输出
  • 公有属性 公有方法(原型方法) 私有属性 私有方法 特权方法 静态属性 静态方法 对象字面量创建...
  • angularJS指令
  • 头文件assert.h
  • 后台运行命令:amp;和nohup command amp; 以及关闭、查看后台任务
  • 进程间通信之-信号signal--linux内核剖析(九)
  • 入门之快速排序
  • 基于.NET CORE微服务框架 -谈谈surging的服务容错降级
  • Vue框架 周期
  • “大数据应用场景”之隔壁老王(连载四)
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JavaScript 基础知识 - 入门篇(一)
  • Java-详解HashMap
  • Mac转Windows的拯救指南
  • Magento 1.x 中文订单打印乱码
  • Netty源码解析1-Buffer
  • SegmentFault 2015 Top Rank
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 从输入URL到页面加载发生了什么
  • 分享一份非常强势的Android面试题
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 我的zsh配置, 2019最新方案
  • 详解NodeJs流之一
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • Hibernate主键生成策略及选择
  • MPAndroidChart 教程:Y轴 YAxis
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​MySQL主从复制一致性检测
  • ###C语言程序设计-----C语言学习(3)#
  • #{}和${}的区别是什么 -- java面试
  • #pragma预处理命令
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (vue)页面文件上传获取:action地址
  • (独孤九剑)--文件系统
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .dwp和.webpart的区别
  • .gitattributes 文件
  • .gitignore文件_Git:.gitignore
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NetCore部署微服务(二)