<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[MATHsqx的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/MATHsqx</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MATHsqx]]></copyright><item><title><![CDATA[【模板】线段树 1]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/55517682</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/55517682</guid><author>MATHsqx</author><pubDate>Fri, 17 Feb 2017 17:13:56 +0800</pubDate><description><![CDATA[区间修改+区间查询#include<cstdio>
#define LL long long
using namespace std;LL
    a[100003],//原数列 
    tree[400003],//线段树 
    delta[400003];//标记void update(int now)
{//用儿子们来更新自己 
    tree[now]=tree[now<<1]+tr]]></description><category></category></item><item><title><![CDATA[【模板】后缀数组]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/54709371</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/54709371</guid><author>MATHsqx</author><pubDate>Tue, 24 Jan 2017 17:50:39 +0800</pubDate><description><![CDATA[处理一个字符串中的所有后缀应用： 
-模式串匹配 
-计算LCP（两个后缀之间的最长公共前缀）#include <bits/stdc++.h>
using namespace std;char s[1000003];
int len,
    cc[1000003],
    rank[1000003],//从第x位开始的后缀排第几
    height[1000003],//跟排名前一位的字符串有]]></description><category></category></item><item><title><![CDATA[【模板】树状数组 2]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/54646888</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/54646888</guid><author>MATHsqx</author><pubDate>Sat, 21 Jan 2017 18:15:03 +0800</pubDate><description><![CDATA[区间修改+单点查询在[x,y]区间上加k 
另开一个数组 
在x处+k，y+1处-k 
该数组对应位置的前缀和即为改数字的变化量#include<cstdio>
using namespace std;int n,//点数 
    m,//操作数
    C[500003],//树状数组
    //树状数组用以求前缀和 
    a[500003];//原数列 void add(int loc,]]></description><category></category></item><item><title><![CDATA[【模板】树状数组 1]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/54646815</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/54646815</guid><author>MATHsqx</author><pubDate>Sat, 21 Jan 2017 17:50:31 +0800</pubDate><description><![CDATA[单点修改+区间查询#include<cstdio>
using namespace std;int n,//点数 
    m,//操作数 
    C[500000];//树状数组 void add(int loc,int value)
{//单点修改 
    for(int i=loc;i<=n;i+=i&(-i)) 
        C[i]+=value;
}int query(int l]]></description><category></category></item><item><title><![CDATA[位运算(整理)]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/54024615</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/54024615</guid><author>MATHsqx</author><pubDate>Wed, 04 Jan 2017 21:41:16 +0800</pubDate><description><![CDATA[& 与 
都为1 结果为1| 或 
一个为1 结果为1^ 异或 
不相同 结果为1,相同结果 为0<< 左移     >>右移——判断a第i位是否为1 
(1<<(i-1))&a将a第i位更改成1 
a|(1<<(i-1))删除a最靠右的1 
a&(a-1)]]></description><category></category></item><item><title><![CDATA[【NOI】20 求一元二次方程的根]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/54024386</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/54024386</guid><author>MATHsqx</author><pubDate>Wed, 04 Jan 2017 21:14:12 +0800</pubDate><description><![CDATA[描述 
利用公式x1 = (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2+ bx + c =0的根，其中a不等于0。输入 
输入一行，包含三个浮点数a, b, c（它们之间以一个空格分开），分别表示方程ax2 + bx + c =0的系数。 
输出 
输出一行，表示方程的解。 
若b2 = 4 * a]]></description><category></category></item><item><title><![CDATA[【NOI】1818 红与黑]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/53982113</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/53982113</guid><author>MATHsqx</author><pubDate>Mon, 02 Jan 2017 20:48:25 +0800</pubDate><description><![CDATA[描述 
有一间长方形的房子，地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上，只能向相邻的黑色瓷砖移动。请写一个程序，计算你总共能够到达多少块黑色的瓷砖。 
输入 
包括多个数据集合。每个数据集合的第一行是两个整数W和H，分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中，每行包括W个字符。每个字符表示一块瓷砖的颜色，规则如下 
1）‘.’：黑色的瓷砖； 
2）]]></description><category></category></item><item><title><![CDATA[【NOI】6044 鸣人和佐助]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/53981354</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/53981354</guid><author>MATHsqx</author><pubDate>Mon, 02 Jan 2017 19:04:19 +0800</pubDate><description><![CDATA[描述 
佐助被大蛇丸诱骗走了，鸣人在多少时间内能追上他呢？已知一张地图（以二维矩阵的形式表示）以及佐助和鸣人的位置。地图上的每个位置都可以走到，只不过有些位置上有大蛇丸的手下，需要先打败大蛇丸的手下才能到这些位置。鸣人有一定数量的查克拉，每一个单位的查克拉可以打败一个大蛇丸的手下。假设鸣人可以往上下左右四个方向移动，每移动一个距离需要花费1个单位时间，打败大蛇丸的手下不需要时间。如果鸣人查克拉消耗完]]></description><category></category></item><item><title><![CDATA[【NOI】6266 取石子游戏]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/53910477</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/53910477</guid><author>MATHsqx</author><pubDate>Wed, 28 Dec 2016 17:09:39 +0800</pubDate><description><![CDATA[描述 
有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取,并且取的数目必须是较少的那堆石子数目的整数倍.最后谁能够把一堆石子取空谁就算赢.  
比如初始的时候两堆石子的数目是25和7 25 7    –> 11 7    –> 4 7 –> 4 3 –> 1 3 –> 1 0 
选手1取        选手2取        选手1取        选手2取        选手1取]]></description><category></category></item><item><title><![CDATA[【NOI】7218 献给阿尔吉侬的花束]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/53909865</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/53909865</guid><author>MATHsqx</author><pubDate>Wed, 28 Dec 2016 16:40:18 +0800</pubDate><description><![CDATA[描述 
    阿尔吉侬是一只聪明又慵懒的小白鼠，它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫，研究员们为了鼓励阿尔吉侬尽快到达终点，就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道，如果阿尔吉侬足够聪明，它最少需要多少时间就能吃到奶酪。迷宫用一个R×C的字符矩阵来表示。字符S表示阿尔吉侬所在的位置，字符E表示奶酪所在的位置，字符#表示墙壁，字符.表示可以通行。阿尔吉侬在1个]]></description><category></category></item><item><title><![CDATA[【NOI】6264 走出迷宫]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/53909829</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/53909829</guid><author>MATHsqx</author><pubDate>Wed, 28 Dec 2016 16:38:32 +0800</pubDate><description><![CDATA[描述 
当你站在一个迷宫里的时候，往往会被错综复杂的道路弄得失去方向感，如果你能得到迷宫地图，事情就会变得非常简单。  
假设你已经得到了一个n*m的迷宫的图纸，请你找出从起点到出口的最短路。输入 
第一行是两个整数n和m(1<=n,m<=100)，表示迷宫的行数和列数。 
接下来n行，每行一个长为m的字符串，表示整个迷宫的布局。字符’.’表示空地，’#’表示墙，’S’表示起点,’T’表示出口。]]></description><category></category></item><item><title><![CDATA[【NOI】7084 迷宫问题]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/53909795</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/53909795</guid><author>MATHsqx</author><pubDate>Wed, 28 Dec 2016 16:35:59 +0800</pubDate><description><![CDATA[描述 
定义一个二维数组表示一个迷宫，其中的1表示墙壁，0表示可以走的路，只能横着走或竖着走，不能斜着走，要求编程序找出从左上角到右下角的最短路线。输入 
一个5 × 5的二维数组，表示一个迷宫。数据保证有唯一解。 
输出 
左上角到右下角的最短路径-隔壁的走迷宫记个前驱#include<cstdio>
#include<cstring>
using namespace std;int r,c;
i]]></description><category></category></item><item><title><![CDATA[【NOI】2753 走迷宫]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/53909744</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/53909744</guid><author>MATHsqx</author><pubDate>Wed, 28 Dec 2016 16:33:07 +0800</pubDate><description><![CDATA[描述 
一个迷宫由R行C列格子组成，有的格子里有障碍物，不能走；有的格子是空地，可以走。 
给定一个迷宫，求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走，不能斜着走。 
输入 
第一行是两个整数，Ｒ和Ｃ，代表迷宫的长和宽。（ 1<= R，C <= 40) 
接下来是Ｒ行，每行Ｃ个字符，代表整个迷宫。 
空地格子用’.’表示，有障碍物的格子用’#’表示。 
迷宫]]></description><category></category></item><item><title><![CDATA[【NOI】2971 抓住那头牛]]></title><link>https://blog.youkuaiyun.com/MATHsqx/article/details/53909696</link><guid>https://blog.youkuaiyun.com/MATHsqx/article/details/53909696</guid><author>MATHsqx</author><pubDate>Wed, 28 Dec 2016 16:29:27 +0800</pubDate><description><![CDATA[描述 
农夫知道一头牛的位置，想要抓住它。农夫和牛都位于数轴上，农夫起始位于点N(0<=N<=100000)，牛位于点K(0<=K<=100000)。农夫有两种移动方式：1、从X移动到X-1或X+1，每次移动花费一分钟 
2、从X移动到2*X，每次移动花费一分钟假设牛没有意识到农夫的行动，站在原地不动。农夫最少要花多少时间才能抓住牛？输入 
两个整数，N和K 
输出 
一个整数，农夫抓到牛所要花费的]]></description><category></category></item></channel></rss>