<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_23908539的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_23908539</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_23908539]]></copyright><item><title><![CDATA[cmu二进制炸弹]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454566</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454566</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:01:19 +0800</pubDate><description><![CDATA[本篇文章参考了:http://www.cnblogs.com/remlostime/archive/2011/05/21/2052708.html大神的文章，有时候没思路了会来看一下，但是保证本文的每个阶段都是自己独立思考后总结写出来的。
Phase_1

对于phase1，我们只要关注一下红色框两行的代码，分别是将内存0x8049678的处的字符串A和ebp+0x8处的字符串B作为参数来调]]></description><category></category></item><item><title><![CDATA[内存中的栈模型]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454563</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454563</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:01:06 +0800</pubDate><description><![CDATA[最近看完了Assembly Language For x86 Processors Sixth Edition By Kip R.Irvine中第8章对runtime stack的介绍，脑中对子程序调用时stack的过程有了一个完整的概念，现在来总结一下。
　　
　　首先一上来作者用了这么一段话非常精炼的总结了stack的几乎所有功能，其实要想完全掌握这个概念，脑中只要把调用子程序时生成sta]]></description><category></category></item><item><title><![CDATA[计算方法-C/C++牛顿迭代法求非线性方程近似根]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454562</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454562</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:00:59 +0800</pubDate><description><![CDATA[把f(x)在x0附近展开成泰勒级数f(x) = f(x0)+f'(x0)(x-x0)+f''(x0)/2!*(x-x0)^2+...然后取其线性部分，作为非线性方程f(x) = 0的近似方程，即泰勒展开的前两项，则有f(x) = f'(x0)x - x0*f'(x0) + f(x0) = 0f'(x0)x = x0*f'(x0) - f(x0)x = x0 - f(x0)/f'(x0)得到牛顿的一]]></description><category></category></item><item><title><![CDATA[计算方法-C/C++二分法求根]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454561</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454561</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:00:52 +0800</pubDate><description><![CDATA[问题：
给出方程f(x) = x^3+10x-20,求该方程在（1，2）上的根，其精度不小于10^-4
看似很简单的一个小问题，其实有很有细节值得注意，先给出代码
方法一：

#include 
#include 

double f(double x)
{
    return x*x*x+10*x-20;
}

int main()
{
    double l,]]></description><category></category></item><item><title><![CDATA[Java如何让异常处理机制更完备规范]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454557</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454557</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:00:47 +0800</pubDate><description><![CDATA[1）catch的Exception一定要详细的点名是某种异常而非一概而论的用Exception ex来接收所有的异常，往往不理解这点的人也不能很好的理解catch的意义到底在哪里，是对捕获的异常进行一定程度上的处理，那么我们对捕捉到的不同类型的异常自然要有不同的处理，这也就驱使着我们在catch的时候必须要声明具体的异常名称
2）其实在上一条中已经提及，就是要对捕获到的异常有所处理，而非仅仅pr]]></description><category></category></item><item><title><![CDATA[JDBC之ResultSet]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454554</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454554</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:00:40 +0800</pubDate><description><![CDATA[ResultSet is a interface
More gnerally,ResultSet is a class involves a table returned by executeQuery cluase from jdbc，which includes the whole information we wanna get from our query，however if we w]]></description><category></category></item><item><title><![CDATA[C++中关于函数的引用]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454550</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454550</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:00:34 +0800</pubDate><description><![CDATA[这一块知识最常见的疑问就是：

#include 
#include 
using namespace std;

int a[50];
int& fun(int& x)
{
	return x;
}
int main()
{
	int n;
	while(cin>>n)
	{
		int i;
		int tmp;
		for(i = 1;i <= n;i++]]></description><category></category></item><item><title><![CDATA[C++中输入输出流运算符的重载]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454548</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454548</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:00:28 +0800</pubDate><description><![CDATA[cout是ostream类的对象，cin是istream类的对象。
　　我们平时用的cout我们用的都是ostream类库中本身定义好了函数）
　　而当我们需要对cout由于ostream类库中已经定义好的成员函数我们是不能改写的，因此我们只能将。
　　ex:

ostream& operator<<(ostream& co,const Student& s) {
       co<]]></description><category></category></item><item><title><![CDATA[CF#345 div2 A\B\C题]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454547</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454547</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:00:22 +0800</pubDate><description><![CDATA[A题：
贪心水题，注意1，1这组数据，坑了不少人

#include 
#include 
using namespace std;

int main()
{
	int a1,a2;
	while(cin>>a1>>a2)
	{
		int i=0;
		int b = max(a1,a2);
		int s = min(a1,a2);
		if(b==1 && s]]></description><category></category></item><item><title><![CDATA[动态规划中的0-1背包模型]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454546</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454546</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:00:14 +0800</pubDate><description><![CDATA[看完题后能否形成一个清晰思路的关键就在于能否根据题意的描述构建出一个恰当的模型，适合这道题目本身同时又能联系自己之前头脑库中的模型。而对于01背包这类模型来说，形成的关键思维就在想最后一个n，即用一种抽象的语言把最终的结果给描述出来。
　　01背包的例子就不举了，这里先给出一个简单的01背包变形的例子：
　　
　　按照之前的逻辑，我们用抽象的语言描述这道题的结果就是：给定一个长度为n的数列，]]></description><category></category></item><item><title><![CDATA[hdu-1800]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454545</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454545</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:00:08 +0800</pubDate><description><![CDATA[思路：
这题被坑的不轻。
首先花了一段时间想明白了思路是要找出现次数最多数字，以为这题就这样解决了，结果发现每个数字的最大长度是30，long long都装不下，因此就要用字符串来保存处理。然后在insert的时候进行一下计数就可以了
最关键的地方是struct内的构造函数中，在初始化next数组的时候，一定要面面俱到！不然漏掉哪个，如果没有初始化，就相当于为空指针，就会出现内存泄露，就因为]]></description><category></category></item><item><title><![CDATA[hdu-4287 Intelligent IME]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454544</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454544</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 16:00:02 +0800</pubDate><description><![CDATA[思路：
AC了很爽。一开始看题的时候把要求的东西给搞反了，是用字母去找相应的数字出现次数。
只要用数字构建个Trie树，然后将每次输入进来的字母字符串给转换成数字，然后search一下就可以。
其中要注意end和id的灵活运用
 
AC代码：

#include 
#include 
using namespace std;

struct node
{
    int ]]></description><category></category></item><item><title><![CDATA[hdu-2846 Repository]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454542</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454542</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 15:59:58 +0800</pubDate><description><![CDATA[思路：
好题，必须记一笔。
这题有两个之前没有接触过的字典树新变形。
第一个是insert的方式，不再只是单单的将一整个单词都插进去，而是从单词的第一个字母开始往后遍历，依次插入第i个字母到末尾的单词，这样做就可以满足题目中“substring”的要求，即将“substring”的问题转换为我们熟悉的字典树可以解决的“前缀”问题。
第二个是标记每个char* s所属的原始字符串，这种做法可]]></description><category></category></item><item><title><![CDATA[hdu-1251]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454540</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454540</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 15:59:52 +0800</pubDate><description><![CDATA[思路：
Trie树模板的小变形，在模板中有一个思维拓展的点要值得我们注意，就是每一个节点的e值，在本题中他们不再用来标记单词的结尾，而是用来计数，因为对于Trie树的某一个确定的位置，一个给定的单词只能走过一遍，因此这样记录可以确定一个位置被多少个单词给“经过”，然后找前缀的时候只要遍历到的最后一个字母所在的位置，输出他的count即可。
 
AC代码：

#include 
#inc]]></description><category></category></item><item><title><![CDATA[hdu-1247]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454538</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454538</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 15:59:46 +0800</pubDate><description><![CDATA[思路：
字典树模板题


#include 
#include 
#include 
#define MAX 500007
using namespace std;

struct node
{
    int e;
    struct node* next[26];
};
node* root;
char str[MAX][50];

void Insert]]></description><category></category></item><item><title><![CDATA[hdu2444The Accomodation of Students]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454535</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454535</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 15:59:40 +0800</pubDate><description><![CDATA[思路：
二分图判断+最大匹配模板
二分图判断的方法很好想，没有离散的基础凭空给你个图让你判断也很容易想到染色法，简单的介绍下就是用queue来做，标记一个点为x则他所有的邻点都为x'，然后递归的执行下去。
接下来会面临一个比较有趣的问题，我们确定现在的图是二分图，然后我们要求它的最大匹配——这里涉及到一个很关键的问题，就是一个图我们说他自己是一个二分图，那么是他内部的一些点会分成两部分，分别]]></description><category></category></item><item><title><![CDATA[hdu-1598]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454534</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454534</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 15:59:35 +0800</pubDate><description><![CDATA[思路：
首先如果想到了Kruskal算法，那么下一步我们可能马上会想：那我们就从头开始写这个算法吧。然后一写就很容易发现一个问题——如果按照正常的Kruskal算法来做，那么start到end的舒适度中的那个“最小边”就只能是所有边中最小的那个，而这是明显不符合逻辑的事情，所以我们就会接着想，如果不是这个最小边，那它会是哪个边——当然是更大的边了，于是我们便开始按照从小到大的顺序去依次遍历所有的]]></description><category></category></item><item><title><![CDATA[POJ-2240]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454532</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454532</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 15:59:29 +0800</pubDate><description><![CDATA[Arbitrage




Time Limit: 1000MS
 
Memory Limit: 65536K


Total Submissions: 19063
 
Accepted: 8069




Description
Arbitrage is the use of discrepancies in currency exchange rates t]]></description><category></category></item><item><title><![CDATA[hdu-3790最短路径问题]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454528</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454528</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 15:59:22 +0800</pubDate><description><![CDATA[Problem Description
给你n个点，m条无向边，每条边都有长度d和花费p，给你起点s终点t，要求输出起点到终点的最短距离及其花费，如果最短距离有多条路线，则输出花费最少的。
 
 
Input
输入n,m，点的编号是1~n,然后是m行，每行4个数 a,b,d,p，表示a和b之间有一条边，且其长度为d，花费为p。最后一行是两个数 s,t;起点s，终点。n和m为0时输入结束。]]></description><category></category></item><item><title><![CDATA[HDU-1869六度分离]]></title><link>https://blog.youkuaiyun.com/qq_23908539/article/details/51454525</link><guid>https://blog.youkuaiyun.com/qq_23908539/article/details/51454525</guid><author>qq_23908539</author><pubDate>Fri, 29 Apr 2016 15:59:16 +0800</pubDate><description><![CDATA[Problem Description
1967 年，美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为“小世界现象(small world phenomenon)”的著名假说，大意是说，任何2个素不相识的人中间最多只隔着6个人，即只用6个人就可以将他们联系在一起，因此他的理论也被称为 “六度分离”理论(six degrees of separation)。虽然米尔格兰姆的理论屡屡应验，一直也有]]></description><category></category></item></channel></rss>