关闭

指针式线段树 bzoj 1798

学习了指针,重写bzoj 1798 数组本质是指针,所以可以buid(tr,1,n) 一个Tree *tr指针,tr[1]指的是这个指针指向的下一个位置,不是开数组的那个tr,所以都改成了root #include #include #include #include #define ll long long #define inf 1e9 #define md #define N 100...
阅读(302) 评论(0)

c++ primer 学习笔记(一)

2.1 基本内置类型 2.1.1算数类型 short 16位 long 32位 long long 64位(c++11新定义) wchar_t 用于确保可以存放机器最大扩展字符集中任意一个字符 char16_t char32_t 为Unicode服务 除bool型和扩展的字符型以外,其他整形可以划分为带符号的和无符号的 字符型被分为 char/signed char/unsigned...
阅读(184) 评论(0)

bzoj 2989&&4170: 数列

首先所谓的“可持久化” 就是加入一个新的元素 把看成平面上的一个点,graze函数就是曼哈顿距离 求点集中曼哈顿距离≤k的,自然要转换为切比雪夫距离的一个矩阵内点的个数 然后CDQ分治或者强上数据结构 注意矩阵y坐标取min要和1算,因为查询的时候是L-1,而树状数组不允许查询负数位置 #include#include#include#include #define ll lon...
阅读(264) 评论(0)

4556: [Tjoi2016&Heoi2016]字符串

字符串题不会做先想能不能把字符串反过来 把字符串反序,建立后缀自动机,利用线段树合并算出每个位置的right集 二分答案,用树上倍增找到对应的节点,看是否有[a+mid-1,b]中的数在right集中 #include#include#include#include #define ll long long#define inf 1e9#define eps 1e-10#define m...
阅读(296) 评论(0)

bzoj 3825: [Usaco2014 Dec]Marathon

查询的答案就是完整走过所有点的距离-少走一个点可以减少的距离的最大值。 所以线段树维护区间和,还有如果不走每个点,可以少走多少路 然后答案就是sum[l+1,r]-max[l+1,r-1] 没写%lld wa了一发 #include#include#include#include #define ll long long#define inf 1e9#define eps 1e-1...
阅读(131) 评论(0)

bzoj 4282: 慎二的随机数列

结论:所有的未知数都可以出现在最优解中。 所以,把每个确定的数减去它前面未知数的个数,计算lis就行 膜拜了一下popoqqq大爷优美的lis #include#include#include#include #define ll long long#define inf 1000000007#define eps 1e-10#define mdusing namespace std...
阅读(264) 评论(0)

bzoj 4591: [Shoi2015]超能粒子炮·改

S(n,k)=S(n/p,k/p-1)*S(n%p,p-1)+C(n/p,k/p)*S(n%p,k%p) 意思是根据lucas定理对于i/p 忘记处理sum[0][?]了 #include#include#include#include #define ll long long#define inf 1e9#define eps 1e-8#define md#define N 250...
阅读(540) 评论(0)

bzoj 4436: [Cerc2015]Kernel Knights

T集表示已经确定不在S集内的点。 对于一个点,如果不存在非T集的点挑战它,那么它一定在S集中。 如果存在一个挑战它的点在S集中,那么它一定在T集中。 用类似拓扑排序的方法,首先找出所有不被挑战的点,归入S,把这个点挑战的点y归入T集,然后y挑战的点的度数-1. 最后剩下一些点在环中,满足每个点都被别人挑战,也挑战别人,因为是二分图,所以保证是偶环,所以把 #include...
阅读(234) 评论(0)

bzoj 4530: [Bjoi2014]大融合

先说一下我的做法:没有强制在线,先建出来这棵树,然后发现x到它父亲的边的答案是 (目前连通块大小-x子树的大小)*(x子树的大小),这个子树大小也是指目前连通块内的子树大小,子树大小可以用线段树维护dfs序,进行线段树合并得到。子树size也可以用树链剖分做。 #include#include#include#include #define ll long long#define inf...
阅读(405) 评论(0)

bzoj 4103: [Thu Summer Camp 2015]异或运算

水题,查询由ai^bj组成的矩形的子矩形内的k大值,行数和询问数都很少,所以可以枚举行数,跑可持久化字典树。 注意不能 int l=0,r=2147483674,mid=(l+r)>>1,这个会爆int,开unsigned int 就行。 还有,写可持久化主席树又忘了ch[i][0]=ch[pre][0], ch[i][1]=ch[pre][1] #include#include#i...
阅读(203) 评论(0)

bzoj 4104: [Thu Summer Camp 2015]解密运算

