本次题目因为比较简单,除了个别题目,其余题目我只写一个思路不再贴代码。

先是Div.2的题解

A题奇怪的优化,把递归函数改成2*fun(...)即可,其实看懂程序也不难,就是求a*2b

B题你会string吗,直接String变量比较大小即可

C题数数,没有卡正常方法,可以直接把数转成二进制找1个数,此时复杂度为O(logN),更快的方法是使用__builtin_popcount函数,复杂度为O(m(m为数二进制中1的个数));

D,E题,看Div.1中本题解释

所有代码都可以10行内写出,所以我不再给出代码;

Div.1题解

A题简单代码优化,区间求和,直接再弄一个sum数组即可

B题简单字符串处理,因为只能在字符串尾部加字符,所以我的做法是把每个字符给个序号(既位置)存入容器,再分别做三个操作。

对于1操作,删除存储那个字符的集合即可。

对于2操作,对应集合加上序号即可。

对于3操作,在1操作时候维护一个树状数组即可。

整体时间复杂度为O(QlogN),N为字符个数。但这种写法常数略大,有更优化的思路可以和我探讨一下。

 #include <bits/stdc++.h>
using namespace std; set<int> dis[];
vector<pair<int,int>> vis(,make_pair(,));
int q,x,k,tot = ;
char ch;
int c[] = {}; inline int lowbit(int x){
return x&(-x);
} int update(int i){
while(i <= ){
c[i] += ;
i += lowbit(i);
}
} int sum(int i){
int res = ;
while(i > ){
res += c[i];
i -= lowbit(i);
}
return res;
} int main(){
ios_base::sync_with_stdio(),cin.tie(),cout.tie();
freopen("test6.in","r",stdin);
freopen("test6.out","w",stdout);
int f1 = ;
cin>>q;
generate(vis.begin(),vis.end(),[&f1](void)->pair<int,int>{return make_pair(f1++,);});
while(q--){
cin>>x;
if(x == ){
cin>>k;
if(k > )
continue;
sort(vis.begin(),vis.end(),
[](pair<int,int> a,pair<int,int> b)->bool{
if(a.second == b.second)
return a.first < b.first;
return a.second > b.second;
});
vis[k-].second = ;
for(auto it:dis[vis[k-].first]){
update(it);
}
dis[vis[k-].first].clear();
}
else if(x == ){
cin>>ch;
dis[ch-'a'].insert(++tot);
for(auto& a:vis){
if(a.first == ch-'a'){
a.second++;
break;
}
}
}
else if(x == ){
cin>>ch;
if(dis[ch-'a'].empty())
cout << - << endl;
else
cout << *(dis[ch-'a'].begin())-sum(*(dis[ch-'a'].begin())) << endl;
}
}
cerr << clock() << endl;
return ;
}

C题简单信息检索,标记初次出现位置即可

D题高级信息检索,把每个前缀都存入map,此时可以使用unordered_map更快,或者建立Trie树即可。好像还有人写exKMP,也没问题,毕竟100+100数据量。

E题密码破解,马拉车算法裸题。

第五场周赛(字符串卡常个人Rank赛)——题解的更多相关文章

  1. HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4528 小明系列故事——捉迷藏 Time Limit: 500/200 MS (Java/O ...

  2. LeetCode 第 165 场周赛

    LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...

  3. 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题)

    layout: post title: 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题) author: "luowentaoaa" c ...

  4. Leetcode第 217 场周赛(思维量比较大)

    Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...

  5. XML中的五个保留字符及实体引用

    字符名称 字符 实体引用 和 & & 大于号 >  > 小于号 <  < 单引号 ‘ &apos; 双引号 “ " 在XML文档中,构成元素内 ...

  6. noi.ac 第五场第六场

    t1应该比较水所以我都没看 感觉从思路上来说都不难(比牛客网这可简单多了吧) 第五场 t2: 比较套路的dp f[i]表示考虑前i个数,第i个满足f[i]=i的最大个数 i能从j转移需要满足 j< ...

  7. # NOI.AC省选赛 第五场T1 子集,与&最大值

    NOI.AC省选赛 第五场T1 A. Mas的童年 题目链接 http://noi.ac/problem/309 思路 0x00 \(n^2\)的暴力挺简单的. ans=max(ans,xor[j-1 ...

  8. NOI.AC NOIP模拟赛 第五场 游记

    NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...

  9. 牛客网暑期ACM多校训练营(第五场):F - take

    链接:牛客网暑期ACM多校训练营(第五场):F - take 题意: Kanade有n个盒子,第i个盒子有p [i]概率有一个d [i]大小的钻石. 起初,Kanade有一颗0号钻石.她将从第1到第n ...

随机推荐

  1. 浅谈 JavaScript 垃圾回收机制

    github 获取更多资源 https://github.com/ChenMingK/WebKnowledges-Notes 在线阅读:https://www.kancloud.cn/chenmk/w ...

  2. 面试java后端面经_2

    1 自我介绍(介绍一下帅气的自己哦) 2 对象深浅复制(浅复制:对象内引用的对象不会复制,深复制会把引用对象复制.如何进行深浅复制,这块不懂的童鞋可以百度一下) 3 wait方法和sleep方法的区别 ...

  3. MySQL高可用架构:mysql+keepalived实现

    系统环境及架构 #主机名 系统版本 mysql版本 ip地址 mysqlMaster <a href="https://www.linuxprobe.com/" title= ...

  4. Kendo-Grid for Vue API and Template

    写此博客的原因:在做项目时前端用的vue,后端用的jfinal.在前端veu中调用了kendo grid插件,但是在官方文档中对kendo grid for vue 的api和template都不太详 ...

  5. 写个shell脚本搭载jenkins让你的程序部署飞起来

    [转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11399251.html    作者:jstarseven    码字挺辛苦的.....  说明 ...

  6. Linux环境搭建 | VMware下共享文件夹的实现

    在进行程序开发的过程中,我们经常要在主机与虚拟机之间传递文件,比如说,源代码位于虚拟机,而在主机下阅读或修改源代码,这里就需要使用到 「共享文件」 这个机制了.本文介绍了两种共享文件夹的实现机制:VM ...

  7. tesseract4.0:win10 +x64+vs2015 源码安装(ViewerDebugging)安装记录

    参考文章: https://blog.csdn.net/u013985291/article/details/78295789 https://blog.csdn.net/u013985291/art ...

  8. Windows上IDEA搭建最新Spark2.4.3源码调试的开发环境

    相信很多同学都想通过阅读一些框架的源码,来提高自己的代码能力,但往往在第一步,搭建环境的时候就碰了壁. 本篇就来介绍下如何在Windows下,将最新版的Spark2.4.3编译,并导入到IDEA编译器 ...

  9. 从Linux服务器下载上传文件

    首先要确定好哪两种的连接:Linux常用的有centors和unbantu两种版本,PC端Mac和Windows 如果在两个Linux之间传输,或Linux和Mac之间传输可以使用scp命令,类似于s ...

  10. Python编程习惯