<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LG_mind的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LG_mind</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LG_mind]]></copyright><item><title><![CDATA[I 前言]]></title><link>https://blog.youkuaiyun.com/LG_mind/article/details/11696115</link><guid>https://blog.youkuaiyun.com/LG_mind/article/details/11696115</guid><author>LG_mind</author><pubDate>Sun, 15 Sep 2013 00:16:59 +0800</pubDate><description><![CDATA[本系列博客来源于coursera.org上Princeton的Algorithm I课程，也可看做另一种意义上的学习笔记。因为涉及到honor code，如果有读者发现本博客出现不恰当内容，还请通知笔者，以便及时改正；同时欢迎各位读者参与讨论具体算法或对问题的解决思路，但还请不要在讨论中直接出现实现代码。同时由于博主本身水平有限，有心的读者可以去C站直接学习该课程，这也算是对C站的推广吧。
如果]]></description><category></category></item><item><title><![CDATA[POJ  2063 Investment]]></title><link>https://blog.youkuaiyun.com/LG_mind/article/details/8195589</link><guid>https://blog.youkuaiyun.com/LG_mind/article/details/8195589</guid><author>LG_mind</author><pubDate>Sun, 18 Nov 2012 09:42:55 +0800</pubDate><description><![CDATA[题目链接：Investment


解析：W可变的完全背包问题，设dp[v]
表示i的金额完全用掉能得到的利息，W[i]表示i的代价，P[i]代表i的价值，则状态转移方程就是
dp[v]
 = MAX(dp[v],dp[v - W[i]] + 
P[i])；


输入：


测试数据组数T；
初始金额v，年限m；（v
 ）
可用投资数N；
 N 10

一下N]]></description><category></category></item><item><title><![CDATA[POJ 1276 Cash Machine]]></title><link>https://blog.youkuaiyun.com/LG_mind/article/details/8195546</link><guid>https://blog.youkuaiyun.com/LG_mind/article/details/8195546</guid><author>LG_mind</author><pubDate>Sun, 18 Nov 2012 08:34:51 +0800</pubDate><description><![CDATA[题目链接：Cash Machine


题意：分别给出N种货币的面值和数量，要求组合出不大于给定数额(cash)的最大的钱币总数。


输入：


每组数据一行，从左到右分别是:
要组合出的数额cash，钱币种类数n。以后每两数一组，分别代表钱币数量和面值。


解析：多重背包的变形，很巧妙的将常见的两种属性变成了一种，处理方法就是将每种货币的价值同时看成代价（因为总面值]]></description><category></category></item><item><title><![CDATA[POJ 1384 Piggy-Bank]]></title><link>https://blog.youkuaiyun.com/LG_mind/article/details/8195000</link><guid>https://blog.youkuaiyun.com/LG_mind/article/details/8195000</guid><author>LG_mind</author><pubDate>Sat, 17 Nov 2012 23:27:09 +0800</pubDate><description><![CDATA[题目链接 
POJ 1384


题意：有N种钱币，每一种有面值P和重量W两种属性。现给出存钱罐净重和现重，要求往存钱罐里放钱，能使存钱罐达到这种状态的最小总面值。


输入数据：
第一行一个T，代表测试数据组数。
第二行两个数分别代表存钱罐净重和现重。
第三行一个N，表示钱币种类。
以下N行，每行两个数P，W分别代表一种钱币的面值和重量。


解析： 变形的完全背包问]]></description><category></category></item><item><title><![CDATA[POJ 1095 卡特兰数]]></title><link>https://blog.youkuaiyun.com/LG_mind/article/details/8193841</link><guid>https://blog.youkuaiyun.com/LG_mind/article/details/8193841</guid><author>LG_mind</author><pubDate>Sat, 17 Nov 2012 15:12:03 +0800</pubDate><description><![CDATA[题目链接POJ 1095 Trees Made to Order


题意：对二叉树按一定规则编号，对给定编号N(1 


解析：这是碰到的第一个卡特兰数相关的题，不过涉及不深，只要稍微了解就足够了。算法就是对给定编号，由卡特兰数推出其左右子树编号即可递归得解。难点就是左右子数编号的求解，网上的题解大都是直接应用了如我代码中的公式，并未解释公式的来历，这给像我这样的新手造成了不小的困扰]]></description><category></category></item><item><title><![CDATA[POJ  2352   Stars  树状数组]]></title><link>https://blog.youkuaiyun.com/LG_mind/article/details/8146182</link><guid>https://blog.youkuaiyun.com/LG_mind/article/details/8146182</guid><author>LG_mind</author><pubDate>Sun, 04 Nov 2012 17:18:21 +0800</pubDate><description><![CDATA[POJ 2352 Stars


题意： 二维坐标平面上有一些星（*） ，问每个星左下方有多少个星


解析： 树状数组的另一类用法，不过由于题目保证星的输入顺序是已排列好的，使难度降低到了模版题一般


代码： 

#include 
#include 

#define MAXN 20000

int C[MAXN*2];
int ans[MAXN];    //a[i]]]></description><category></category></item><item><title><![CDATA[POJ    2029     Get Many Persimmon Trees    二维树状数组（水）]]></title><link>https://blog.youkuaiyun.com/LG_mind/article/details/8146131</link><guid>https://blog.youkuaiyun.com/LG_mind/article/details/8146131</guid><author>LG_mind</author><pubDate>Sun, 04 Nov 2012 17:03:14 +0800</pubDate><description><![CDATA[POJ 2029 Get Many Persimmon Trees


题意：一个二维数组（田地），每一元素只有0或1（有或没有柿子树），问能用给定的大小围住柿子树个数的上限




数据范围： 数组每一维大小N  


解析：   二维树状数组的模版题


PS：由于OJ上数据弱，还是算作水过，囧.
#include 
#include 

#define MAXN]]></description><category></category></item><item><title><![CDATA[POJ 1195  Mobile phones]]></title><link>https://blog.youkuaiyun.com/LG_mind/article/details/8146089</link><guid>https://blog.youkuaiyun.com/LG_mind/article/details/8146089</guid><author>LG_mind</author><pubDate>Sun, 04 Nov 2012 16:43:24 +0800</pubDate><description><![CDATA[POJ 1195 Mobile phones


题意： 一个二维数组，所有的数初始为0，会有两种操作：把某一个元素加上一个数（可负）；查询某一块方形区域所有数的和。要求程序返回查询结果。


数据范围：  数组没一维大小   S 


解析：   二维树状数组的纯模版题，没什么好说的。


代码：


#include 
#include 

#define MAX]]></description><category></category></item><item><title><![CDATA[poj    2299   树状数组+离散化]]></title><link>https://blog.youkuaiyun.com/LG_mind/article/details/8146044</link><guid>https://blog.youkuaiyun.com/LG_mind/article/details/8146044</guid><author>LG_mind</author><pubDate>Sun, 04 Nov 2012 16:27:48 +0800</pubDate><description><![CDATA[POJ2299 Ultra-QuickSort
题意：给定n个数组成的序列，要求求出将该序列重排成升序所需最小步数（每次只能交换相邻两个数的位置）


数据范围： n 



解析：      本题就是求该序列的逆序数，但数据范围较大，普通方法时间代价较高，选用数状数组实现，同时注意到a[i]的范围远大于n，采用离散化优化


代码：
//  原本采用qsort函数排序，但]]></description><category></category></item></channel></rss>