暴力做法: 已知长度为l的所有子串,可以推出长度为l+1的所有子串,比如样例已知长度为1的子串是?AAAABC,而以这些字符开头的字符串的结尾分别是AAAC?AB,而这些字符也是写在对应字符前面的字符,所以得到了子串{A?,AA,AA,CA,?A,AB,BC},然后再用相似的办法推出剩下的子串,但这样太慢了。 我们只需要记录那个以?开头的字符串,每次这个字符串前面会加上一个新的字符,然后得知了这...
阅读(402) 评论(0)

bzoj 4592: [Shoi2015]脑洞治疗仪

线段树维护最长连续段的长度,然后暴力修改,暴力查询,这个复杂度应该是nlogn的。然而我调了好久。。。 #include#include#include#include #define ll long long#define inf 1e9#define eps 1e-8#define md#define N 200010using namespace std;struct Tr { i...
阅读(655) 评论(0)

bzoj 4590: [Shoi2015]自动刷题机

刷题数是关于n单调递减的函数,所以可以二分答案判断。 无解有两种情况,一种是无论n是多少都无法ac这么多题,一种是不存在n恰好ac这么多题,判断一下就好。 #include#include#include#include #define ll long long#define inf 1e9#define eps 1e-8#define md#define N 100010using ...
阅读(320) 评论(0)

bzoj 4597: [Shoi2016]随机序列

对于一个表达式序列 ****+??????? 一定有一个表达式序列 ****-??????? 与它相加为0,所以对答案有贡献的是第一个非*之前的序列乘上这个序列出现的次数。对于前i个数组成的序列,出现次数=2*3^(n-i-1),前n个数组成的序列出现次数为1.所以用线段树维护这个式子的值就好了,具体实现看代码 #include#include#include#include #defi...
阅读(410) 评论(0)

bzoj 4571: [Scoi2016]美味

如果没有加法,这就是一道水水的可持久化trie,有了加法,我们就要用可持久化权值线段树,然后按位贪心,查询变成一个区间内是否存在数字。 #include#include#include#include #define ll long long#define inf 1e9#define eps 1e-8#define md#define N 4000010using namespace ...
阅读(653) 评论(0)

bzoj 3569: DZY Loves Chinese II

神题一道。 将所有边分为树边和非树边,把所有非树边随机一个权值,然后树边的权值是所有覆盖它的非树边的权值的异或和。 如果一个边集的存在一个非空子集的异或和为0,那么树是不连通的。 原因是: (1)删除了一条树边和所有覆盖它的非树边,那么这些边的异或和为0 (2)一个点的出边只有树边,且删除了所有与它相连的树边,因为这些树边的异或和一定存在一对相同的,所以也对。 然后就是如何搞出树边的权...
阅读(364) 评论(0)

bzoj 2708: [Violet 1]木偶

最优策略一定可以把整个序列分成几段,每一段都是像这样子的 红线表示不可匹配。 所以可以排序后dp[i]表示前i个数最多删掉多少=max(f[j-1]+cal(j,i)) cal(j,i)表示j到i最多删掉多少个。注意是判断红线相连的两个是否能够匹配,而不是第i个和第i+k个能否匹配 #include#include#include#include #define ll lon...
阅读(367) 评论(0)

bzoj 3702: 二叉树

发现子树中如何排列对于兄弟节点的逆序对是没有影响的,所以统计兄弟节点之间交换和不交换的逆序对数,取较小值即可。 用线段树合并时直接计算逆序对的方式可以搞到nlogn。 #include#include#include#include #define ll long long#define inf 1e9#define eps 1e-8#define md#define N 200010...
阅读(221) 评论(0)

bzoj 4000: [TJOI2015]棋盘

矩乘,题意坑爹,那个第一行是中间那一行,所以记录一行的状态就可以了。f[S]表示最后一行状态为S的方案数,然后暴力看能否转移。 #include#include#include#include #define ll long long#define ui unsigned int #define inf 1e9#define eps 1e-8#define md#define N 70u...
阅读(241) 评论(0)

bzoj 4569: [Scoi2016]萌萌哒

一种会T的做法: 发现并查集加边只会发生n-1次,所以只要一个较小的复杂度完成这n-1次加边即可 启发式合并维护并查集,每次暴力修改所有属于小区间的fa值,用vector记录每个连通块内的数,暴力在线段树内修改hash值,复杂度logn,需要进行nlogn次 线段树上hash把所有的fa hash起来,然后二分找位置,每次寻找log^2,需要进行On次 #include#inclu...
阅读(598) 评论(0)
181条 共10页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:56002次
    • 积分:1433
    • 等级:
    • 排名:千里之外
    • 原创:181篇
    • 转载:0篇
    • 译文:0篇
    • 评论:12条
    最新评论