题目大意:给出一些音符,将它们组成和旋。和旋只能由[l,r]个音符组成。优美程度为所有音符的和。求k个和旋的又优美程度的最大和。
思路:先处理出来前缀和,以便O(1)去除一段的和。然后考虑对于一个音符来说,向左边扩展的音符是一段长度为r - l + 1的区间,取出的最大和是sum[i] - sum[p],sum[i]是一定的,要想让整段和最大,需要让sum[p]最小。之后就是区间k小值和...
分类:
其他好文 时间:
2014-12-12 19:16:03
阅读次数:
167
题意:在树中找到一个点i,并且找到这个点子树中的一些点组成一个集合,使得集合中的所有点的c之和不超过M,且Li*集合中元素个数和最大首先,我们将树处理出dfs序,将子树询问转化成区间询问。然后我们发现,对于单一节点来说,“使得集合中的所有点的c之和不超过M,且Li*集合中元素个数和最大”可以贪心地搞...
分类:
编程语言 时间:
2014-12-12 16:36:36
阅读次数:
249
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1226
题意:如果质数可以由如下公式构造出来,那么称质数是可造的。
给定一个区间,求在这个区间内有多少个可造的质数,其中。
分析:
代码:
#include
#include
#include...
分类:
其他好文 时间:
2014-12-12 13:19:47
阅读次数:
128
今天联系写一个日历的程序,需要算出月份中的第一天是星期几,用到了mktime()这个函数,感觉这个函数挺有用的,分享给大家。原型:time_t mktime(struct tm *)其中的tm结构体定义如下:struct tm {int tm_sec; /* 秒 – 取值区间为[0,59] */in...
分类:
编程语言 时间:
2014-12-12 11:22:51
阅读次数:
215
首先不妨考虑1个特殊情况,当n趋于无穷的时候,|t| = 1, 显然可以。
然后考虑任意一个长度为2*n的区间。不妨设为[a, a + 2n] , 考虑该区间的任意
一个整数m, 显然m = (a + n) + r, 其中r属于[-n, n]。故包含在该区间的ai都可以
写...
分类:
其他好文 时间:
2014-12-12 01:24:09
阅读次数:
186
题目大意:求[l,r]区间内有多少个质数可以分解为两个正整数的平方和
考虑到对于一个数Check一下是O(√n)的 我们可以将3*10^8分成3000块 每块10W 对于整块的打表求出有多少个质数 块内暴力
令n为块的大小 则时间复杂度为O(n√n)
打表时忘加优化忘开O2 打了一下午 各种酸爽
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2014-12-11 20:53:49
阅读次数:
533
题目大意:给定一个串,问这个串最少可以由回文串拼接多少次而成(拼接可以重叠)
首先将每两个字符之间插入占位符,然后Hash+二分搞出所有极大回文串(可以用manacher,我不会)
问题转化成了给定一些区间,求最少的能覆盖整个数轴的区间
将所有区间按照某一端点排序 然后上树状数组即可
回头还是去学学manacher吧。。。
#include
#include
#include
#i...
分类:
编程语言 时间:
2014-12-11 15:53:11
阅读次数:
207
还是最基础的线段树噢 这次是区间修改
#include
#include
#include
#define lc p<<1,s,mid
#define rc p<<1|1,mid+1,e
#define mid (s+e)/2
using namespace std;
const int N = 100005;
int sum[4 * N], setv[4 * N];
void pushup...
分类:
其他好文 时间:
2014-12-11 14:09:01
阅读次数:
235
继续最水的线段树 简单粗暴
#include
#include
#include
#define lc p<<1,s,mid
#define rc p<>1)
using namespace std;
const int N = 100005;
int add[4 * N], maxv[4 * N];
void pushup(i...
分类:
其他好文 时间:
2014-12-11 14:08:18
阅读次数:
263
论某O(n*sqrt(n))的带修改区间k大值算法。首先对序列分块,分成sqrt(n)块。然后对权值分块,共维护sqrt(n)个权值分块,对于权值分块T[i],存储了序列分块的前i块的权值情况。对于区间询问,需要获得区间中每个值出现的次数,然后按权值扫O(sqrt(n)),完整的部分我们可以通过权值...
分类:
其他好文 时间:
2014-12-11 13:59:55
阅读次数:
573