- 博客(11)
- 收藏
- 关注
转载 Minimum Inversion Number(线段树求逆序数小总结)
首先,求逆序数对的思路: 1.得到整个数列后,从前往后扫,统计比a[i]小的,在a[i]后面的有多少个 这样做的话,应该是只有n2的暴力作法,没想到更好的方法 2.统计a[i]前面的,且比它大的数 这样做的话,就可以利用输入的时效性,每输入一个数,就把这个数的num[i]值加1, 然后统计比这个数大的数的num和, 因为这里的和一定是在这个数列中比a[i]大,且
2013-10-27 16:39:21
628
原创 HDU 2795 Billboard
第一次写线段树题,自己写对,而且一次AC。真高兴,看来心情不好更易做题 ///本来看到行是10^9,吓死,还好n只是10^5,所以最多也只需要n行 #include #include using namespace std; int h,w,n; struct Node { int left,right,v; }; Node node[200005*4]; i
2013-08-31 21:12:18
403
转载 分解字符串,转化及排序问题小结
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20954 Accepted Submission(s): 5495 Problem Description 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行
2013-08-28 16:21:15
545
转载 字典树
Trie树也叫字典树,是一种用于快速检索的多叉树结构。如英文字母的字典树是一个26叉树。数字的字典树是一个10叉树。Trie树把要查找的关键词看作一个字符序列,并根据构成关键词字符的先后顺序构造用于检索的树结构;一棵m度的Trie树或者为空,或者由m棵m度的Trie树构成。特别的:和二叉查找树不同,在Trie树中,每个结点上并非存储一个元素。在Trie树中查找一个关键字的时间和树中包含的结点数无关
2013-08-21 21:24:15
430
转载 最小表示法求两个字符串是否循环相等
循环字符串的最小表示法的问题可以这样描述: 对于一个字符串S,求S的循环的同构字符串S’中字典序最小的一个。 由于语言能力有限,还是用实际例子来解释比较容易: 设S=bcad,且S’是S的循环同构的串。S’可以是bcad或者cadb,adbc,dbca。而且最小表示的S’是adbc。 对于字符串循环同构的最小表示法,其问题实质是求S串的一个位置,从这个位置开始循环输出S,得到的S’字典序最
2013-08-18 14:13:38
912
转载 C++字符串
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题……… 首先,为了在我们的程序中使用stri
2013-08-12 14:51:27
451
转载 字符串处理小结
C++字符串总结 string类在头文件中定义,并不属于STL,它是与IO流,异常机制,STL并列的现代C++基本元素. 对它的用法做个总结. 1. string有多种构造方式,按使用频率排列为: string(); //构造空字符串 string( const strin
2013-08-12 14:47:57
455
转载 石子合并
问题: 在一个园形操场的四周摆放N堆石子(N≤100),现要将石子有次序地合并成一堆。规定 每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 编一程序,由文件读入堆数N及每堆的石子数(≤20), ①选择一种合并石子的方案,使得做N-1次合并,得分的总和最小; ②选择一种合并石子的方案,使得做N-1次合并,得分的总和最大。 今天在网上看到了这道题,觉
2013-08-08 19:22:13
491
转载 最大公共子序列
动态规划法 经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。 为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。 【问题】 求两字符序列的最长公共字符子序列
2013-08-05 21:33:14
535
转载 最长递增子序列
问题描述: 给定一个序列 An = a1 ,a2 , ... , an ,找出最长的子序列使得对所有 i 动态规划法 设f(i)表示L中以ai为末元素的最长递增子序列的长度。则有如下的递推方程: 这个递推方程的意思是,在求以ai为末元素的最长递增子序列时,找到所有序号在L前面且小于ai的元素aj,即j 这个算法由Java实现的代码如下: public void lis(flo
2013-08-05 17:49:06
618
转载 sort
头文件: #include using namespace std; 1.默认的sort函数是按升序排) sort(a,a+n); //两个参数分别为待排序数组的首地址和尾地址 2.可以自己写一个cmp函数,按特定意图进行排序 例如: bool cmp( const int &a, const int &b ){ return a>b; } sort(
2013-08-05 14:58:24
463
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