<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[下一个路口]]></title><description><![CDATA[また会いたいです]]></description><link>https://blog.youkuaiyun.com/SSL_lyw</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SSL_lyw]]></copyright><item><title><![CDATA[【ybtoj】逆序对]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/123009371</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/123009371</guid><author>SSL_lyw</author><pubDate>Fri, 18 Feb 2022 18:47:17 +0800</pubDate><description><![CDATA[逆序对

题目描述

解题思路
将a数组离散化
Code
#include&lt;iostream&gt;
#include&lt;cstdio&gt;
#include&lt;algorithm&gt;
using namespace std;
int n, tot;
int a[1000100], p[1001000], c[1000100];
void lsh()
{
	for(int i=1; i&lt;=n; i++)
		p[i]=a[i];
	sort(p+1, p+1+n);	tot=uni]]></description><category></category></item><item><title><![CDATA[【ybtoj】重复子串]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/122139076</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/122139076</guid><author>SSL_lyw</author><pubDate>Sat, 25 Dec 2021 08:39:31 +0800</pubDate><description><![CDATA[【ybtoj】重复子串

题目描述

样例输入
abcd
aaaa
ababab
.

样例输出
1
4
3

解题思路
这道题的数据规模很大，直接暴力会超时，find函数也会超时，只能使用KMP算法
代码
#include&lt;iostream&gt;
#include&lt;cstdio&gt;
#include&lt;algorithm&gt;
#include&lt;cstring&gt;
using namespace std;
char s[10000005];
int len, p[1000]]></description><category></category></item><item><title><![CDATA[【ybtoj】单源最短路径]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/122008342</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/122008342</guid><author>SSL_lyw</author><pubDate>Sat, 18 Dec 2021 09:02:42 +0800</pubDate><description><![CDATA[【ybtoj】单源最短路径

题目描述

样例输入
4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4

样例输出
0 2 4 3

解题思路
dij加上堆优化，在随机数据下可以考虑SPFA，但在构造数据下还是用dij比较稳。
代码
#include&lt;iostream&gt;
#include&lt;cstring&gt;
#include&lt;cstdio&gt;
#include&lt;queue&gt;
#define pa pair&lt;int,int&gt]]></description><category></category></item><item><title><![CDATA[exgcd模板（扩展欧几里得）]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119857683</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119857683</guid><author>SSL_lyw</author><pubDate>Sun, 22 Aug 2021 20:53:08 +0800</pubDate><description><![CDATA[exgcd模板

扩展欧几里得模板
#define ll long long
ll exgcd(ll a,ll b,ll &amp;x,ll &amp;y)
{
    if(b==0)
    {
        x=1;
        y=0;
        return a;
    }
    ll d;
    d=exgcd(b,a%b,y,x);
    y=y-a/b*x;//返回的值是最大公约数
    return d;
}


谢谢阅读

...]]></description><category></category></item><item><title><![CDATA[【牛客练习赛87】k小数查询]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119837099</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119837099</guid><author>SSL_lyw</author><pubDate>Sat, 21 Aug 2021 11:18:40 +0800</pubDate><description><![CDATA[【牛客练习赛87】k小数查询

题目描述

输入样例
5 3 2
1 2 3 4 5

输出样例
3

解题思路
由于需要查找的数x是第k小的数，所以总共有k-1个数比它大。我们从当前忘前查找，有f个数比它大，所以它后面就有k-1-f个数比它大，我们将所有的方案书相加即可
Code
#include&lt;iostream&gt;
#include&lt;cstdio&gt;
#include&lt;algorithm&gt;
using namespace std;
const int maxn=2010]]></description><category></category></item><item><title><![CDATA[【牛客练习赛87】中位数]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119837025</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119837025</guid><author>SSL_lyw</author><pubDate>Sat, 21 Aug 2021 11:12:35 +0800</pubDate><description><![CDATA[中位数

题目描述

输入样例
1
5 1
4 3 5 1 2

输出样例
2

解题思路
从小到大排序，从n~n-k+1进行合并，然后输出a[(k+n-1)/2]。
Code
#include&lt;iostream&gt;
#include&lt;algorithm&gt;
#include&lt;cstdio&gt;
#define ll long long
using namespace std;
int main()
{
    ll a[200010];
    ll n,k,t;
    ci]]></description><category></category></item><item><title><![CDATA[【NOIP2014】提高组初赛答案加解析]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119810239</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119810239</guid><author>SSL_lyw</author><pubDate>Thu, 19 Aug 2021 21:42:40 +0800</pubDate><description><![CDATA[NOIP2014提高组初赛答案加解析

本蒟蒻第一次写初赛解析，若有错误欢迎大家纠正
一、单项选择题
1、B
汇编语言是面向机器的低级语言，而FORTRAN、Basic是面向过程。
2、D
1TB=210GB=220MB=230KB=240B1TB=2^{10}GB=2^{20}MB=2^{30}KB=2^{40}B1TB=210GB=220MB=230KB=240B
3、D
二进制数的运算规则是逢二进一
4、B
这个东西就只能背了QWQ…
5、C
IP地址中每个域的取值范围为0~255
6、C
每一条边都]]></description><category></category></item><item><title><![CDATA[【SSL】20210817A]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119763741</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119763741</guid><author>SSL_lyw</author><pubDate>Tue, 17 Aug 2021 19:04:15 +0800</pubDate><description><![CDATA[【SSL】20210817

题目描述
给出长度为n的字符串S，以及Q个询问
每个询问给出一个字符串T，判断T是否为S的一个子序列
所有串仅包含小写字母
30%：n&lt;=1e4,q&lt;=1e5
100%：

输入格式
第一行给出正整数n,Q
第二行给出S
接下来Q行，每行给出一个询问T
输出格式
对于每个询问输出一行表示答案，符合输出YES，不符输出NO
输入样例
3 1
abc
ac

输出样例
YES

解题思路
输入时用f[i,j]表示位置i以后字符j第一次出现的位置
然后预处理所有的f[i,]]></description><category></category></item><item><title><![CDATA[【SSL】20210816C]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119733961</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119733961</guid><author>SSL_lyw</author><pubDate>Mon, 16 Aug 2021 15:24:00 +0800</pubDate><description><![CDATA[【SSL】20210816C

题目描述
对于一个正整数N，若x满足，(N-0.5x)/(N-x)为正整数，则x为N的幸运数。
给出一个N，求出[1,N-1]所有N的幸运数，
先回答个数，在将幸运数从小到大输出。
输入格式
第一行一个正整数N
输出格式
第一个整数为cnt，表示有多少个满足的幸运数，后面cnt个数，表示满足的幸运数
输入样例
 9

输出样例
 2 6 8

解题思路
首先我们打个暴力，发现一个规律：
我们发现(N-x)一定是N的约数，我们用时间复杂度是n\sqrt nn​然后我们把他的每一]]></description><category></category></item><item><title><![CDATA[【SSL】20210816B]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119733825</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119733825</guid><author>SSL_lyw</author><pubDate>Mon, 16 Aug 2021 15:16:27 +0800</pubDate><description><![CDATA[【SSL】20210816B

题目描述
有10个小球，小球的编号从0~9。
初始状态按照从左到右编号为0,1,2,3…9的顺序摆在了桌子上，
有一个长度大小为n的操作序列。
操作序列的每一行表示一次操作都有两个非负整数a,b，
表示本次操作将会交换位置a,b的2个小球(下标从0编号)
一共有m次询问，
每次询问时，将杯子中的小球重置为初始状态。
给出[li,ri]，连续从操作li进行到ri，
连续操作完后依次回答位置0到9，对应位置的小球编号。
鉴于输出量太大，会出事，采用输入输出优化，
void rea]]></description><category></category></item><item><title><![CDATA[【洛谷CF1110E】Magic Stones]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119702902</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119702902</guid><author>SSL_lyw</author><pubDate>Sat, 14 Aug 2021 16:46:15 +0800</pubDate><description><![CDATA[【洛谷CF1110E】Magic Stones

题目描述
多个询问，
每个询问给出长度为n的2个序列a，b
每次可以对1&lt;i&lt;n的ai进行操作，
操作后：

问能否通过若干次操作，使得序列a变成 b
输入格式
给出询问数T
第一行一个正整数n
第二行给出序列a
第三行给出序列b
输出格式
是否能转变，输出Yes或者No，每个询问对应一行
输入样例
样例1
1
4 
7 2 4 12
7 15 10 12

样例2
1
3
4 4 4
1 2 3

输出样例
样例1
Yes

样例2
No

解]]></description><category></category></item><item><title><![CDATA[【SSL】20210812-B]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119672756</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119672756</guid><author>SSL_lyw</author><pubDate>Fri, 13 Aug 2021 14:59:01 +0800</pubDate><description><![CDATA[【SSL】20210812-B

]]></description><category></category></item><item><title><![CDATA[【SSL】20210812-A]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119672491</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119672491</guid><author>SSL_lyw</author><pubDate>Fri, 13 Aug 2021 11:57:25 +0800</pubDate><description><![CDATA[【SSL】20210812-A

题目描述
若数列A存在位置k，满足
①i&lt;k,ai&lt;ai+1
②i&gt;=k,ai&gt;ai+1
则称该数列为单峰数列
给出正整数n，求全排列n中存在多少个单峰数列
输入格式
给出1个正整数n
输出格式
单峰数列个数（对10^9+7取模）
输入样例
3

输出样例
4

解题思路
首先用一个队列暴力一遍。
但是，我们会发现，这些答案有一个规律：
ans=2n+1ans=2^{n+1}ans=2n+1
然后使用快速幂
Code
#include&lt;iost]]></description><category></category></item><item><title><![CDATA[快速幂模板]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119578109</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119578109</guid><author>SSL_lyw</author><pubDate>Tue, 10 Aug 2021 20:06:00 +0800</pubDate><description><![CDATA[快速幂模板
#include&lt;iostream&gt;
#include&lt;csitdio&gt;
#include&lt;algorithm&gt;
#define ll long long
using namespace std;
ll m=100007;
ll quick_pow(ll a,ll b) 
{
	ll answer=1;
	while(b&gt;0) 
	{
		if(b&amp;1)
		{
			answer*=a;
			answer%=m;
		}
		a*=a;
		]]></description><category></category></item><item><title><![CDATA[快读模板]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119577826</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119577826</guid><author>SSL_lyw</author><pubDate>Tue, 10 Aug 2021 19:53:15 +0800</pubDate><description><![CDATA[快读模板

因为输入字符的速度比数字快，所以快读采用的字符方式输入数字，再转换回来。
int read()
{
    int m=0,n=1; 
	char ch;
	ch=getchar();
    while(ch&lt;'0'||ch&gt;'9')
	{  
	    if(ch=='-') 
		 n=-1;
	    ch=getchar();
	}
    while(ch&gt;='0'&amp;&amp;ch&lt;='9')
	{
	    m=m*10+ch-'0';
	    c]]></description><category></category></item><item><title><![CDATA[【SSL】20210809A]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119540631</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119540631</guid><author>SSL_lyw</author><pubDate>Mon, 09 Aug 2021 16:19:48 +0800</pubDate><description><![CDATA[【SSL】20210809A

题目描述
定义操作a(X)b= ((a&amp;b) + (a|b))&gt;&gt;1
给出n个数ai
每次用操作合并任意相邻ai
求进行n-1次操作以后可能得到的最终结果
所有结果从小到大输出
输入格式
第一行一个n
第二行给出a1,a2,…,an-1,an
输出格式
按照题目要求作答
输入样例
4
1 4 3 2

输出样例
1 2

解题思路
枚举区间的起点和终点，然后枚举中间的分界点，判断左右两个小区间能否合成这个数，如果可以，改为true，否则为false。
Co]]></description><category></category></item><item><title><![CDATA[【SSL】20210808D]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119540334</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119540334</guid><author>SSL_lyw</author><pubDate>Mon, 09 Aug 2021 16:13:22 +0800</pubDate><description><![CDATA[【SSL】20210808D

题目描述
有n个人依次排队打饭，有m种饭菜可以选择，每个人可能选择其中一种，如果相邻排队的人打的菜一样，那么就会影响彼此吃饭的心情，求这个队伍中有人被影响心情的状态数，对100003取余。
输入格式
一行整数依次给出m,n
输出格式
相应的状态数
输入样例
2 3

输出样例
6

样例解释
样例解释
000 001
011 100
110 111
6种
解题思路
在草稿纸上列出多种方案，找规律，最终得到
ans=m^n-m*(m-1) ^ (n-1)
要使用快速幂和龟速乘！]]></description><category></category></item><item><title><![CDATA[【ybtoj】新的开始]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119519610</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119519610</guid><author>SSL_lyw</author><pubDate>Sun, 08 Aug 2021 19:54:21 +0800</pubDate><description><![CDATA[【ybtoj】新的开始

题目描述
发展采矿业当然首先得有矿井，小 F 花了上次探险获得的千分之一的财富请人在岛上挖了n口矿井，但他似乎忘记考虑矿井的供电问题……
为了保证电力的供应，小 F 想到了两种办法：在这一口矿井上建立一个发电站，费用为v（发电站的输出功率可以供给任意多个矿井）。
将这口矿井与另外的已经有电力供应的矿井之间建立电网，费用为p。
小 F 希望你帮他想出一个保证所有矿井电力供应的最小花费。
输入格式

输出格式
输出仅一个整数，表示让所有矿井获得充足电能的最小花费。
样例输入
4  
5]]></description><category></category></item><item><title><![CDATA[【ybtoj】繁忙都市]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119519350</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119519350</guid><author>SSL_lyw</author><pubDate>Sun, 08 Aug 2021 19:36:58 +0800</pubDate><description><![CDATA[繁忙都市

题目描述
城市 C 是一个非常繁忙的大都市，城市中的道路十分的拥挤，于是市长决定对其中的道路进行改造。城市 C 的道路是这样分布的：城市中有n个交叉路口，有些交叉路口之间有道路相连，两个交叉路口之间最多有一条道路相连接。这些道路是双向的，且把所有的交叉路口直接或间接地连接起来。每条道路都有一个分值，分值越小表示这个道路越繁忙，越需要进行改造。但是市政府的资金有限，市长希望进行改造的道路越少越好，于是他提出下面的要求：
1．改造的那些道路能够把所有的交叉路口直接或间接地连通起来。
2．在满足要求1]]></description><category></category></item><item><title><![CDATA[【ybtoj】银河英雄传说]]></title><link>https://blog.youkuaiyun.com/SSL_lyw/article/details/119516059</link><guid>https://blog.youkuaiyun.com/SSL_lyw/article/details/119516059</guid><author>SSL_lyw</author><pubDate>Sun, 08 Aug 2021 16:08:27 +0800</pubDate><description><![CDATA[【ybtoj】银河英雄传说

题目描述


解题思路
这是带边权的并查集。用并查集维护战舰是否在同一列，以每一列的第一艘战舰作为集合代表，用一个dis数组记录边权。
Code
#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &lt;cmath&gt;
using namespace std;
int n, x, y, xx, yy, fa[50010], num[50010], dis[50010];
char c;
int find(i]]></description><category></category></item></channel></rss>