这道题目solution写了两种做法,都讲一下吧。
首先,令x=r^0.5,显然,如果x>2,则可以不断减2到小于二;如果x>1,那么变为2-x。因此此时必有x
题目等价于在数轴从0~n,以y长度为一个区间(左闭右开)黑白交替染色,求黑色部分覆盖的整点减去白色部分覆盖的整点。然后把最后面零散的部分暴力计算,如果最后一个是黑色的也暴力计算。那么这个时候黑白段数相等,且...
分类:
编程语言 时间:
2016-05-13 01:05:04
阅读次数:
177
Description1..N
给出N个更新a, b
[a, b]区间内所有数 + 1
最后问
1..N是多少Algorithm线段树
写了一个线段树的类
然后线段树的核心数组不能放在类里面,不然就爆炸了
于是放在线段树外 过了
此外JAVA TLE
写了C++的这个线段树是一个完全二叉树
用数组实现 (a数组)
a中的每一个元素记录这个区间[l, r] 加的次数x
0号节点...
分类:
其他好文 时间:
2016-05-13 00:58:23
阅读次数:
209
Minimum Sum
Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3710 Accepted Submission(s): 852
Problem Description
You are given N po...
分类:
其他好文 时间:
2016-05-13 00:47:22
阅读次数:
352
前几篇博客排序算法都是 用的比较排序,时间复杂度最低的是 O(nlgn),这也是比较排序最优的时间复杂度。
这次计数排序用的是线性时间复杂度的排序,也就是说不是通过比较来确定排序顺序的。
计数排序是 假设n个元素中的每一个都是在0到k区间内的一个整数,也就是整个数组里最大的数是 k,这是我们需要一个数组B[]来存放排序的输出,用C[]来提供临时存储的空间。其中,特别有意思的是,C[i],它保存...
分类:
编程语言 时间:
2016-05-13 00:45:53
阅读次数:
145
题意简述给定n个数a[i] n<=10^5 1<=a[i]<=10^9
m次询问 m<=10^6
每次循环第l个数到第r个数之间,数的大小在[k,w]中的数的个数分析题目求的是一个二维区间和
二维树状数组?
然而n在10^5的数量级 时间与空间承受不了二维树状数组能同时支持询问和修改
然而这题套用二维BIT的话并不需要随时修改
使用二维BIT未免大材小用了再仔细分析题目
题目后...
分类:
其他好文 时间:
2016-05-13 00:19:59
阅读次数:
136
STL中定义的set要求元素不得重复且已经排序。而set算法要求的都是有序区间(输出也是有序的),但元素可以重复出现。STL提供了4个set相关的算法,分别是并集(union)、交集(intersection)、差集(difference)和对称差集(symmetric difference),这4个算法接受的set必须是有序区间,都至少接受4个参数,分别表示两个set区间。一般而言,set算法前4...
分类:
编程语言 时间:
2016-05-13 00:18:51
阅读次数:
254
DAY 1t1:暂无。
t2:先把区间合并,然后每个位置都会属于一个区间。设f[i,j]表示以A串第i位和B串第j位匹配为结尾的LCS。那么转移有两种情况,一种是第j位可以放一个和A串第i位一样的字符,只要当前j所在的区间还未被使用的A串第i位字符个数不为0即可。如何知道使用了的个数?因为你清楚f[i-1,j-1]的值,而A串又是固定不动的,设i-f[i-1,j-1]=k,belong[j]表示j...
分类:
其他好文 时间:
2016-05-12 23:14:53
阅读次数:
126
【题目链接】
题解:
如果区间[j, i]固定,那么一定是将权值最大的一段变为0。
用单调队列维护一段区间内权值最大的子段下标(这里记录右端点下标,设为x),枚举右端点i,用尺取法计算出j。
一段区间[j, i]合法的条件是sum[i] - sum[j - 1] - (sum[x] - sum[x - d])
复杂度:
时间复杂度:因为每个点最多遍历2次,复杂度为O(n)...
分类:
其他好文 时间:
2016-05-12 22:08:36
阅读次数:
238
算是我真正意义上的区间更新的第一题,我是这样理解区间更新的:
为了节省时间,在更新区间的时候不必每次都更新到叶子节点。如果当前节点的的区间被包含在查询区间内,就暂时只更新这个节点。但是如果仅仅这样,将来在下次更新的时候,如果涉及了该节点的孩子节点,就会出错。
所以有一个办法:在更新的时候,如果我们明确知道了该节点的儿子节点涉及到了将要更新的区间,就事先把它的左右儿子节点按照父节点的val更新了...
分类:
其他好文 时间:
2016-05-12 21:29:56
阅读次数:
163
题意:给你n个东西,然后每个东西里面a物质各加了ai,然后让你往每个东西里面加等量的b物质,要求这里面 |sum(a)-sum(b)|最大的一个区间的这个值最小,问你b物质应该加多少?
题解:假设b物质加x,让s(i,j)=sigma(a[k]-x)要求的是最小化 max|s(i,j)| (i,j都属于1到n)
光这么看的话基本是没有什么想法的,我就是太蠢,在这里愣了好久不知道怎么做,其实应该...
分类:
其他好文 时间:
2016-05-12 21:29:32
阅读次数:
132