<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CY05627的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CY05627</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CY05627]]></copyright><item><title><![CDATA[多线程初探]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/103672669</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/103672669</guid><author>CY05627</author><pubDate>Mon, 23 Dec 2019 20:37:55 +0800</pubDate><description><![CDATA[Java多线程的启动方法：

继承Thread类
实现Runnable接口
匿名类的方式

先来看看多线程的威力如何，后续才有动力
用读取文件来测试：
给出一个文件夹，统计文件夹里的所有包含字符串str的文件个数
两种办法：
第一种是普通做法，递归查询，找到文件后就地查
第二种是多线程做法，也是递归查询，找到文件后为它新建一个查询线程，然后继续向下查
查了一个小文件夹：

普通程序：


...]]></description><category></category></item><item><title><![CDATA[Uva674_Coin Change]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102975408</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102975408</guid><author>CY05627</author><pubDate>Fri, 08 Nov 2019 16:27:07 +0800</pubDate><description><![CDATA[题意：
用1、5、10、25、50 这五个面值的钱币去凑给定的金额n，问有多少种方案
思路：
定义状态: d（i, j）表示用前 i 种面值凑 j 共有多少种不同的方案
初始状态：
题目规定0金额有1种，d(1-5, 0) = 1;
前1中面值的凑法只有1种：d(1, 1-n) = 1;
状态转移：

当j &lt; a[i]， d（i, j） = d（i - 1, j - 1）；
当j &gt;...]]></description><category></category></item><item><title><![CDATA[LCS模板_uva10405]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102973685</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102973685</guid><author>CY05627</author><pubDate>Fri, 08 Nov 2019 15:12:56 +0800</pubDate><description><![CDATA[LCS:

i = 0或j = 0, f(i, j) = 0;
f(i, j) = f(i-1, j-1) + 1, a[i] = b[j];
f(i, j) = max(f(i, j-1), f(i-1, j));

#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;algorithm&gt;
using namespac...]]></description><category></category></item><item><title><![CDATA[半数集问题FZU1207]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102869141</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102869141</guid><author>CY05627</author><pubDate>Sat, 02 Nov 2019 10:38:59 +0800</pubDate><description><![CDATA[问题：
给定一个自然数n，由n开始可以依次产生半数集set(n)中的数如下。
(1)n∈set(n)；
(2)在n的左边加上一个自然数，但该自然数不能超过最近添加的数的一半；
(3)按此规则进行处理，直到不能再添加自然数为止。
例如，set(6)={6,16,26,126,36,136}。半数集set(6)中有6个元素。
注意 半数集不是多重集。集合中已经有的元素不再添加到集合中。
编程任务
对于...]]></description><category></category></item><item><title><![CDATA[Gray码]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102835447</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102835447</guid><author>CY05627</author><pubDate>Thu, 31 Oct 2019 12:14:23 +0800</pubDate><description><![CDATA[Gray码：
格雷码是一个数列集合，相邻两数间只有一个位元改变，为无权数码，且格雷码的顺序不是唯一 的
二进制转化为Gray码：

简便的算法：
二进制数右移一位，最高为补零，之后与原二进制值按位异或得到格雷码
//二进制---&gt;Gray码 
int binary2gray(int b){
	return b ^ (b &gt;&gt; 1);
}

Gray码转为二进制：

//Gray码...]]></description><category></category></item><item><title><![CDATA[二叉树遍历次序的转换]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102827972</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102827972</guid><author>CY05627</author><pubDate>Wed, 30 Oct 2019 22:03:52 +0800</pubDate><description><![CDATA[前序+中序------&gt;后序
取前序的第一个节点，一定是根节点，在中序中找对应的下标m，将中序序列分为[l,m-1]和[m+1, r]两个子序列，分别对应左子树和右子树，继续取第二个前序节点，应该是左子树的根节点（如果左子树存在），在[l, m-1]中找到其下标，继续二分…
中序+后序------&gt;前序
后序的最后的节点一定是根节点，为方便，可先将其反转，与上面同理
#include ...]]></description><category></category></item><item><title><![CDATA[线性时间选择]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102780700</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102780700</guid><author>CY05627</author><pubDate>Mon, 28 Oct 2019 14:46:58 +0800</pubDate><description><![CDATA[问题：
给定线性序集中n个元素和一个整数k，1≤k≤n，要求找出这n个元素中第k小的元素
法1：
randomizedSelect
思想：改编随机快速排序，不用把整个数组全部排序，而是选择的排序（更快）
时间复杂度：
（1）在最坏情况下，算法randomizedSelect需要O(n^2)计算时间
例如要找最小的元素，但是每次进行Partition函数划分时得到的位置总是很大（靠近n）（即总是在最...]]></description><category></category></item><item><title><![CDATA[汉诺塔(非递归)]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102726690</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102726690</guid><author>CY05627</author><pubDate>Thu, 24 Oct 2019 16:42:52 +0800</pubDate><description><![CDATA[算法：
假设塔座a,b,c排成一个三角形，a-&gt;b-&gt;c-&gt;a构成顺时针循环。在移动圆盘的过程中，若是奇数次移动，则将最小的圆盘移动到顺时针方向的下一个塔座上，若是偶数次移动，则保持最小圆盘不动，而在其他两座塔座之间，将较小的圆盘移动到另一个塔座上去
#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;sta...]]></description><category></category></item><item><title><![CDATA[最大间隙问题]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102723620</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102723620</guid><author>CY05627</author><pubDate>Thu, 24 Oct 2019 15:03:00 +0800</pubDate><description><![CDATA[问题描述：
最大间隙问题：给定n 个实数x1, x2 ,…, xn，求这n 个数在实轴上相邻2 个数之间的最大差值。假设对任何实数的下取整函数耗O(1)，设计解最大间隙问题的线性时间算法。
对于给定的n 个实数x1,x2,…,xn，编程计算它们的最大间隙
input.txt
5
2.3 3.1 7.5 1.5 6.3
output.txt
3.2
思路：
线性时间求解，所以不能排序来做。
鸽舍原理...]]></description><category></category></item><item><title><![CDATA[金币阵列问题]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102719568</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102719568</guid><author>CY05627</author><pubDate>Thu, 24 Oct 2019 11:23:10 +0800</pubDate><description><![CDATA[问题描述：有m*n枚金币在桌面上排列成一个m行n列的金币阵列。每一枚金币或正面朝上，或背面朝上。用数字表示金币状态，0表示正面朝上，1表示背面朝上。
金币阵列游戏的规则是：
（1）每次将任一行金币翻过来放在原来的位置上。
（2）每次可以任选2列，交换这2列金币的位置。
任务：给定金币的初始状态和目标状态，编程计算按金币游戏规则，将金币排列从初始状态变换到目标状态所需的最少变换次数。
解题思路：
本...]]></description><category></category></item><item><title><![CDATA[最多约数问题（二）]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102579415</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102579415</guid><author>CY05627</author><pubDate>Wed, 16 Oct 2019 09:46:09 +0800</pubDate><description><![CDATA[题意：
最多约数问题：正整数x的约数是能整除x的正整数。正整数x 的约数个数记为div(x)。例如，1，2，5，10 都是正整数10 的约数，且div(10)=4。设a 和b 是2 个正整数，a≤b，找出a和b之间约数个数最多的数x及其最多约数个数。
思路：

以[a,b]区间的数为单位, 暴力依次找出[a,b]每个数的约数个数
以质因子为单位，搜索每个落在区间[a,b]的数的约数个数

第二种的...]]></description><category></category></item><item><title><![CDATA[OS实验]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102556948</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102556948</guid><author>CY05627</author><pubDate>Mon, 14 Oct 2019 21:12:49 +0800</pubDate><description><![CDATA[实验一：系统启动
实模式和保护模式的区别以及寻址方式
实验二：系统调用
fork函数详解

]]></description><category></category></item><item><title><![CDATA[路由器简单配置]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102516719</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102516719</guid><author>CY05627</author><pubDate>Sat, 12 Oct 2019 11:32:57 +0800</pubDate><description><![CDATA[网络拓扑图:

可参考：传送门
Router0的配置：
配置端口：

配置静态RIP：

添加完后就出现这两行了，这两行指明了路由表的跳转信息：
要找172.16.0.0/24网段的ip，则下一跳去192.168.0.2
要找200.100.50.0/24网段，下一跳去192.168.0.2
Router1的配置
配置端口：

配置RIP：

测试
PC0-----》PC1

PC0-----》P...]]></description><category></category></item><item><title><![CDATA[反素数]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102510352</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102510352</guid><author>CY05627</author><pubDate>Fri, 11 Oct 2019 22:18:59 +0800</pubDate><description><![CDATA[先介绍一下求某个数的约数个数的算法

对于pi，有(ai+1)种取法：pi^0, pi^1, pi^2 … pi^ai，一共(a1+1)*(a2+1)…种取法，每种取法都代表一个约数，结果即约数的个数。
反素数定义
对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.
如果某个正整数x满足:
对于任意i(0&lt;i&lt;x),都有g(i) &lt; g(x),
则称x为...]]></description><category></category></item><item><title><![CDATA[统计数字问题]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/102490155</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/102490155</guid><author>CY05627</author><pubDate>Thu, 10 Oct 2019 20:35:02 +0800</pubDate><description><![CDATA[首先容易想到暴力法，即对每个数字拆解，计数，但是当n很大时很慢.
优化后的算法可以达到O(logn)的复杂度，明显好于暴力，具体参考：点这里
#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;cmath&gt;
#include &lt;ctime&gt;
using namespace std;

int ans1[10]...]]></description><category></category></item><item><title><![CDATA[Java无法加载主类]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/101434288</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/101434288</guid><author>CY05627</author><pubDate>Thu, 26 Sep 2019 12:43:10 +0800</pubDate><description><![CDATA[主要是两点：


java指令默认在寻找class文件的地址是通过CLASSPATH环境变量中指定的目录中寻找的。


我们忽略了package的影响。


直接看：解决办法

]]></description><category></category></item><item><title><![CDATA[POJ3154——GraveYard(思维)]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/101107736</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/101107736</guid><author>CY05627</author><pubDate>Sat, 21 Sep 2019 15:04:06 +0800</pubDate><description><![CDATA[题意：
在一个周长为10000的圆上等距分布着n个雕塑。现在又有m个新雕塑加入（位置可以随意放），希望所有n+m个雕塑在圆周上均匀分布。这就需要移动其中一些原有的雕塑。要求n个雕塑移动的总距离尽量小。
思路：
因为位置都是相对的，所以我们可以假设其中一个雕塑不动，以它为基准点。
在圆周上刻出n+m个等间距的点（包含基准点），让其余n-1个点选择离自己最近的点，这样最优。
这里的距离是等比例的距离，...]]></description><category></category></item><item><title><![CDATA[Uva11300_分金币（思维）]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/101105772</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/101105772</guid><author>CY05627</author><pubDate>Sat, 21 Sep 2019 14:01:31 +0800</pubDate><description><![CDATA[题意：
环形排列的n(n&lt;=106)个人，每人有一定量的金币。每个人可以给左右相邻的两个人金币，最终使得每
个人都有相同量的金币。求被转手的最小金币数。
思路：
感觉很复杂，解决起来非常巧妙，书上讲的很好，懒得写了，摘一段别人的

|x1 - Ci|的几何意义是数轴上一点x1到Ci的距离。所以问题转化为：给定数轴上n个点，找出一个到他们的距离之和最小的点。
这个点就是这些数中最中间的点。
#...]]></description><category></category></item><item><title><![CDATA[POJ1568_Find the Winning Move(α-β剪枝)]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/101079065</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/101079065</guid><author>CY05627</author><pubDate>Fri, 20 Sep 2019 21:16:28 +0800</pubDate><description><![CDATA[题意：
相当于四子棋，给出一个4x4的棋局的局面，问先手 “x” 是不是能找在接下来的一步中
找到一个必胜局面，如果有，输出 ‘x’ 下一步下子的坐标（行列都由 0 开始）；否则输出字符串 “#####”。
思路：
参看了这里的代码
第一次写博弈，看看别人的写法，先模仿，实践一下~
#include &lt;cstdio&gt;
using namespace std;
char G[5][5];...]]></description><category></category></item><item><title><![CDATA[SPOJ_10628_Count on a tree(树上第k大)]]></title><link>https://blog.youkuaiyun.com/CY05627/article/details/100781019</link><guid>https://blog.youkuaiyun.com/CY05627/article/details/100781019</guid><author>CY05627</author><pubDate>Thu, 12 Sep 2019 19:28:40 +0800</pubDate><description><![CDATA[题意：
给出一棵树，树上每个节点都有权值，有m个询问，求u到v的路径上第k大的数。
思路：
树上的第k大值，跟区间第k大有些不同，区间第k大每个值在前一个值的基础上新建一棵树，而树上第k大则是在父亲节点的基础上新建一棵树，子节点的主席树都是从底下根节点累加出来的
查询的时候，答案就是root[v] + root[u] - root[lca(v, u)] - root[fa[lca(v,u)]]上的...]]></description><category></category></item></channel></rss>