<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[YSA__的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/YSA__</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; YSA__]]></copyright><item><title><![CDATA[外星日历（大数取余）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/115542886</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/115542886</guid><author>YSA__</author><pubDate>Fri, 09 Apr 2021 11:17:34 +0800</pubDate><description><![CDATA[1、题目
某星系深处发现了文明遗迹。
他们的计数也是用十进制。
他们的文明也有日历。日历只有天数，没有年、月的概念。
有趣的是，他们也使用了类似“星期”的概念，
只不过他们的一个星期包含了9天，
为了方便，这里分别记为: A,B,C…H,I
从一些资料上看到，
他们的23日是星期E
他们的190日是星期A
他们的343251日是星期I
令人兴奋的是，他们居然也预见了“世界末日”的那天，
当然是一个很大很大的数字
651764141421415346185
请你计算一下，这遥远的一天是该文明的星期几？
你需要]]></description><category></category></item><item><title><![CDATA[AcWing1205. 买不到的数目（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/113747344</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/113747344</guid><author>YSA__</author><pubDate>Sun, 07 Feb 2021 21:18:52 +0800</pubDate><description><![CDATA[1、题目：
小明开了一家糖果店。
他别出心裁：把水果糖包成4颗一包和7颗一包的两种。
糖果不能拆包卖。
小朋友来买糖的时候，他就用这两种包装来组合。
当然有些糖果数目是无法组合出来的，比如要买 10 颗糖。
你可以用计算机测试一下，在这种包装情况下，最大不能买到的数量是17。
大于17的任何数字都可以用4和7组合出来。
本题的要求就是在已知两个包装的数量时，求最大不能组合出的数字。
输入格式
两个正整数 n,m，表示每种包装中糖的颗数。
输出格式
一个正整数，表示最大不能买到的糖数。
数据范围
2≤n,m≤]]></description><category></category></item><item><title><![CDATA[AcWing843. n-皇后问题（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/112859598</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/112859598</guid><author>YSA__</author><pubDate>Wed, 20 Jan 2021 10:56:31 +0800</pubDate><description><![CDATA[1、题目：
n-皇后问题是指将 n 个皇后放在 n∗n 的国际象棋棋盘上，使得皇后不能相互攻击到，即任意两个皇后都不能处于同一行、同一列或同一斜线上。

现在给定整数n，请你输出所有的满足条件的棋子摆法。
输入格式
共一行，包含整数n。
输出格式
每个解决方案占n行，每行输出一个长度为n的字符串，用来表示完整的棋盘状态。
其中”.”表示某一个位置的方格状态为空，”Q”表示某一个位置的方格上摆着皇后。
每个方案输出完成后，输出一个空行。
输出方案的顺序任意，只要不重复且没有遗漏即可。
数据范围
1≤n≤9
输]]></description><category></category></item><item><title><![CDATA[C++学习小记]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/107455924</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/107455924</guid><author>YSA__</author><pubDate>Sun, 17 Jan 2021 11:21:54 +0800</pubDate><description><![CDATA[1、scanf读入字符时不会忽略空格和回车，但cin默认会忽略空格和回车。

]]></description><category></category></item><item><title><![CDATA[AcWing868. 筛质数 (朴素筛法、埃氏筛法、线性筛法）（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/109366738</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/109366738</guid><author>YSA__</author><pubDate>Fri, 30 Oct 2020 20:39:09 +0800</pubDate><description><![CDATA[AcWing868. 筛质数 (埃式筛法和线性筛法）
1、题目：
给定一个正整数n，请你求出1~n中质数的个数。
输入格式
共一行，包含整数n。
输出格式
共一行，包含一个整数，表示1~n中质数的个数。
数据范围
1≤n≤106
输入样例：
8
输出样例：
4
2、基本思想：
(1)埃式筛法：

...]]></description><category></category></item><item><title><![CDATA[AcWing867. 分解质因数（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/109350355</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/109350355</guid><author>YSA__</author><pubDate>Thu, 29 Oct 2020 08:33:38 +0800</pubDate><description><![CDATA[AcWing867. 分解质因数
1、题目：
给定n个正整数ai，将每个数分解质因数，并按照质因数从小到大的顺序输出每个质因数的底数和指数。
输入格式
第一行包含整数n。
接下来n行，每行包含一个正整数ai。
输出格式
对于每个正整数ai,按照从小到大的顺序输出其分解质因数后，每个质因数的底数和指数，每个底数和指数占一行。
每个正整数的质因数全部输出完毕后，输出一个空行。
数据范围
1≤n≤100,
1≤ai≤2∗109
输入样例：
2
6
8
输出样例：
2 1
3 1
2 3
2、基本思想：
①暴力枚举]]></description><category></category></item><item><title><![CDATA[AcWing866. 试除法判定质数（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/109347143</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/109347143</guid><author>YSA__</author><pubDate>Wed, 28 Oct 2020 23:04:16 +0800</pubDate><description><![CDATA[AcWing866. 试除法判定质数
1、题目：
给定n个正整数ai，判定每个数是否是质数。
输入格式
第一行包含整数n。
接下来n行，每行包含一个正整数ai。
输出格式
共n行，其中第 i 行输出第 i 个正整数ai是否为质数，是则输出“Yes”，否则输出“No”。
数据范围
1≤n≤100,
1≤ai≤2∗109
输入样例：
2
2
6
输出样例：
Yes
No
2、基本思想：
①暴力枚举：根据求质数的基本定义计算,时间复杂度为O(n);
②优化：根据质数的基本性质（M能被d整除,则M也能被M/d整除）]]></description><category></category></item><item><title><![CDATA[AcWing854. Floyd求最短路（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/109229740</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/109229740</guid><author>YSA__</author><pubDate>Thu, 22 Oct 2020 20:42:30 +0800</pubDate><description><![CDATA[AcWing854. Floyd求最短路
1、题目：
给定一个n个点m条边的有向图，图中可能存在重边和自环，边权可能为负数。
再给定k个询问，每个询问包含两个整数x和y，表示查询从点x到点y的最短距离，如果路径不存在，则输出“impossible”。
数据保证图中不存在负权回路。
输入格式
第一行包含三个整数n，m，k
接下来m行，每行包含三个整数x，y，z，表示存在一条从点x到点y的有向边，边长为z。
接下来k行，每行包含两个整数x，y，表示询问点x到点y的最短距离。
输出格式
共k行，每行输出一个整数，]]></description><category></category></item><item><title><![CDATA[AcWing847. 图中点的层次（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/109090936</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/109090936</guid><author>YSA__</author><pubDate>Thu, 15 Oct 2020 09:50:32 +0800</pubDate><description><![CDATA[AcWing847. 图中点的层次
1、题目：
给定一个n个点m条边的有向图，图中可能存在重边和自环。
所有边的长度都是1，点的编号为1~n。
请你求出1号点到n号点的最短距离，如果从1号点无法走到n号点，输出-1。
输入格式
第一行包含两个整数n和m。
接下来m行，每行包含两个整数a和b，表示存在一条从a走到b的长度为1的边。
输出格式
输出一个整数，表示1号点到n号点的最短距离。
数据范围
1≤n,m≤105
输入样例：
4 5
1 2
2 3
3 4
1 3
1 4
输出样例：
1
2、基本思想：
用]]></description><category></category></item><item><title><![CDATA[AcWing846. 树的重心（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/109066382</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/109066382</guid><author>YSA__</author><pubDate>Wed, 14 Oct 2020 22:56:52 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 
using namespace std;
const int N = 100010, M = N * 2;
int n;
int h[N], e[M], ne[M], idx;
int ans = N;
bool st[N];
void add(int a, int b)
{
e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}
int dfs(int u)
{
st[u] = true;
]]></description><category></category></item><item><title><![CDATA[AcWing848. 有向图的拓扑序列（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/108954215</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/108954215</guid><author>YSA__</author><pubDate>Wed, 07 Oct 2020 19:35:43 +0800</pubDate><description><![CDATA[AcWing848. 有向图的拓扑序列
1、题目：
给定一个n个点m条边的有向图，点的编号是1到n，图中可能存在重边和自环。
请输出任意一个该有向图的拓扑序列，如果拓扑序列不存在，则输出-1。
若一个由图中所有点构成的序列A满足：对于图中的每条边(x, y)，x在A中都出现在y之前，则称A是该图的一个拓扑序列。
输入格式
第一行包含两个整数n和m
接下来m行，每行包含两个整数x和y，表示存在一条从点x到点y的有向边(x, y)。
输出格式
共一行，如果存在拓扑序列，则输出拓扑序列。
否则输出-1。
数据范围]]></description><category></category></item><item><title><![CDATA[AcWing 844. 走迷宫（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/108671831</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/108671831</guid><author>YSA__</author><pubDate>Fri, 18 Sep 2020 19:54:05 +0800</pubDate><description><![CDATA[AcWing 844. 走迷宫
1、题目：
给定一个n*m的二维整数数组，用来表示一个迷宫，数组中只包含0或1，其中0表示可以走的路，1表示不可通过的墙壁。
最初，有一个人位于左上角(1, 1)处，已知该人每次可以向上、下、左、右任意一个方向移动一个位置。
请问，该人从左上角移动至右下角(n, m)处，至少需要移动多少次。
数据保证(1, 1)处和(n, m)处的数字为0，且一定至少存在一条通路。
输入格式
第一行包含两个整数n和m。
接下来n行，每行包含m个整数（0或1），表示完整的二维数组迷宫。
输出格]]></description><category></category></item><item><title><![CDATA[AcWing 842. 排列数字（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/108501166</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/108501166</guid><author>YSA__</author><pubDate>Wed, 09 Sep 2020 20:14:34 +0800</pubDate><description><![CDATA[AcWing 842. 排列数字
1、题目：
给定一个整数n，将数字1~n排成一排，将会有很多种排列方法。
现在，请你按照字典序将所有的排列方法输出。
输入格式
共一行，包含一个整数n。
输出格式
按字典序输出所有排列方案，每个方案占一行。
数据范围
1≤n≤7
输入样例：
3
输出样例：
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
2、基本思想：
递归，按照字典序每排完一组（三级，比如1 2 3）就回溯上一级确定上一级要排的数。为了避免重复用state做位移运算，标记已经有数据]]></description><category></category></item><item><title><![CDATA[AcWing 841. 字符串哈希（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/108453403</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/108453403</guid><author>YSA__</author><pubDate>Mon, 07 Sep 2020 18:39:26 +0800</pubDate><description><![CDATA[AcWing 841. 字符串哈希
1、题目：
给定一个长度为n的字符串，再给定m个询问，每个询问包含四个整数l1,r1,l2,r2，请你判断[l1,r1]和[l2,r2]这两个区间所包含的字符串子串是否完全相同。
字符串中只包含大小写英文字母和数字。
输入格式
第一行包含整数n和m，表示字符串长度和询问次数。
第二行包含一个长度为n的字符串，字符串中只包含大小写英文字母和数字。
接下来m行，每行包含四个整数l1,r1,l2,r2，表示一次询问所涉及的两个区间。
注意，字符串的位置从1开始编号。
输出格式
]]></description><category></category></item><item><title><![CDATA[AcWing 840. 模拟散列表（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/108437830</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/108437830</guid><author>YSA__</author><pubDate>Mon, 07 Sep 2020 10:57:44 +0800</pubDate><description><![CDATA[AcWing 840. 模拟散列表
1、题目：
维护一个集合，支持如下几种操作：
“I x”，插入一个数x；
“Q x”，询问数x是否在集合中出现过；
现在要进行N次操作，对于每个询问操作输出对应的结果。
输入格式
第一行包含整数N，表示操作数量。
接下来N行，每行包含一个操作指令，操作指令为”I x”，”Q x”中的一种。
输出格式
对于每个询问指令“Q x”，输出一个询问结果，如果x在集合中出现过，则输出“Yes”，否则输出“No”。
每个结果占一行。
数据范围
1≤N≤105
−109≤x≤109
输]]></description><category></category></item><item><title><![CDATA[AcWing 839. 模拟堆（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/108416108</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/108416108</guid><author>YSA__</author><pubDate>Sat, 05 Sep 2020 15:49:15 +0800</pubDate><description><![CDATA[AcWing 839. 模拟堆
1、题目：
维护一个集合，初始时集合为空，支持如下几种操作：
“I x”，插入一个数x；
“PM”，输出当前集合中的最小值；
“DM”，删除当前集合中的最小值（数据保证此时的最小值唯一）；
“D k”，删除第k个插入的数；
“C k x”，修改第k个插入的数，将其变为x；
现在要进行N次操作，对于所有第2个操作，输出当前集合的最小值。
输入格式
第一行包含整数N。
接下来N行，每行包含一个操作指令，操作指令为”I x”，”PM”，”DM”，”D k”或”C k x”中的一种。]]></description><category></category></item><item><title><![CDATA[AcWing 838. 堆排序（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/108248262</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/108248262</guid><author>YSA__</author><pubDate>Wed, 26 Aug 2020 22:06:48 +0800</pubDate><description><![CDATA[AcWing 838. 堆排序
1、题目：
输入一个长度为n的整数数列，从小到大输出前m小的数。
输入格式
第一行包含整数n和m。
第二行包含n个整数，表示整数数列。
输出格式
共一行，包含m个整数，表示整数数列中前m小的数。
数据范围
1≤m≤n≤105，
1≤数列中元素≤109
输入样例：
5 3
4 5 1 3 2
输出样例：
1 2 3
2、基本思想：
小根堆，看成一个完全二叉树，将一个数与它的左右子节点相比较，大数下沉。
3、步骤：
①插入一个数  heap[++size] = x; down(s]]></description><category></category></item><item><title><![CDATA[AcWing 240. 食物链（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/108201758</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/108201758</guid><author>YSA__</author><pubDate>Mon, 24 Aug 2020 16:35:49 +0800</pubDate><description><![CDATA[AcWing 240. 食物链
1、题目：
动物王国中有三类动物A,B,C，这三类动物的食物链构成了有趣的环形。
A吃B， B吃C，C吃A。
现有N个动物，以1－N编号。
每个动物都是A,B,C中的一种，但是我们并不知道它到底是哪一种。
有人用两种说法对这N个动物所构成的食物链关系进行描述：
第一种说法是”1 X Y”，表示X和Y是同类。
第二种说法是”2 X Y”，表示X吃Y。
此人对N个动物，用上述两种说法，一句接一句地说出K句话，这K句话有的是真的，有的是假的。
当一句话满足下列三条之一时，这句话就是]]></description><category></category></item><item><title><![CDATA[AcWing 143. 最大异或对（C++算法）]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/107692597</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/107692597</guid><author>YSA__</author><pubDate>Wed, 19 Aug 2020 12:04:22 +0800</pubDate><description><![CDATA[AcWing 143. 最大异或对
1、题目（来源于AcWing）：
在给定的N个整数A1，A2……AN中选出两个进行xor（异或）运算，得到的结果最大是多少？
输入格式
第一行输入一个整数N。
第二行输入N个整数A1～AN。
输出格式
输出一个整数表示答案。
数据范围
1≤N≤105,
0≤Ai&lt;231
输入样例：
3
1 2 3
输出样例：
3
2、基本思想：
3、步骤：
4、C++代码如下（该代码引用AcWing网站的代码）：
#include &lt;iostream&gt;

using n]]></description><category></category></item><item><title><![CDATA[AcWing 803. 区间合并(C++)]]></title><link>https://blog.youkuaiyun.com/YSA__/article/details/108056112</link><guid>https://blog.youkuaiyun.com/YSA__/article/details/108056112</guid><author>YSA__</author><pubDate>Mon, 17 Aug 2020 15:11:02 +0800</pubDate><description><![CDATA[AcWing 803. 区间合并
1、题目（来源于AcWing）：
给定 n 个区间 [li,ri]，要求合并所有有交集的区间。
注意如果在端点处相交，也算有交集。
输出合并完成后的区间个数。
例如：[1,3]和[2,6]可以合并为一个区间[1,6]。
输入格式
第一行包含整数n。
接下来n行，每行包含两个整数 l 和 r。
输出格式
共一行，包含一个整数，表示合并区间完成后的区间个数。
数据范围
1≤n≤100000,
−109≤li≤ri≤109
输入样例：
5
1 2
2 4
5 6
7 8
7 9
]]></description><category></category></item></channel></rss>