pb_ds
Spy97
这个作者很懒,什么都没留下…
展开
-
pb_ds
pb_ds库包括: 优先队列 平衡二叉树 Hash 准则: 需要合并时用pairing_heap_tag 使用时需要的库: #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/hash_poli...原创 2018-08-02 20:11:27 · 1020 阅读 · 0 评论 -
2018 ICPC 南京网络赛 skr
题意: 给出一个字符串,求它的所有回文子串转化成数字的和,对1e9+7取模。 题解: 先上Manacher,然后枚举每个点,按照半径从大到小的顺序枚举回文串,遇到出现过的就break,统计答案即可。 注意的是,判重时只能用pb_ds中的gp_hash_table,unordered_map会T,同时需要两个字符串hash关键子,一个会WA。 Manacher+暴力枚举回文串+pb...原创 2018-09-04 09:40:56 · 478 阅读 · 0 评论 -
2018 ICPC 青岛网络赛 Couleur
题意: 给出一个长度为n的序列,每次将某个子序列分成两段,输出所有段中逆序对最大的数目。 题解: 假设从x位置断开,找到x最左边的断点l,和最右边的断点r,那么就是把区间(l,r)分解为(l,x)和(x,r),如何维护两段的逆序对个数呢? 启发式分解 假设断点更靠近r,我们暴力求解出(x,r)的逆序对个数,再求解出(l,x)和(x,r)中两段各有一个数的逆序对的个数,也就是有交叉的逆...原创 2018-09-17 19:17:14 · 578 阅读 · 0 评论 -
ZOJ 4102 浙江省第16届大学生程序设计竞赛 C题 Array in the Pocket
题意 给nnn个数,重新排列,要求每一个位置,新序列和原序列不能相同,字典序最小 题解 要求字典序最小,所以肯定是从前向后去填数 对于每一个位置,一次从小到大枚举可以选择的数,如果填之后,后面的依旧有解,那么就确定这个位置要填的数,否则继续枚举 关键在于判断后面是否有解 假设原序列中从当前位置开始到结束的构成aaa;还剩下的可选的数为序列bbb 例如: 4,1,3,24 ,1, 3, ...原创 2019-05-02 10:36:19 · 446 阅读 · 0 评论 -
2019杭电多校第一场 HDU 6599
#include<bits/stdc++.h> #define N 300010 #define M N<<0 #define INF 0x3f3f3f3f #define eps 1e-10 // #define pi 3.141592653589793 #define mod 998244353 #define P 1000000007 #define LL long ...原创 2019-07-25 11:51:49 · 286 阅读 · 0 评论