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) 编辑