题目链接 BZOJ4540 考虑莫队算法。 这题难在[l, r]到[l, r+1]的转移。 根据莫队算法的原理,这个时候答案应该加上 cal(l, r + 1) + cal(l + 1, r + 1) + cal(l + 2, r + 1) + ... + cal(r + 1, r + 1). 我们 ...
分类:
编程语言 时间:
2017-10-06 00:01:44
阅读次数:
255
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3238 这道题从大概半年以前就开始啃了,不过当年因为一些细节没调出来,看了Sakits神犇的博客之后也没明白自己挂在哪里,于是就抄了个题解。然后现在突然想到填这个坑(其实是为了复习一下后缀数 ...
分类:
编程语言 时间:
2017-10-05 20:53:52
阅读次数:
226
【BZOJ4750】密码安全 Description 有些人在社交网络中使用过许多的密码,我们通过将各种形式的信息转化为 01 信号,再转化为整数,可以将这个人在一段时间内使用过的密码视为一个长度为 n 的非负整数序列 A_1,A_2,...,A_n 。一个人相邻几次在社交网络中使用的密码很有可能是 ...
分类:
其他好文 时间:
2017-10-05 17:17:52
阅读次数:
161
Usaco2010Dec 奶牛健美操 二分加玄学判断即可 Usaco2011 道路和航线 据说spfa+spl优化就能过,但是正解是发现负边连的一定是两个不同的联通块,在块内dijkstra并在整体上拓扑排序即可.太烦不想写 修建草坪 DP+单调队列 soda machine 乱搞什么都可以 奶牛沙 ...
分类:
其他好文 时间:
2017-10-03 21:38:17
阅读次数:
145
#include #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #define TS printf("!!!\n") #define pb push_back //std::ios::sync_with_stdio(fa... ...
分类:
其他好文 时间:
2017-10-03 17:26:14
阅读次数:
122
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1349 题意: 求区间内最大值大于等于k的区间个数。 思路: 利用求出对于以a[i]为最大值的区间范围,pre[i]表示左端范围,aft[i]表示右端范围,则区间个数为$(i ...
分类:
其他好文 时间:
2017-10-03 15:54:17
阅读次数:
157
http://poj.org/problem?id=3415 题意:求长度不小于K的公共子串的个数。 思路:好题!!!拉丁字母让我Wa了好久!!单调栈又让我理解了好久!!太弱啊!! 最简单的就是暴力枚举,算出LCP,那么这个LCP对答案的贡献就是$x-k+1$。 我们可以将height进行分组,大于 ...
分类:
编程语言 时间:
2017-10-03 12:40:31
阅读次数:
141
单调栈解决的是以某个值为最小(最大)值的最大区间,实现方法是:求最小值(最大值)的最大区间,维护一个递增(递减)的栈,当遇到一个比栈顶小的值的时候开始弹栈,弹栈停止的位置到这个值的区间即为此值左边的最大区间;同时,当一个值被弹掉的时候也就意味着比它更小(更大)的值来了,也可以计算被弹掉的值得右边的最 ...
分类:
其他好文 时间:
2017-10-02 17:18:55
阅读次数:
191
#include #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #define TS printf("!!!\n") #define pb push_back //std::ios::sync_with_stdio(fa... ...
分类:
其他好文 时间:
2017-10-02 16:14:13
阅读次数:
241
题目大意: 一个数列,求对于每个ai右边有几个比它小的数,且这些比他小的数到ai之间没有比ai大的数。 思路: 问题可以很容易地转换为求右边第一个大于等于它的数的位置 然后就可以想到单调栈 有两种做法: 一: 从后向前走,栈内为单调递减,栈内元素需要记录一下它的值和位置,然后每个元素进来的时候弹出直 ...
分类:
其他好文 时间:
2017-10-01 14:26:29
阅读次数:
185