<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_52834059的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_52834059</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_52834059]]></copyright><item><title><![CDATA[扩展欧几里得算法   算法训练]]></title><link>https://blog.youkuaiyun.com/m0_52834059/article/details/112861092</link><guid>https://blog.youkuaiyun.com/m0_52834059/article/details/112861092</guid><author>m0_52834059</author><pubDate>Wed, 20 Jan 2021 13:07:51 +0800</pubDate><description><![CDATA[今天刚学扩展欧几里得算法，打算趁热写篇博客回顾一下，顺便防止以后自己忘记了。
话不多说。
首先请出欧几里得算法，还是非常简洁明了的。
int gcd(int a, int b)
{
	if (b == 0)
	{
		return a;
    }
	return gcd(b, a % b);
}

顺便提一句，欧几里得算法不需要考虑a和b的大小，因为假如a&lt;b，会return (b,a%b);a%b=a,相当于交换了一次，因此不需要考虑大小。（以前老是忘记，一直考虑大小问题）
然后就要写扩展欧几里得]]></description><category></category></item><item><title><![CDATA[UVA 1347 Tour(DP) 紫书训练]]></title><link>https://blog.youkuaiyun.com/m0_52834059/article/details/112700591</link><guid>https://blog.youkuaiyun.com/m0_52834059/article/details/112700591</guid><author>m0_52834059</author><pubDate>Sat, 16 Jan 2021 13:37:38 +0800</pubDate><description><![CDATA[题目链接:UVA 1347
做题感受：看到题自己想没啥思路，也想不出将一人来回改成两人同时走到终点，自己本来的想法是构造一个三维数组dp[i][j][0]和dp[i][j][1]分别表示过去和回来的状态，但是写到后面发现状态转移方程写不出来，不知道该怎么转移，感觉主要还是状态转移方程太难写，结合lrj的分析和别人的博客分析最后才勉强写出来了。(其实我真没看出来这跟DAG有特别大关系，我就觉得勉勉强强搭上边)
（感觉思路分析太长的还是直接看概括吧，个人感觉自己思路分析写的不太好）
思路:
紫书上写的挺明白了，]]></description><category></category></item><item><title><![CDATA[UVA 437 The Tower of Babylon（DAG）紫书训练]]></title><link>https://blog.youkuaiyun.com/m0_52834059/article/details/112692442</link><guid>https://blog.youkuaiyun.com/m0_52834059/article/details/112692442</guid><author>m0_52834059</author><pubDate>Sat, 16 Jan 2021 10:27:58 +0800</pubDate><description><![CDATA[题目链接:https://vjudge.net/problem/UVA-437
做题感受：DAG的跟进版本，主要考虑的是如何把状态转移方程表示出来，这道题难在表示，但是实际上又可以不用在表示上困惑，我自己按lrj的方法做了半天没做出来（还是太菜），看别人的方法一下就出来了(自己做的时候甚至开了一个四维数组，还做不出来)。(lrj的方法以后找时间补一下吧)
思路：化立体为平面，把每个x,y,z都分别当做长，宽，高
也就是
xyz
xzy
yzx
yxz
zxy
zyx
这种顺序，（因为实际上自己的情况和自己的]]></description><category></category></item><item><title><![CDATA[UVa1025 A Spy in the Metro（DP） 紫书训练]]></title><link>https://blog.youkuaiyun.com/m0_52834059/article/details/112667890</link><guid>https://blog.youkuaiyun.com/m0_52834059/article/details/112667890</guid><author>m0_52834059</author><pubDate>Fri, 15 Jan 2021 14:58:06 +0800</pubDate><description><![CDATA[题目链接:UVA1025
做题感受:完全不会，感觉跟刚学的DAG搭不上边，看了lrj的解析还是感觉不出和DAG有太大关系，而且还有一小部分还不能完全理解，以后再回来看看吧。
思路:在第i秒，第j站有三种决策，
1 在车站上停一秒
2 上车向右走
3 上车向左走
第2种和第3种决策可以更新第i秒，第j站的时间，因为他说明在第i秒时向右（或是向左）的车站有车跟他是连通的。
还有一小部分，就是为啥逆推，我一开始自己写的时候用的是顺推，推了半天就是推不出来，看了lrj的代码发现是逆推的，我个人看了一下感觉是逆推写起]]></description><category></category></item><item><title><![CDATA[嵌套矩形（DAG模型） 紫书训练]]></title><link>https://blog.youkuaiyun.com/m0_52834059/article/details/112398752</link><guid>https://blog.youkuaiyun.com/m0_52834059/article/details/112398752</guid><author>m0_52834059</author><pubDate>Sat, 09 Jan 2021 19:01:29 +0800</pubDate><description><![CDATA[题目描述
有n个矩形，每个矩形可以用a,b来描述，表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a&lt;c,b&lt;d或者b&lt;c,a&lt;d（相当于旋转X90度）。例如（1,5）可以嵌套在（6,2）内，但不能嵌套在（3,4）中。你的任务是选出尽可能多的矩形排成一行，使得除最后一个外，每一个矩形都可以嵌套在下一个矩形内。(最后要输出最长路径长度以及字典序最长路径的所有节点)
样例输入
1
10
1 2
2 4
5 8
6 10
7 9
3 1
5 8
12 10
9 7
2 2
]]></description><category></category></item><item><title><![CDATA[UVa1442  洞穴（扫描法）紫书训练]]></title><link>https://blog.youkuaiyun.com/m0_52834059/article/details/112121195</link><guid>https://blog.youkuaiyun.com/m0_52834059/article/details/112121195</guid><author>m0_52834059</author><pubDate>Sat, 02 Jan 2021 21:43:27 +0800</pubDate><description><![CDATA[题目大意：有一个山洞用于存放石油，给出山洞的长度n，以及每个位置的底高度以及顶高度，要求存放石油不能没过顶，求最大的放油量。
做题感受:挺离谱的，我自己莫名其妙想的用滑动窗口做，反正做了好几个小时没做出来,最后还是去看了lrj的分析，看到他的代码是真的短，我自己写了半天还写的贼长，反正真的是佩服。
分析：设level=s[0],判断[i,i+1]处的高度（其实level也就是i的高度，i则是i+1的高度，i和i+1进行比较）从左至右扫描，如果p[i]&gt;level,说明水被阻隔了，需要把level提升至]]></description><category></category></item><item><title><![CDATA[UVa1609 Foul Play 不公平竞赛 （直接构造法）紫书训练]]></title><link>https://blog.youkuaiyun.com/m0_52834059/article/details/112059329</link><guid>https://blog.youkuaiyun.com/m0_52834059/article/details/112059329</guid><author>m0_52834059</author><pubDate>Fri, 01 Jan 2021 14:23:08 +0800</pubDate><description><![CDATA[题意：
n支队伍打淘汰赛，每轮都是两两配对，胜者进入下一轮。
每支队伍的实力固定，并且已知每两支队伍间的比赛结果（不可能为平局，则一定有一方打败另一方），你喜欢一号队，但是一号队不一定是最强的，但是他可以直接打败其他队伍中的至少一半，并且对于每支一号队不能打败的队伍t，总是存在一支1号队能直接打败的队伍t’ 使得t’ 能直接打败t，输出比赛安排。先输出最底层的，比如n = 8 先输出 8场第一轮比赛 4场第二轮比赛 2 场第三轮比赛 1场第四轮比赛。
分析：
紫书上p

