自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 hdu 4578 Transformation

题目大意是:对n个数进行如下操作1 x y z , 令a[i] = a[i] + z,     x 2 x y z, 令 a[i] = a[i] * z,      x 3 x y z, 令 a[i] = z,     x 4 x y p,   输出 a[i]^z 的和,  x这一题如果要查询的只是一次方的和的话,这一题就是一道非常简单的线段树了。所以要特别处理

2015-11-12 20:09:42 368

原创 hdu4747 Mex (线段树 好题)

(这次的代码写得非常的丑,因为敲代码时的环境非常的乱,大家可以不用看了。。。。。。) 题目大意:给一个数字串。然后定义一个函数Mex({A}) = A中没有的最小的非负整数。即若A = {0、1、3},则Mex(A) = 2然后要求数字串的所有连续子串的Mex值之和。 总结:这一题我想了很久。这一题的解放真是太有意思了,处于我思维的一个盲点。我一开始想过处理

2015-09-07 18:45:45 639

原创 hdu 3974 Assign the task (线段树)

错误总结:这一题没有1A,主要原因是有点累,在敲代码的过程中注意力有些无法集中起来。最后导致在调用函数的地方传参数传错了!!!检查的时候只把函数认真看了一遍,而调用函数的地方却漏看了!!!!以后要注意! 题目大意:给一个有根数,然后有以下两种操作。操作一:T X Y ,将以X为根的子树上的所有节点都变成Y操作二:C X,查询第X号点是多少? 这一题初看是一道维护

2015-09-04 21:56:34 456

原创 树状数组求区间最大值

讲这个的博文已经不少了,但感觉不够详细不够通俗易懂,所以我尝试着更详细更通俗易懂的说一下我的理解。 这个算法只支持单点修改和区间查询最值。每一次维护和查询的时间复杂度都是O((logn)^2),但这是满打满算的时间复杂度。假设是要维护和查询区间的最大值(最小值将max改成min 就好了)这个算法和树状数组维护和查询区间和的方法很相似: 一、数组的含义1、在维护和查询区间

2015-09-04 10:42:56 25303 20

原创 poj 2155 Matrix(二维树状数组)

