文中给了你一些句子,以及让你任意插入某个位置以及查询某个位置的句子。

发现因为是句子很难搞,所以开个 map 离散一下成数字。然后在额外开一个 map 记录这个数字对应的句子。

然后你要写一种支持插入任意位置与查询任意位置的数据结构,显然可以平衡树。

但是我就不写!

使用块状链表的超高速实现,常数小还好写好调。最大的点用时也才 400ms 。代码还短。

学习链接

// Problem: P3850 [TJOI2007]书架
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P3850
// Memory Limit: 125 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org) #include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 4e6,siz= 300;
int n,m,sub,bel,tmp[N];
map<string,int>vis;
map<int,string>vib;
vector<int>v[N];
vector<int>::iterator it;
int fin(int &kth){
for(int i=1;i<=bel;i++){
kth-=v[i].size();
if(kth<=0){kth+=v[i].size();return i;}
}
}
void rebuild(){
int tot=0;
for(int i=1;i<=bel;i++){
for(it=v[i].begin();it!=v[i].end();it++) tmp[++tot]=*it;
v[i].clear();
}
for(int i=1;i<=tot;i++){bel=(i-1)/siz+1;v[bel].push_back(tmp[i]);}
}
void insert(int p,int val){
int id=fin(p);
v[id].insert(v[id].begin()+p-1,val);
if(v[id].size()>10*siz) rebuild();
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
string s;
cin>>s;
vis[s]=++sub;vib[sub]=s;
bel=(i-1)/siz+1;
v[bel].push_back(sub);
}
cin>>m;
for(int i=1;i<=m;i++){
string s;
int k;
cin>>s>>k;k++;
vis[s]=++sub;vib[sub]=s;
insert(min(k,sub-1),sub);
}
int q;
cin>>q;
for(int i=1;i<=q;i++){
int t;
cin>>t;t++;
int id=fin(t);
cout<<vib[v[id][t-1]]<<"\n";
}
return 0;
}

最新文章

  1. rem与px的转换
  2. Javascript实现格式化输出
  3. 通过rpc访问比特币核心钱包
  4. Nginx的启动、停止与重启
  5. NEFU 504 new Flip Game (高斯消元)
  6. 高性能文件缓存key-value存储—Memcached
  7. OpenStack三个节点icehouse-gre模式部署
  8. 程序4-6 utime函数实例
  9. 第一次,触碰Web App项目,栽过的那些坑。
  10. 通过udl文件得到连接字符串
  11. 通过Jetty搭建一个简单的Servlet运行环境
  12. Java 9 揭秘(6. 封装模块)
  13. POJ 1113 Wall (凸包)
  14. node离线版安装
  15. Android 程序优化总结
  16. 【emWin】例程二十二:窗口对象——Framewin
  17. python核心类库:urllib使用详解
  18. iOS.Animation.CAMediaTiming
  19. Sublime2或3配置R、Scala、Python交互式环境
  20. sqlconnection dispose()与close()的区别

热门文章

  1. Selenium 库的基本用法
  2. 物联网安全Wi-Fi漫游
  3. 将代码生成器带入TVM
  4. AlexeyAB DarkNet YOLOv3框架解析与应用实践(四)
  5. SpringAOP 原理解析
  6. 狂神说Mybatis笔记
  7. 「题解」PA2019 Terytoria
  8. 『动善时』JMeter基础 — 46、使用Badboy工具录制JMeter脚本
  9. CyclicBarrier 原理(秒懂)
  10. Mybatis 中经典的 9 种设计模式!面试可以吹牛了