题目链接:http://codeforces.com/contest/828/problem/C

题解:有点意思的题目,可用优先队列解决一下具体看代码理解。或者用并查集或者用线段树都行。

#include <iostream>
#include <cstring>
#include <queue>
#include <vector>
#include <cstdio>
#include <map>
#include <string>
#include <vector>
using namespace std;
const int M = 2e6 + 10;
const int N = 1e5 + 10;
int pos;
struct TnT {
int sta, ed , num;
TnT() {}
TnT(int sta , int ed , int num):sta(sta), ed(ed), num(num) {}
bool operator <(const TnT &a) const {
return ed - pos > a.ed - pos;
}
};
priority_queue<TnT>q;
vector<int>vc[M];
string s[N];
int main() {
int n, k, pp;
scanf("%d" , &n);
int Max = 1;
for(int i = 1 ; i <= n ; i++) {
cin >> s[i];
cin >> k;
int len = s[i].size();
for(int j = 0 ; j < k ; j++) {
cin >> pp;
Max = max(Max , pp + len - 1);
vc[pp - 1].push_back(i);
}
}
for(pos = 0 ; pos < Max ; pos++) {
int len = vc[pos].size();
for(int i = 0 ; i < len ; i++) {
int L = s[vc[pos][i]].size();
q.push(TnT(pos , pos + L - 1 , vc[pos][i]));
}
if(q.empty()) cout << 'a';
else {
cout << s[q.top().num][pos - q.top().sta];
while(!q.empty()) {
if(q.top().ed == pos) q.pop();
else break;
}
}
}
cout << endl;
return 0;
}

最新文章

  1. android app自动化测试之UIAutomator
  2. 05-树8 File Transfer
  3. T4模板生成代码。 数据实体层与数据仓储层。备注
  4. mysql中将多行数据合并成一行数据
  5. SpringBoot学习笔记&lt;二&gt;注解
  6. 福利来了,现“免费”赠送Spring微服务实战书籍
  7. html之input标签(11)
  8. centos7下kubernetes(4.kubernetes组件)
  9. 浅入浅出JDBC————1分钟了解JDBC
  10. eclipse安装springboot插件
  11. python的type class
  12. python BeautifulSoup
  13. Centos LVM 创建 删除 扩大 缩小
  14. 使用Lazy&lt;T&gt;实现对客户订单的延迟加载
  15. TCP半连接和syn攻击(转)
  16. 一款基jquery超炫的动画导航菜单
  17. soapUI-DataSource Loop
  18. C# winfrom提示框,点击则不显示,不点击则提示输入内容
  19. python-unittest学习2--生成报告
  20. 12.线程通信CyclicBarrier

热门文章

  1. Xcode 常用
  2. Python实现批量处理扫描特定目录
  3. Python机器学习&#183;微教程
  4. Hadoop学习(5)-zookeeper的安装和命令行,java操作
  5. 并发编程(4)——AbstractQueuedSynchronizer
  6. CSS3: perspective 3D属性
  7. Mermaid
  8. javaweb基础整理随笔-----上传与下载步骤详解
  9. java web 加载Spring --web.xml 篇
  10. maven的不同版本下载及环境配置