<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yanhua_tj的博客]]></title><description><![CDATA[一切都会好的，城南的花都开了。]]></description><link>https://blog.youkuaiyun.com/qq_42898536</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_42898536]]></copyright><item><title><![CDATA[博客搬家]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/109910206</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/109910206</guid><author>qq_42898536</author><pubDate>Sat, 21 Nov 2020 22:25:41 +0800</pubDate><description><![CDATA[博客搬家至yanhua-tj博客园

]]></description><category></category></item><item><title><![CDATA[算法：骨牌铺方格(递推)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/109634031</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/109634031</guid><author>qq_42898536</author><pubDate>Wed, 11 Nov 2020 23:43:03 +0800</pubDate><description><![CDATA[算法：骨牌铺方格(递推)
Description
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格，骨牌的铺放方案有三种,如下图： 
Input
输入数据由多行组成，每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0&lt; n&lt;=50)。
Output
对于每个测试实例，请输出铺放方案的总数，每个实例的输出占一行。
Sample Input
1
3
2

Sample Output
1
3
2

HINT
此题用l]]></description><category></category></item><item><title><![CDATA[今年暑假不AC(贪心)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/109633641</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/109633641</guid><author>qq_42898536</author><pubDate>Wed, 11 Nov 2020 23:18:03 +0800</pubDate><description><![CDATA[今年暑假不AC(贪心)
今年暑假不AC
Description
“今年暑假不AC？”
“是的。”
“那你干什么呢？”
“看世界杯呀，笨蛋！”
“@#$%^&amp;*%…”
确实如此，世界杯来了，球迷的节日也来了，估计很多ACMer也会抛开电脑，奔向电视了。
作为球迷，一定想看尽量多的完整的比赛，当然，作为新时代的好青年，你一定还会看一些其它的节目，比如新闻联播（永远不要忘记关心国家大事）、非常6+7、超级女生，以及王小丫的《开心辞典》等等，假设你已经知道了所有你喜欢看的电视节目的转播时间表，你会合理安排吗]]></description><category></category></item><item><title><![CDATA[sync_with_stdio(false)和cin.tie(NULL)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/109542178</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/109542178</guid><author>qq_42898536</author><pubDate>Sat, 07 Nov 2020 00:56:49 +0800</pubDate><description><![CDATA[std::ios::sync_with_stdio(false)

这个函数相当于是否兼容stdio的开关，默认为true
C++为了兼容C，保证程序在使用了std::printf和std::cout的时候不发生混乱，将输出流绑到了一起。
cin，cout之所以效率低，是因为先把要输出的东西存入缓冲区，再输出，导致效率降低。
而ios::sync_with_stdio(false);可以不经过输入输出缓存，可以节省许多时间，使效率与scanf与printf相差无几
注意的是：scanf与printf使用的头]]></description><category></category></item><item><title><![CDATA[会场安排问题(贪心 两种方法)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/109541922</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/109541922</guid><author>qq_42898536</author><pubDate>Sat, 07 Nov 2020 00:31:59 +0800</pubDate><description><![CDATA[会场安排问题(贪心)
Description
假设要在足够多的会场里安排一批活动，并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。（这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点，不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数，相应于要找的最小会场数。） 对于给定的k个待安排的活动，计算使用最少会场的时间表。
Input
输入数据的第一行有1 个正整数k（k≤10000），表示有k个待安排的活动。接下来的k行中，每行有2个正整数，分别表示k个待安排的活动开始时间和结束时]]></description><category></category></item><item><title><![CDATA[整数因子分解问题(递归分治法、动态规划)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/109523993</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/109523993</guid><author>qq_42898536</author><pubDate>Fri, 06 Nov 2020 01:26:05 +0800</pubDate><description><![CDATA[Description
大于1的正整数n可以分解为：n=x1 * x2 * … * xm。 例如，当n=12 时，共有8 种不同的分解式： 12=12； 12=6 * 2； 12=4 * 3； 12=3 * 4； 12=3 * 2 * 2； 12=2 * 6； 12=2 * 3 * 2； 12=2 * 2 * 3。 对于给定的正整数n，计算n共有多少种不同的分解式。
Input
输入数据只有一行，有1个正整数n (1≤n≤2000000000)。
Output
将计算出的不同的分解式数输出。
Sample ]]></description><category></category></item><item><title><![CDATA[背包问题(动态规划 C/C++)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/109408106</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/109408106</guid><author>qq_42898536</author><pubDate>Sat, 31 Oct 2020 21:17:58 +0800</pubDate><description><![CDATA[Description
卖方：这件商品14元
买方：给你20元
卖方：不好意思，我的零钱不够
买方：好吧，这是15元，剩的当小费
当到一个地方旅游时，如果你买东西的地方不支持信用，带零钱还是非常有用的。特别是有时候卖方没有零钱，如果你没有刚好的钱，你需要支付比卖价多一点。
当然你想付尽量少的钱（至少是商品价值的钱）。并且，当支付最少钱的时候，也最好是支付的硬币的数量最少。
Input
第一行包含一个整数表示测试数据的组数。每组测试数据每一行包含一个整数，表示你需要付的钱数，钱数不超过10000元。接下来包含]]></description><category></category></item><item><title><![CDATA[划分问题(Java 动态规划)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/109171848</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/109171848</guid><author>qq_42898536</author><pubDate>Mon, 19 Oct 2020 23:32:20 +0800</pubDate><description><![CDATA[Description
给定一个正整数的集合A={a1,a2,….,an},是否可以将其分割成两个子集合，使两个子集合的数加起来的和相等。例A = { 1, 3, 8, 4, 10} 可以分割：{1, 8, 4} 及 {3, 10}
Input
第一行集合元素个数n　　n &lt;=300 第二行n个整数
Output
如果能划分成两个集合，输出任意一个子集，否则输出“no”
Sample Input
5
1 3 8 4 10

Sample Output
3 10

一开始t[i][j]都为false
递]]></description><category></category></item><item><title><![CDATA[算法：Common Subsequence(动态规划 Java 最长子序列)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108957003</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108957003</guid><author>qq_42898536</author><pubDate>Wed, 07 Oct 2020 22:52:25 +0800</pubDate><description><![CDATA[Description
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = &lt; x1, x2, …, xm &gt; another sequence Z = &lt; z1, z2, …, zk &gt; is a subsequence of X if there exists a strictly incr]]></description><category></category></item><item><title><![CDATA[算法：矩阵连乘(Java)动态规划]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108945322</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108945322</guid><author>qq_42898536</author><pubDate>Tue, 06 Oct 2020 23:28:52 +0800</pubDate><description><![CDATA[Description
给你2个矩阵A、B，我们使用标准的矩阵相乘定义C=AB如下：

A数组中栏（column）的数目一定要等于B数组中列（row）的数目才可以做此2数组的相乘。若我们以rows(A)，columns(A)分 别代表A数组中列及栏的数目，要计算C数组共需要的乘法的数目为：rows(A)*columns(B)*columns(A)。
例如：A数组是一个 10x20的矩阵，B数组是个20x15的矩阵，那么要算出C数组需要做101520，也就是3000次乘法。 要计算超过2个以上的矩阵相乘就得决]]></description><category></category></item><item><title><![CDATA[Frogs‘ Neighborhood(POJ 1659 C/C++)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108933532</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108933532</guid><author>qq_42898536</author><pubDate>Mon, 05 Oct 2020 21:58:43 +0800</pubDate><description><![CDATA[poj 1659
Description
未名湖附近共有N个大小湖泊L1, L2, …, Ln(其中包括未名湖)，每个湖泊Li里住着一只青蛙Fi(1 ≤ i ≤ N)。如果湖泊Li和Lj之间有水路相连，则青蛙Fi和Fj互称为邻居。现在已知每只青蛙的邻居数目x1, x2, …, xn，请你给出每两个湖泊之间的相连关系。
Input
第一行是测试数据的组数T(0 ≤ T ≤ 20)。每组数据包括两行，第一行是整数N(2 &lt; N &lt; 10)，第二行是N个整数，x1, x2,…, xn(0 ≤ xi ≤]]></description><category></category></item><item><title><![CDATA[算法：线性时间选择(C/C++)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108837974</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108837974</guid><author>qq_42898536</author><pubDate>Sun, 27 Sep 2020 22:26:44 +0800</pubDate><description><![CDATA[Description
给定线性序集中n个元素和一个整数k，n&lt;=2000000，1&lt;=k&lt;=n，要求找出这n个元素中第k小的数。
Input
第一行有两个正整数n,k.
接下来是n个整数（0&lt;=ai&lt;=1e9）。
Output
输出第k小的数
Sample Input
6 3
1 3 5 2 4 6

Sample Output
3

利用快速排序可以找出第k小的，加上随机函数改进一下：
AC代码：
#include &lt;cstdio&gt;
#include &lt;c]]></description><category></category></item><item><title><![CDATA[sort(hdu oj 1425)计数排序和快速排序]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108722571</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108722571</guid><author>qq_42898536</author><pubDate>Tue, 22 Sep 2020 00:28:13 +0800</pubDate><description><![CDATA[Description
给你n个整数，请按从大到小的顺序输出其中前m大的数。
Input
每组测试数据有两行，第一行有两个数n,m(0 &lt; n,m &lt; 1000000)，第二行包含n个各不相同，且都处于区间[-500000,500000]的整数。
Output
对每组测试数据按从大到小的顺序输出前m大的数。
Sample Input
5 3
3 -35 92 213 -644

Sample Output
213 92 3

emm
一开始呢，用快速排序找前m大的数
一提交，超时……淦
后来度娘]]></description><category></category></item><item><title><![CDATA[快速排序(递归和分治)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108708168</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108708168</guid><author>qq_42898536</author><pubDate>Mon, 21 Sep 2020 13:23:06 +0800</pubDate><description><![CDATA[算法思想
先通过一个函数，标记第一个元素为基准元素，
然后分为左边都是大于基准元素的
右边都是小于基准元素的
然后使用排序函数分别对左半段和右半段进行排序
时间复杂度
最坏情况：O(n2)O(n^2)O(n2)
最好情况：O(nlog2n)O(nlog_2n)O(nlog2​n)
平均情况：O(nlog2n)O(nlog_2n)O(nlog2​n)
动态演示图
图片来源

C/C++代码实现
#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;

void qui]]></description><category></category></item><item><title><![CDATA[a^b(取模运算)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108696132</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108696132</guid><author>qq_42898536</author><pubDate>Sun, 20 Sep 2020 17:55:26 +0800</pubDate><description><![CDATA[Description
对于任意两个正整数a,b（0 &lt;= a, b &lt; 10000）计算ab各位数字的和的各位数字的和的各位数字的和的各位数字的和。
Input
输入有多组数据，每组只有一行，包含两个正整数a,b。最后一组a=0,b=0表示输入结束，不需要处理。
Output
对于每组输入数据，输出ab各位数字的和的各位数字的和的各位数字的和的各位数字的和。
Sample Input
2 3
5 7
0 0

Sample Output
8
5

用到的知识点

(a+b)%mod=((a%m]]></description><category></category></item><item><title><![CDATA[To the Max(动态规划)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108687659</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108687659</guid><author>qq_42898536</author><pubDate>Sun, 20 Sep 2020 00:02:29 +0800</pubDate><description><![CDATA[Description
Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*1 or greater located within the whole array. The sum of a rectangle is the sum of all the elements in that rectangle. In this]]></description><category></category></item><item><title><![CDATA[最大子段和问题(C/C++)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108684656</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108684656</guid><author>qq_42898536</author><pubDate>Sat, 19 Sep 2020 19:03:58 +0800</pubDate><description><![CDATA[Description
给定有n个整数(可能为负整数)组成的序列a1, a2, …, an，求该序列连续的子段和的最大值。 如果该子段的所有元素和是负整数时定义其最大子段和为0。
Input
第一行有一个正整数n(n&lt;1000)，后面跟n个整数,绝对值都小于10000。直到文件结束。
Output
输出它的最大子段和。
Sample Input
6 -2 11 -4 13 -5 -2

Sample Output
20

参考链接: 最大字段和详解


穷举法
时间复杂度：O(n3)O(n^3)O(n]]></description><category></category></item><item><title><![CDATA[最多约数问题(Java)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108656421</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108656421</guid><author>qq_42898536</author><pubDate>Fri, 18 Sep 2020 00:28:29 +0800</pubDate><description><![CDATA[Description
正整数x 的约数是能整除x 的正整数。正整数x的约数个数记为div(x)。例如，1，2，5，10 都是正整数10的约数，且div(10)=4。设a 和b是2 个正整数，a≤b，找出a 和b之间约数个数最多的数x。对于给定的2 个正整数a≤b，计算a 和b之间约数个数最多的数。
Input
输入数据的第1行有2个正整数a和 b，a≤1000000000，b≤1000000000。
Output
若找到的a 和b之间约数个数最多的数是x，将div(x)输出。
Sample Input
1]]></description><category></category></item><item><title><![CDATA[字典序问题(Java)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108555714</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108555714</guid><author>qq_42898536</author><pubDate>Sat, 12 Sep 2020 21:50:21 +0800</pubDate><description><![CDATA[Description
在数据加密和数据压缩中常需要对特殊的字符串进行编码。
给定的字母表A由 26 个小写英文字母组成A={a,b,…,z}。
该字母表产生的升序字符串是指字符串中字母按照从左到右出现的次序与字母在字母表中出现的次序相同，且每个字符最多出现1次。
例如，a,b,ab,bc,xyz等字符串都是升序字符串。现在对字母表A 产生的所有长度不超过6 的升序字符串按照字典序排列并编码如下。

对于任意长度不超过6 的升序字符串，迅速计算出它在上述字典中的编码。对于给定的长度不超过6 的升序字符串，计]]></description><category></category></item><item><title><![CDATA[统计数字问题(Java)]]></title><link>https://blog.youkuaiyun.com/qq_42898536/article/details/108457999</link><guid>https://blog.youkuaiyun.com/qq_42898536/article/details/108457999</guid><author>qq_42898536</author><pubDate>Mon, 07 Sep 2020 22:41:28 +0800</pubDate><description><![CDATA[统计数字问题(Java)
Description
一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排，每个页码都不含多余的前导数字0。例如，第6 页用数字6 表示，而不是06 或006 等。数字计数问题要求对给定书的总页码n，计算出书的全部页码中分别用到多少次数字0，1， 2，…，9。给定表示书的总页码的10 进制整数n (1≤n≤10^9) 。计算书的全部页码中分别用到多少次数字0，1，2，…，9。
Input
输入数据只有1 行，给出表示书的总页码的整数n。
Output
输出]]></description><category></category></item></channel></rss>