<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HOYITIO的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/HOYITIO</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; HOYITIO]]></copyright><item><title><![CDATA[1143 Lowest Common Ancestor （30 分）]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/84870354</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/84870354</guid><author>HOYITIO</author><pubDate>Fri, 07 Dec 2018 10:16:04 +0800</pubDate><description><![CDATA[题目链接：https://pintia.cn/problem-sets/994805342720868352/problems/994805343727501312
题目大意: 给一个二叉排序树的前序遍历， 给M (≤ 1,000)次查询，每次查询给出两个节点。查询他们的最低公共祖先。
分析：这道题给出来的树是一棵二叉排序树
二叉排序树又称“二叉查找树”、“二叉搜索树”。
二叉排序树：或者是一棵空...]]></description><category></category></item><item><title><![CDATA[PAT 甲级 1127 ZigZagging on a Tree]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/84578208</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/84578208</guid><author>HOYITIO</author><pubDate>Wed, 28 Nov 2018 08:43:09 +0800</pubDate><description><![CDATA[题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805349394006016
给一个二叉树的中序和和后序遍历，然后按每层输出，并且要第一层从左到右，第二层从右到左。。反正感觉有点诡异。
做的时候想了半天都没有什么可以偷懒的算法，只好老老实实地建树然后再广搜遍历。
第一次写根据中序和后序建树，写的时候参数改了半天...]]></description><category></category></item><item><title><![CDATA[PAT 甲级 1126 Eulerian Path]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/84578083</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/84578083</guid><author>HOYITIO</author><pubDate>Wed, 28 Nov 2018 08:18:16 +0800</pubDate><description><![CDATA[题目链接https://pintia.cn/problem-sets/994805342720868352/problems/994805349851185152
判断是不是欧拉图，也就是判断一个图的边能不能一笔画下来，如果能一笔画下来并且连到起始点的话输出Eulerian，如果能一笔画下来但是不能连到起始点的话，输出 semi-Eulerian ，其他情况输出Non-Eulerian
题目里面给...]]></description><category></category></item><item><title><![CDATA[HDU1078 Fat Mouse and Chess]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/79502924</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/79502924</guid><author>HOYITIO</author><pubDate>Fri, 09 Mar 2018 21:21:26 +0800</pubDate><description><![CDATA[一个记忆化搜索的题目，参考了网上的代码才写出来的。 
 dfs（x，y）表示从x，y开始走的话最大的结果是多少。每一次搜索上下左右k步中 最大的那一个 还有一点dp的思想。dp数组用来记录结果，并且防止重复判断。



#include&amp;lt;iostream&amp;gt;
#include&amp;lt;cstring&amp;gt;

using namespace std;

const int maxn = 1...]]></description><category></category></item><item><title><![CDATA[HDU1285 确定比赛名次]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/79471822</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/79471822</guid><author>HOYITIO</author><pubDate>Wed, 07 Mar 2018 15:24:03 +0800</pubDate><description><![CDATA[http://acm.hdu.edu.cn/showproblem.php?pid=1285

一个拓扑排序的题 这个题的输入数据保证正确 所以不用判断有没有解

一开始按书上的用栈还有邻接表的数据结构 写了半天没写出来 后来在网上看的这种用 
1.G数组赋值：ij有边给ij赋值为1 
2.D数组赋值：D[i]表示i点的入度 
3.找N-1次,每次找到第一个入度为0的点 输出 并且把和这个点发出的...]]></description><category></category></item><item><title><![CDATA[HDU 6186  CS Course]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/79368859</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/79368859</guid><author>HOYITIO</author><pubDate>Sun, 25 Feb 2018 14:54:08 +0800</pubDate><description><![CDATA[http://acm.hdu.edu.cn/showproblem.php?pid=6186 
 一开始自己做的时候一脸懵逼 然后在网上看了一下别人写的 又费了一番周折才A了这个题

意思是说 输入n个数 然后p次查询 每一次都输出除了第p个数以外 其他所有数的且运算，或运算，还有异或运算。思路也比较简单吧就是在一个数组里存前缀和 一个数组里存后缀和（前缀和也就是l[i]表示l[1]&amp;amp;l[...]]></description><category></category></item><item><title><![CDATA[HDU1205吃糖果]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/79333446</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/79333446</guid><author>HOYITIO</author><pubDate>Sat, 17 Feb 2018 22:33:28 +0800</pubDate><description><![CDATA[https://vjudge.net/problem/HDU-1205

恩….不算太难…但是脑子诡异的短路了一发

思路差不多是数目最多的糖果先摆着，然后如果剩下的可以插空插满，就是成立的 不可以插满的话就是不成立，对于测试数据是4 2 1  3个糖果先摆上 然后剩下的三个插在4个的中间就可以了 。所以是剩下的大于等于最大值减一……就在这个地方诡异的短路了、一开始以为是大于最大值加一才成立

#...]]></description><category></category></item><item><title><![CDATA[HDU 1003 Max Sum]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/78069962</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/78069962</guid><author>HOYITIO</author><pubDate>Sat, 23 Sep 2017 12:00:57 +0800</pubDate><description><![CDATA[https://vjudge.net/problem/HDU-1003 
刚开始接触DP算法，细节上错了好多次。整理一下 
dp数组存储以a[i]为结尾的和最大的子序列的值。 
如果dp[i-1]是负的则dp[i]肯定等于a[i]，并更新起始位置。 
最后判断一下dp[i]是不是目前最大的。#include<iostream>
#include<cstring>
using namespace st]]></description><category></category></item><item><title><![CDATA[Trees on the level  UVa 122]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/77482157</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/77482157</guid><author>HOYITIO</author><pubDate>Tue, 22 Aug 2017 16:39:49 +0800</pubDate><description><![CDATA[https://vjudge.net/problem/UVA-122 
学习的第一个关于树的题目，按着紫书上的思路来的。再整理一下#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>using namespace std;struct Node{//结点的结构体
    bool have_value;
    i]]></description><category></category></item><item><title><![CDATA[Friend-Graph HDU - 6152]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/77450354</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/77450354</guid><author>HOYITIO</author><pubDate>Mon, 21 Aug 2017 15:28:03 +0800</pubDate><description><![CDATA[https://vjudge.net/problem/HDU-6152 
我也是绝望啊 怎么写怎么超时 居然是人数大于6就直接是bad team了。证明：先从6个人中选出一个人，他与另外5人要么认识，要么不认识。  所以至少有3个人对于他是一样的（至少有三个人他都认识或都不认识）。 假设这3个人他都认识。 再看这三个人，若是他们三个中有两个人认识，则这两个人已经与第一个人组成3个人，互相都认识；若是]]></description><category></category></item><item><title><![CDATA[UVA 514 铁轨 （Rails）]]></title><link>https://blog.youkuaiyun.com/HOYITIO/article/details/77227113</link><guid>https://blog.youkuaiyun.com/HOYITIO/article/details/77227113</guid><author>HOYITIO</author><pubDate>Wed, 16 Aug 2017 10:18:36 +0800</pubDate><description><![CDATA[https://vjudge.net/problem/UVA-514解题思路：.A的铁轨从1到n依次判断 如果和当前轮到的铁轨相同 则从A驶入B，如果不相同，则入栈等候。每次判断之前先判断栈顶的元素是否和当前轮到的铁轨相同  直到不相同为止。#include<iostream>
#include<stack>using namespace std;int main()
{
    int N;]]></description><category></category></item></channel></rss>