题目大意:有一个N*N的数组a,初始值为1分为两种操作:操作一:将所有满足x11,1->0操作二,询问a[x][y]是什么。 可以将反置变成所有区域每一个数都加一,最后将(a[x][y]%2)输出这一题是用二维树状数组更新区间、单点查询的题。对于操作一,进行如下维护:h[x1][y1] ++; h[x1][y2+1] --; h[x2+1][y1]--; h[x

2015-09-03 21:16:31 481

原创 poj 2299 Ultra-QuickSort(树状数组)

题目大意:给一串数字,问冒泡排序需要进行多少次交换 其实稍微模拟一下就可以发现,这一题其实就是要求逆序对的个数不过要解决一个问题就是:这些数组太大,难以用树状数组进行维护,可以用坐标离散化来做,因为每个数字都不相同,所以很好实现的我的离散化实现:sort(a+1, a+n+1);for (i=1; i<=n; i++) b[a[i].id] = i;其它的按照求逆序

2015-09-03 18:20:46 352

原创 poj 2352 Stars (树状数组)

题目大意:在一个平面上给n个节点。每一个节点的level为其左下方的节点个数(即xi >= xj, yi >= yj)求level为0、1、2、3.....、n-2、n-1的节点分别有多少个 (因为坐标有0,所以所有的横坐标都加一,否则可能进入死循环) 这一题最首先的想法是用二维树状数组,可是空间复杂度太大。因为问题是求左下方的节点数量,所以可以改用一维树状数组维护

2015-09-03 17:54:00 300

原创 poj 1195 Mobile phones (二维树状数组)

题目大意:有一个S*S的数组。有两种操作:一、h[X,Y]加上A二、查询所有x1 这一题是一道二维树状数组的模板体。如果要查询(x1,y1,x2,y2)的值:只要查询query(1, 1, x2, y2) + query(1, 1, x1-1, y1-1) - query(1, 1, x2, y1-1) - query(1, 1, x1-1, y2)这个查询和维护可

2015-09-03 16:43:13 308

原创 POJ 2481 Cows (树状数组)

题目大意:给n个闭区间,求每个闭区间是多少个其他闭区间的真子集。 这一题先不考虑有相同闭区间的情况。i区间是j区间的真子集,则有Ej 所以可以将这个n个区间按照 “若Y大则大,若Y相同则X小的大” 的规则从大到小排序bool operator < (const cow &a, const cow &b){ if (a.y == b.y) return a.x < b

2015-09-03 12:25:56 309

原创 poj3067 Japan (树状数组)

题目大意:左边有n个点,从上到下依次为1、2、3、......、n-1、n右边有m个点,从上到下一次为1、2、3、.......、m-1、m然后有k条路,分别连接左右两边的点。求这些路之间的交点有多少。每个交点至多被两条路径经过。 这一题的做法:这一题其实就是求逆序对的稍微变化。只要将k个路径按照:x大的大,若x相等则y大的大。代码:bool operator

2015-09-02 17:12:17 337

原创 hdu 1556 Color the ball (树状数组解决区间覆盖+单点查询)

题目大意:中文题目,就不说了。 这题的具体做法是:对于覆盖区间[a,b],让h[a] = h[a] + 1,h[b + 1] = h[b + 1] - 1。然后要查询x被覆盖了多少次,h[1]+h[2]+h[3]+......+h[x-1]+h[x]的值就是答案 我的代码#include #include #include using namespace std;

2015-09-02 16:24:15 382

原创 hdu 1394 Minimum Inversion Number (树状数组)

题目大意:给你一个1到n的排列(虽然题目是0到n-1的排列但加1一下就好了)如是a1、a2、a3、.......、an-1、an然后可以进行这样的操作:将第一个数放到最后,变成:a2、a3、a4、.......、an-1、an、a1每次这样可以得到n个不同的串。问这n个不同的串中,逆序对数最小的串的数量是多少。 这一题有一个关键的信息就是:这是一个1到n的排列利用这个信

2015-09-02 16:11:51 346

原创 hdu4267 A Simple Problem with Integers

题目大意:解释起来有些麻烦,直接贴一下英文版好了Problem DescriptionLet A1, A2, ... , AN be N elements. You need to deal with two kinds of operations. One type of operation is to add a given number to a few numbers in a g

2015-08-27 21:29:13 334

原创 hdu4638 Group(树状数组)

题目大意:给一个1-n的排列,然后询问[x,y]区间中有多少个连续的段。如给一个3 1 2 5 4, 查询是2 4,那么就是问1 2 5中有多少个连续的串,一共有两个串,1、2为一个串,5为一个串若查询是2 5,则问的是1 2 5 4中有多少个连续的串,一共有两个串, 1、2为一个串, 4、5 为一个串。 反思:这一题我想了蛮久的,因为我一直想要去维护每一个串的首个数字,但想了

2015-08-27 14:16:54 382

原创 hdu 4777 Rabbit Kingdom(树状数组)

题目大意:给一串长度为n的数字a[],数字的取值范围是[1, 200000],然后询问一个区间内有多少个数字与区间内其他数字互质首先可以想到要处理出每一个数字a[i],他左右最近的不互质的数。做法是先预处理出[1..200000]中每一个数的质数因子,这个的时间复杂度是O(n+n/2+n/3+.....+n/(n-1)+n/n) = O(n*logn)具体代码:void PPre(

2015-08-19 20:46:32 358

原创 codeforces290 B.Fox And Jumping

思考过程:哪些数字组合起来可以达到每一步都能走到呢?若一开始是在0号位,那么能走到1号位置就能达到每一步。那哪些数字组合在一起可以达到1呢?由数论知识可知存在a、b,使a*x + b*y = gcd(x, y)于是可以得到,存在a1、a2.......、an-1、an,使a1*x1 + a2*x2 + ....... + an-1*xn-1 + an*xn = gcd(x1

2015-02-08 19:34:09 322

原创 codeforces290 A.Fox And Names

注意事项:我的这个解法需要特判一种情况,就是一开始就是错误的情况,如:INPUT:3BBBBBBOUTPUT:Impossible可知只要满足对任意 i 都有NAME[i] > NAME[ i+1 ] , 既整个序列就有序所以根据NAME[ i ] > NAME[ I+1 ] i = 1、 2 .... N-1得出N-1个字母大小关系。如:3r

2015-02-08 19:13:43 371

原创 uva 10934 Dropping water balloons

注意事项这一题没有说明一定可以测出来也就是说当楼层 n = 1 的时候答案是1,依然需要进行一次测试思路:一开始最自然的想法是f[n, k]n表示楼层,k表示拥有的水球数,f[n, k]表示需要的最小尝试数。但发现这样定义状态的话,状态数我怎么也压不下去。现在就3个状态:水球数,尝试数,楼层数。楼层数是2^63,很大水球数是100尝试数是63所以我尝试用

2015-01-31 22:17:58 397

原创 URAL 1309 Dispute

先简述一下题目吧:f[0] = 0;f[n] = g(n, f[n-1]);g(x, y) = ((y-1)x^5 + x^3 -x*y + 3*x + 7*y) % 9973如果直接去算,n后面看了书上的题解。先将f[n] = g(n, f[n-1])和g(x, y) = ((y-1)x^5 + x^3 -x*y + 3*x + 7*y) % 9973结合f(x) =

2015-01-31 21:16:00 437

原创 POJ 3045 Cow Acrobats

需要注意事项:题目要求的答案是可以为负数的,我因为加了主观判断,以为只能大于0,所以WA了一次思考过程:一开始想的就是先二分一下答案,最后发现不需要二分。我们假设有一个放法,从下而上的牛的编号是:a1,a2,a3.....an那这n头牛的难受程度依次是q[1] = Sum - (W[a1] + S[a1])q[2] = Sum - (W[a1]) - (W[a2] +

2015-01-30 14:56:14 292

原创 ZOJ 3334 Body Check

zoj3334看病一共分两种情况一种是m个医生都在工作,另一种是1个医生在工作。我们分两种情况来处理:1、医生m>病人n因为一个病人最多被一个医生治疗,所以只能选择1个医生去看病,总的时间花费是sum2、医生m假设m个医生工作的时间是t,那么只有1个医生在工作的时间是sum-t*m,总时间花费是sum-(m-1)*t。那么就是要找出一个尽可能大的t最大的t是sum/

2015-01-29 22:44:15 700

原创 uva 1335 - Beijing Guard

以后需要注意的事情:在写完后应该先将整个程序检查一遍再交。思考过程:分两种情况1、人数为偶数个因为只要分成编号为奇数的和编号为偶数的,大家各自拿一部分中的就好了那么需要的礼物数就是相邻的两个数的和的最大值既max(a[i]+a[i-1],a[n]+a[1])  i=1,2......,n-1,n2、人数为奇数个从1给礼物,一直给到n-1,到给n礼物的时候需要既不

2015-01-29 17:14:15 417

原创 centos系统 在vim内用“+寄存器将内容复制vim外

这么简简单单的东西我都稻谷

2014-11-21 23:54:21 2156

转载 TopCoder 规则入门

原博文地址:http://blog.chinaunix.net/uid-9236609-id-2005924.html

2014-07-18 15:34:20 591

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除