<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_43456754的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_43456754</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_43456754]]></copyright><item><title><![CDATA[费解的开关]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/107129787</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/107129787</guid><author>m0_43456754</author><pubDate>Sat, 04 Jul 2020 20:32:27 +0800</pubDate><description><![CDATA[题目链接

这里给出DFS和BFS代码，方便以后回忆。

DFS：


#include &lt;bits/stdc++.h&gt;
 
using namespace std;
int G[30][30],d[5]={0,0,1,0,-1},ans;
 
void Rever(int r,int c)//翻转
{
    for(int i=0;i&lt;5;i++)
        G[r+d[i]][c+d[(i+1)%5]]^=1;
}
 
void resdfs(int r,int c,int c]]></description><category></category></item><item><title><![CDATA[蓝桥杯——1的个数]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/107096413</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/107096413</guid><author>m0_43456754</author><pubDate>Fri, 03 Jul 2020 00:13:52 +0800</pubDate><description><![CDATA[题目链接

思路：

数据不大，可以直接暴力。

这里给出数位dp的方法。


#include &lt;bits/stdc++.h&gt;

using namespace std;
int a[10],dp[10][10],len;//dp[数位][状态]

int dfs(int pos,int precnt,int limit)
{
    if(pos&gt;len)
        return precnt;

    if(!limit&amp;&amp;dp[pos][precnt]!=-]]></description><category></category></item><item><title><![CDATA[蓝桥杯——表达式计算]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/107084551</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/107084551</guid><author>m0_43456754</author><pubDate>Thu, 02 Jul 2020 15:24:59 +0800</pubDate><description><![CDATA[题目链接

思路：

   将中缀表达式转化为后缀表达式，完成表达式求值。

这里采用辅助栈的方法，将中缀表达式转化为后缀表达式：

给操作符设置优先级：


map&lt;char,int&gt;mp;
        mp['#']=-1;
        mp['(']=mp[')']=0;
        mp['+']=mp['-']=1;
        mp['*']=mp['/']=2;

这里设置了操作符#，并把优先级设为最低。将#放置在辅助栈的栈底，作用与链表中的头节点的作用类似。...]]></description><category></category></item><item><title><![CDATA[蓝桥杯——分考场]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/107063006</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/107063006</guid><author>m0_43456754</author><pubDate>Wed, 01 Jul 2020 14:34:12 +0800</pubDate><description><![CDATA[题目链接

zhe'ge
]]></description><category></category></item><item><title><![CDATA[蓝桥杯——合根植物]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/107052262</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/107052262</guid><author>m0_43456754</author><pubDate>Tue, 30 Jun 2020 22:38:20 +0800</pubDate><description><![CDATA[题目链接

思路：并查集裸题。并查集注意最后更新路径压缩。


#include &lt;bits/stdc++.h&gt;

using namespace std;
const int maxn = 1e6+10;
int par[maxn],vis[maxn];
void init(int n)
{
    for(int i=1;i&lt;=n;i++)
        {
            par[i]=i;
            vis[i]=0;
        }
}
int fnd]]></description><category></category></item><item><title><![CDATA[蓝桥杯——小计算器]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/107051888</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/107051888</guid><author>m0_43456754</author><pubDate>Tue, 30 Jun 2020 22:17:56 +0800</pubDate><description><![CDATA[题目链接

思路：模拟题。注意计算过程始终用十进制来保存结果，输出时再将结果转换为k进制。

有一个坑，后面大概7题，计算结果有多处0。


#include &lt;bits/stdc++.h&gt;

using namespace std;
map&lt;char,int&gt;mp;
map&lt;int,char&gt;mpc;
long long k_to_o(int k,string str)
{
    long long ans=0;
    for(int i=0;i&lt;str.si]]></description><category></category></item><item><title><![CDATA[字符匹配算法——Sunday算法及其优化]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/106097417</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/106097417</guid><author>m0_43456754</author><pubDate>Wed, 13 May 2020 15:17:57 +0800</pubDate><description><![CDATA[Sunday算法是一种比BM算法搜索速度更快的算法。

其核心思想是：在匹配过程中，当发现不匹配时，算法能跳过尽可能多的字符以进行下一步的匹配，从而提高匹配速度。

当匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符。如果该字符没有在模式串中出现则直接跳过，

移动步长=模式串的长度+1；否则移动步长=模式串中最右端的字符到末尾的距离+1.

  Sunday算法的复杂度为O(n/m），最差复杂度为O(n*m)

这里文本串S=GCGCBGAGTAACAGAG ,模式串P=CAG...]]></description><category></category></item><item><title><![CDATA[字符匹配算法——manacher]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/106075659</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/106075659</guid><author>m0_43456754</author><pubDate>Tue, 12 May 2020 14:28:33 +0800</pubDate><description><![CDATA[int len[1000];
string init(string s)//s = "cbcbccde" , res ="[#c#b#c#b#c#c#d#e#]"
{
    string res="[";
    int n=s.size();
    for(int i=0;i&lt;n;i++)
        {
            res+='#';
            res+=s[i];
        }
    res+="#]";
    cout&lt;&lt;res&lt;.]]></description><category></category></item><item><title><![CDATA[字符匹配算法--KMP]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/106006169</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/106006169</guid><author>m0_43456754</author><pubDate>Sat, 09 May 2020 00:16:20 +0800</pubDate><description><![CDATA[文本串T

模式串P

求出P在T中出现的位置



当T[i]与P[j]不匹配时

T[i]与P[j]的前j个是相匹配的

固定指针i，j移动到以P[j-1]为结尾的最长真相同前后缀的下一位

例如：

T="abbaabbbabaa"

P="abbaaba"



出现b a不匹配



这样指针i只需遍历一次T，时间复杂度明显降低



于是进行KMP算法时，最重要的是对模式串P的最长真前后缀的处理，即NXT数组

NXT[i]

存储以P[i]为结尾的最长相同真前后缀的下标（即长度减一）


..]]></description><category></category></item><item><title><![CDATA[HDU 4512]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/105958765</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/105958765</guid><author>m0_43456754</author><pubDate>Wed, 06 May 2020 20:48:53 +0800</pubDate><description><![CDATA[#include &lt;bits/stdc++.h&gt;

using namespace std;
int a[210],b[210],dp[210][210];
int main()
{
    int t,n;
    cin&gt;&gt;t;
    while(t--)
    {
        int ans=0;
        cin&gt;&gt;n;
        ...]]></description><category></category></item><item><title><![CDATA[HDU1160 FatMouse's Speed]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/105944928</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/105944928</guid><author>m0_43456754</author><pubDate>Wed, 06 May 2020 10:30:06 +0800</pubDate><description><![CDATA[http://acm.hdu.edu.cn/showproblem.php?pid=1160

思路：这一题给出老鼠的体重和速度，要求最多的老鼠，使得它们的体重严格递增，速度严格递减。
  刚开始时，我的想法是先按照速度从大到小排序，在此基础上求体重的LIS。但是这样wa了，原因是
如果数据里有相同的速度时，速度那一维只能保证不增。
  找到问题后，我发现速度应该从大到小，如果速度相同时，...]]></description><category></category></item><item><title><![CDATA[FJ的字符串]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/104773090</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/104773090</guid><author>m0_43456754</author><pubDate>Tue, 10 Mar 2020 13:58:49 +0800</pubDate><description><![CDATA[题目链接：FJ的字符串

观察样例，可以发现规律：

1 3 5 7 ……为A

2 6 10 ……为B

4 12 ……为C

……

即第2^i*(1+2j)个字符应为'A'+i


#include &lt;bits/stdc++.h&gt;

using namespace std;

int main()
{
    string s;
    int n;
    cin&gt;&gt...]]></description><category></category></item><item><title><![CDATA[2n皇后问题状压dp]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/104772811</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/104772811</guid><author>m0_43456754</author><pubDate>Tue, 10 Mar 2020 13:47:56 +0800</pubDate><description><![CDATA[蓝桥杯2n皇后问题

分析：

该题与给定状态下的n皇后问题相似，只不过在搜索时要用两层循环。

在第一层循环里放置其中一种颜色的皇后，在第二层的循环中放置另一种颜色的皇后。




#include &lt;bits/stdc++.h&gt;

using namespace std;
int upper,ans,n;
int a[10];
void dfs(int i,int col,int...]]></description><category></category></item><item><title><![CDATA[n皇后问题]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/104766021</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/104766021</guid><author>m0_43456754</author><pubDate>Tue, 10 Mar 2020 01:42:14 +0800</pubDate><description><![CDATA[HDU2553 n皇后问题


#include &lt;bits/stdc++.h&gt;

using namespace std;
int upper,ans;
void dfs(int col,int maindia,int condia)//限制条件下的列，主/副对角线
{
        if(col==upper)  {ans++;return ;}//填满n位，可行数加1
    ...]]></description><category></category></item><item><title><![CDATA[Gym - 101911C Bacteria]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/103192083</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/103192083</guid><author>m0_43456754</author><pubDate>Thu, 21 Nov 2019 22:26:20 +0800</pubDate><description><![CDATA[题目链接，点这里。。。

本题可以用优先队列，也可以用set做

这里给出用set模拟的代码


#include &lt;bits/stdc++.h&gt;

using namespace std;
typedef long long LL;
int main()
{
    set&lt;LL&gt; se;
    set&lt;LL&gt;::iterator it;
    LL x;...]]></description><category></category></item><item><title><![CDATA[数组参数的传递]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/103001036</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/103001036</guid><author>m0_43456754</author><pubDate>Sun, 10 Nov 2019 19:32:19 +0800</pubDate><description><![CDATA[数组名本身是地址常量，不是地址变量（指针），数组名作为参数传递时，退化为指针。

int [1000]对应的数组名类型等价为 int * const

const修饰的是指针本身而不是指向的内容，即不是const int*，是个常量，无法被赋值。
...]]></description><category></category></item><item><title><![CDATA[关于iterator的删除操作]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/102984327</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/102984327</guid><author>m0_43456754</author><pubDate>Sat, 09 Nov 2019 10:46:05 +0800</pubDate><description><![CDATA[1. 对于节点式容器(map, list, set)元素的删除，插入操作会导致指向该元素的迭代器失效，其他元素迭代器不受影响
2. 对于顺序式容器(vector，string，deque)元素的删除、插入操作会导致指向该元素以及后面的元素的迭代器失效

 for(auto it=se.begin();it!=se.end();)
    {
      if(*it%2==0...]]></description><category></category></item><item><title><![CDATA[关于一个scanf输入操作]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/101213281</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/101213281</guid><author>m0_43456754</author><pubDate>Mon, 23 Sep 2019 17:00:16 +0800</pubDate><description><![CDATA[原题输入为x或x(y)，其中x，y都为整数

除了常规的字符串外，还可以

int x=0,y=0;

scanf("%d(%d)",&amp;x,&amp;y);

若输入不带括号，y=0


]]></description><category></category></item><item><title><![CDATA[二分图]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/100068478</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/100068478</guid><author>m0_43456754</author><pubDate>Sun, 25 Aug 2019 21:58:43 +0800</pubDate><description><![CDATA[const int maxn=305;
int nx,ny,MIN;
int wx[maxn],wy[maxn];
int visx[maxn],visy[maxn];
int G[maxn][maxn];
int maty[maxn];

int dfs(int u)
{
        visx[u]=true;
        for(int i=1;i&lt;=ny;i++){
    ...]]></description><category></category></item><item><title><![CDATA[网络流EK]]></title><link>https://blog.youkuaiyun.com/m0_43456754/article/details/100068441</link><guid>https://blog.youkuaiyun.com/m0_43456754/article/details/100068441</guid><author>m0_43456754</author><pubDate>Sun, 25 Aug 2019 21:55:00 +0800</pubDate><description><![CDATA[const int maxn=500;
int r[maxn][maxn];
int pre[maxn];
bool vis[maxn];
bool bfs(int s,int t)
{
        queue&lt;int&gt;que;
        memset(pre,0,sizeof(pre));
        memset(vis,false,sizeof(vis));
  ...]]></description><category></category></item></channel></rss>