2011年9月30日
摘要: //9375794 NKHelloWorld 2155 Accepted 56540K 1875MS G++ 3187B 2011-09-30 13:15:25//9375796 NKHelloWorld 2155 Accepted 56324K 1750MS C++ 3187B 2011-09-30 13:15:32//以上为普通二维线段树段更新求点和解法//以下为加入位运算和不保存lt和rt的结果//9375996 NKHelloWorld 2155 Accepted 9140K 782MS C++ 2523B 2011-09-30 14:07:56#include <cstdio& 阅读全文
posted @ 2011-09-30 14:16 NKHe!!oWor!d 阅读(227) 评论(0) 推荐(0) 编辑
摘要: //4681418 2011-09-30 12:26:14 Accepted 1823 140MS 7520K 3762 B C++ nkhelloworld//4681419 2011-09-30 12:26:40 Accepted 1823 203MS 7588K 3762 B G++ nkhelloworld/*二维线段树,一个线段树中套一个线段树,求区间最大值再次强调要注意区间范围是不是反着的,如h1 > h2时应swap注意读入浮点数的时候可能产生精度误差,*10再转int可能就错了此题,如果不加eps,在C++下可以AC,在G++下是WA*/#include <cstd 阅读全文
posted @ 2011-09-30 12:44 NKHe!!oWor!d 阅读(167) 评论(0) 推荐(0) 编辑
  2011年9月29日
摘要: //4677952 2011-09-29 17:10:55 Accepted 2871 421MS 3700K 5156 B G++ nkhelloworld//4677960 2011-09-29 17:11:58 Accepted 2871 281MS 3628K 5156 B C++ nkhelloworld/*POJ上Hotel的加强版,多了Get操作,Free操作有一些变化。用vector记录已经开出来的内存,维持有序,遇到get和free二分查找*/#include <cstdio>#include <iostream>#include <vector 阅读全文
posted @ 2011-09-29 17:16 NKHe!!oWor!d 阅读(300) 评论(0) 推荐(0) 编辑
摘要: //9372104 NKHelloWorld 3667 Accepted 3740K 1000MS G++ 3738B 2011-09-29 15:06:22//9372139 NKHelloWorld 3667 Accepted 3228K 594MS C++ 3740B 2011-09-29 15:12:45/*转自:http://www.cnblogs.com/superbin/archive/2010/07/18/1780194.html题型:线段树(设计并维护复杂域)描述:旅店登记,1.找一段最靠前的连续w个空房间;2.退订[x,x-d+1]段的房间。思路:1. 域的设计struct 阅读全文
posted @ 2011-09-29 15:40 NKHe!!oWor!d 阅读(331) 评论(0) 推荐(0) 编辑
摘要: /*一个10^5的序列,有10^5个操作,每个操作为a,b,ca=0时将b到c区间内的数都开根号下取整,a=1时求b到c段的和其中所有数的和不超过2^63。可以发现所有的数最多开7次方,就会变成1了,再开方就不变了。所以定一个标记allone表示这一段已经全是1了,以后的开房遇到allone为true就不向下进行了,提高效率。线段树求和的变型,线段树提高效率的关键在于寻找合适的lazy标记,到满足一定条件的时候就不继续更新到点。*注意在HDOJ里,64位整数,定义用__int64或longlong,输入输出只能用%I64d*///4675978 2011-09-29 08:46:46 Acce 阅读全文
posted @ 2011-09-29 11:18 NKHe!!oWor!d 阅读(174) 评论(0) 推荐(0) 编辑
  2011年9月28日
摘要: /*HDU1394 利用线段树求逆序对数方法:从1……n插入每个数,每插入一个数,计算当前线段树中数为a[i]+1....maxval的数有多少个,特别需要当心a[i]+1有可能大于maxval的情况交换两个相邻数,逆序数+1或-1, 交换两个不相邻数a, b, 逆序数+=两者间大于a的个数-两者间小于a的个数对于本题,可以假设在第n+1个位置上有一个数n,每次将第一个数与第n+1位置上的n互换逆元对数 = 原逆元对数 - 比该位置数小的个数 + 比该位置大的个数*///4673112 2011-09-28 18:46:40 Accepted 1394 78MS 240K 1470 B G++ 阅读全文
posted @ 2011-09-28 19:03 NKHe!!oWor!d 阅读(359) 评论(0) 推荐(0) 编辑
摘要: //4671914 2011-09-28 15:07:14 Accepted 1698 843MS 3260K 1905 B G++ nkhelloworld//4671915 2011-09-28 15:07:18 Accepted 1698 453MS 3304K 1905 B C++ nkhelloworld//线段树解决,近似序列求和问题,简单/*一个N<=100000个数组成的序列,最多做Q<=100000次操作,每一次操作由a,b,c组成,意思是将[a,b]区间的值修改为c,求经过Q次操作后序列的总和*/#include <cstdio>#define MA 阅读全文
posted @ 2011-09-28 15:12 NKHe!!oWor!d 阅读(224) 评论(0) 推荐(0) 编辑
摘要: //http://acm.hdu.edu.cn/showproblem.php?pid=1754//4671581 2011-09-28 14:15:02 Accepted 1754 265MS 6452K 2127 B G++ nkhelloworld//4671584 2011-09-28 14:15:21 Accepted 1754 218MS 6388K 2127 B C++ nkhelloworld//以下是未加输入优化的测试结果,对比发现效率提升很大//4671535 2011-09-28 14:08:36 Accepted 1754 1109MS 6444K 2029 B G++ 阅读全文
posted @ 2011-09-28 14:25 NKHe!!oWor!d 阅读(207) 评论(0) 推荐(0) 编辑
摘要: //http://acm.hdu.edu.cn/showproblem.php?pid=1166//4671122 2011-09-28 13:02:52 Accepted 1166 31MS 412K 1396 B C++ nkhelloworld//4671125 2011-09-28 13:03:32 Accepted 1166 62MS 376K 1396 B G++ nkhelloworld//树状数组点更新求和,比线段树要快#include <cstdio>#include <cstring>const int maxn = 50002;int BITtre 阅读全文
posted @ 2011-09-28 13:41 NKHe!!oWor!d 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 点更新线段树问题//4671028 2011-09-28 12:40:35 Accepted 1166 78MS 1720K 2395 B G++ nkhelloworld//4671030 2011-09-28 12:41:04 Accepted 1166 46MS 1764K 2395 B C++ nkhelloworld//点更新线段树#include <cstdio>#define MAXN 50000struct SEGMENTTREE{ int left,right,sum;}tree[MAXN*4];int n;void buildsegtree(int pos,in 阅读全文
posted @ 2011-09-28 13:38 NKHe!!oWor!d 阅读(132) 评论(0) 推荐(0) 编辑