...]]></description><category></category></item><item><title><![CDATA[UVA 1608 不无聊的序列（中途相遇+递归分治） 紫书训练]]></title><link>https://blog.youkuaiyun.com/m0_52834059/article/details/112006614</link><guid>https://blog.youkuaiyun.com/m0_52834059/article/details/112006614</guid><author>m0_52834059</author><pubDate>Thu, 31 Dec 2020 12:54:01 +0800</pubDate><description><![CDATA[UVA 1608 不无聊的序列
题意:给出一个序列，如果他的任何一个连续的子序列都有至少一个特殊元素（在这个子序列中只出现一次），则这个序列是non-boring，否则是boring
思路:可以与紫书前面的唯一的雪花那道题进行对比，唯一的雪花那道题利用map寻找与a[i]相同的数在之前的位置，而这道题则是变成了利用map寻找与a[i]相同的数在之前还有之后的位置，也就是找last和next。同时从至少有一个元素在该序列中只出现一次得出只要有一个数只出现一次，只需要检测这个数之前的序列和这个数之后的序列即可，]]></description><category></category></item><item><title><![CDATA[UVA 12174 Shuffle（滑动窗口优化） 紫书训练]]></title><link>https://blog.youkuaiyun.com/m0_52834059/article/details/111981793</link><guid>https://blog.youkuaiyun.com/m0_52834059/article/details/111981793</guid><author>m0_52834059</author><pubDate>Wed, 30 Dec 2020 15:05:54 +0800</pubDate><description><![CDATA[UVA 12174 Shuffle
题意：有个音乐播放器有乱序功能，可以随机播放1 ~ s首歌曲，每次随机播放完后再次打乱顺序随机播放（在播放完这一组的歌曲之前，不会再次乱序，直到全部播完）。现截取一段记录，给定播放的歌曲数 s 以及这段记录的长度 n ，然后输入这段记录，根据这段记录，求随机排序发生的时刻有几种可能。（1 &lt;= s, n &lt;= 100000）
个人理解：我是真fw，先看了紫书的分析用滑动窗口，写了好几个小时，也没写出来，盯着lrj的代码看，看了半天最后才差不多理解了，利用了滑动]]></description><category></category></item></channel></rss>