dreamxr
精诚所至,金石为开!

导航

 

2012年7月5日

摘要: 【题目描述】给定含有n个数的序列,初始状态每个数为1,然后有q个操作,每次改变某段区间的值,求最后的总和。【思路】线段树的成段更新,需要用到懒惰标记(lazy_tag)考虑最朴素的办法,更新区间段的时候从上到下全部更新,但是这样做的话每次更新时间是O(n)的,肯定要TLE。lazy_tag的思想就是,当更新到某个节点,并且需要更新的区间包含这个节点所代表的区间时,直接更改这个区间,并做懒惰标记,不再继续向下更新,当更新或者询问到这个节点的子节点时,将标记下传。这样做可以大大降低时间复杂度。#include<cstdio>#define N 100010#define lson l, 阅读全文
posted @ 2012-07-05 21:44 dreamxr 阅读(151) 评论(0) 推荐(0)
 

2012年7月3日

摘要: 【题目描述】给定一个序列a1...an,每次可以吧第一个元素放到最后形成一个新的序列,求解这n个序列中逆序数最小的一个。【思路】线段树的应用——利用线段树求解逆序数。一组逆序对ai,aj满足ai>aj&&i<j,求解时先进行排序,找出没个数的相对大小。插入的时候从最后一个开始向前一次插入,每次将x[i]插入到k时。询问1...k这段中已插入的个数。因为1...k这段中已插入的个数即为排在x[i]之后并且比x[i]小的数的个数,即为包含x[i]的逆序对总数。求出原序列的逆序对数之后,每次变更之后的逆序数可以提出来。#include<cstdio>#incl 阅读全文
posted @ 2012-07-03 23:25 dreamxr 阅读(101) 评论(0) 推荐(1)
 
摘要: 【题目描述】 给定一个序列a1...an,每次可以吧第一个元素放到最后形成一个新的序列,求解这n个序列中逆序数最小的一个。 【思路】 线段树的应用——利用线段树求解逆序数。 一组逆序对ai,aj满足ai>aj&&i #include #define lson n>1; build(l,mid,lson); build(mid+1,r,rson); } void update(int... 阅读全文
posted @ 2012-07-03 23:25 dreamxr 阅读(82) 评论(0) 推荐(0)
 

2012年6月13日

摘要: 上个周末在辽宁科技大学参加了一年一度的ACM/ICPC东北赛,这也是我们队的第一次东北赛之旅,谨以此文做以小结。 周五晚上卧铺到达鞍山,对于我这种卧铺睡不着觉的人来说并没有休息好,周六的上午没有休息而去校园闲逛,这直接导致这两天都没太休息好。下午热身赛,毫无状态,A了两题,测了测环境果断回寝睡觉。 正赛。 开始之后我负责建文件,zzx和zhy负责读题,之后我也参与读题,发现H是个水题,这时候zzx发现D也不太难,就选择开始敲D,D就是处理一个字符串的四舍五入问题,不过敲得并不太顺利,这题比预想要麻烦,然后换我上去写D,12min1Y,然后发现I是个比较简单的计算几何,随便讨论了下应该... 阅读全文
posted @ 2012-06-13 00:41 dreamxr 阅读(155) 评论(0) 推荐(0)