<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AShallWe的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/AShallWe</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; AShallWe]]></copyright><item><title><![CDATA[PAT 1054]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/50571581</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/50571581</guid><author>AShallWe</author><pubDate>Sat, 23 Jan 2016 21:46:57 +0800</pubDate><description><![CDATA[#include
#include
using namespace std;
#define maxn 810
int N,M;
//int arr[maxn][maxn];
char ss[30];
mapt;
int main()
{
	cin>>M>>N;
	int maxx=0;
	t[maxx]=0;
	int temp;
	for(int i=1;i<=N;i++)
	{
		for(]]></description><category></category></item><item><title><![CDATA[Codeforces Round#225 div.2E Propagating tree 线段树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/50084713</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/50084713</guid><author>AShallWe</author><pubDate>Sat, 28 Nov 2015 16:01:23 +0800</pubDate><description><![CDATA[题意：
给你一颗树，现在有两个操作：
1 x val:代表着对节点x进行加val，那么他的孩子节点-val，他的孙子节点+val，依次类推
2 x:代表着你要打印这个节点的值。
思路：
线段树区间更新，单点查询。对于每一个节点，都会有一个对应的控制区间，我们首先DFS一把，找到每个点的控制区间，并且DFS的时候顺便把每一个节点处于什么层次顺便一起记下来。对于该题，我们建立两颗线段树，一颗]]></description><category></category></item><item><title><![CDATA[Codeforces Round#328 div.2 C]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/49700125</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/49700125</guid><author>AShallWe</author><pubDate>Sat, 07 Nov 2015 10:50:07 +0800</pubDate><description><![CDATA[题意：
有两个机器人，走路的速度是一样的，一个机器人一步走w米，一个机器人一步走b米，现在给出的赛道长最大为t，问在这些长度中，选择哪些长度会导致平局。需要注意的是，如果此时机器人的下一步将会超过剩余赛道长度，那么机器人就不会走这一步。而所谓胜局的情况是在没有平局的情况下，谁离起点最远谁就是赢家。
思路：
首先这道题千万不要被速度给搞晕了，即使速度一样，那么频率也有可能不一样。这时候直接看步]]></description><category></category></item><item><title><![CDATA[PAT Advanced 1074]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/49700009</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/49700009</guid><author>AShallWe</author><pubDate>Sat, 07 Nov 2015 10:37:57 +0800</pubDate><description><![CDATA[题意：
给你任意长度的链表，再给你一个长度K，需要你对这个链表每一个长度为K的都进行反转。
思路：
模拟题，然而依旧卡了我很久，第一次错的原因在于没有没看清英文，只做了一次反转，第二次是因为front那里没有添加上“+”号，所以卡了我好久。
贡献几组我自己出的数据（不要问为什么不凑够5位）
1 8 2
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
6 6 7
]]></description><category></category></item><item><title><![CDATA[PAT Advanced 1014]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/49488665</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/49488665</guid><author>AShallWe</author><pubDate>Thu, 29 Oct 2015 10:55:17 +0800</pubDate><description><![CDATA[队列的模拟题
我采用的做法，先将人能插进队列的就先插进队列，然后从中找到此时最小的花费，然后弹出队列，加入新的人。我一开始的时候错了两个测试的地方，第一个，并不是17:00后就没人在办理业务了，而是在17:00之前有受理这个业务，就需要把这个完成下去，所以对于有些数据来说是结束时间可以达到17:00以后的。第二个，错误原因在于思路上出现错误，我原本预想只用把当前所有队列中最短的那个弹出来就行了，]]></description><category></category></item><item><title><![CDATA[POJ 2513 字典树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/49430527</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/49430527</guid><author>AShallWe</author><pubDate>Mon, 26 Oct 2015 22:04:15 +0800</pubDate><description><![CDATA[POJ 2513 字典树题意：题目给你了一些木棒，这些木棒前后有颜色，现在问你可不可能将这些接起来按照木棒的颜色来连接。题目的木棒数量是25w。思路：我们将这些木棒的端点看成图里面的端点，木棒本身作为图的边，那么这时候这道题就转化成求这些木棒（边）组成的图里面是否有存在欧拉图。欧拉图：通过图中的所有边并且只通过一次的通路为欧拉图，图为有向图或无向图。那么无向图是欧拉图的充要条件是：
图是连通的
图中]]></description><category></category></item><item><title><![CDATA[PAT Advanced 1086]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/49366771</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/49366771</guid><author>AShallWe</author><pubDate>Fri, 23 Oct 2015 21:54:36 +0800</pubDate><description><![CDATA[题意：
给你一颗树，然后按照先序序列压进栈，按照中序序列弹出栈。于是乎，题目的意思转变成给你先序序列和中序序列，你要写出后序序列。
思路：
先序：根 左子树 右子树
中序：左子树 根 右子树
先从先序中找到一个根，然后在中序里面找到他的左，右子树的范围，关于找范围可以先找到左右子树的长度，这样比较方便确定区间。
总结：
=-= 浙大真会出题，卡了我半天，贡献几组数据


5
P]]></description><category></category></item><item><title><![CDATA[Codeforces Round#323 div.2 C]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/49202103</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/49202103</guid><author>AShallWe</author><pubDate>Sat, 17 Oct 2015 10:55:55 +0800</pubDate><description><![CDATA[题意;
题目首先假设了给了你一组数字，那么这组数字根据这个规则，得到这样的一张表

现在题目给你了一N*N的数字，这些数字是不规则排列的，现在要求你找到原数组。
思路：
首先找到一个最大的数，然后提取出来，此时这个数一定能够保证是属于数组里面的数，然后这时候提取出来第二大，然后与前面的数进行gcd运算，这时候算出来的值一定不属于集合，然后找到第3大的数，同样与前面的数进行gcd运算，。。]]></description><category></category></item><item><title><![CDATA[Codeforces Round#324 div.2 E]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/49201053</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/49201053</guid><author>AShallWe</author><pubDate>Sat, 17 Oct 2015 09:29:30 +0800</pubDate><description><![CDATA[题意：
给你两串数字序列，要求你按照把上面的一串变成下面的一串。转换需要的花费是sigma|i-j|,然后还需要要求你把转化的序列的次数打印出来，并且也要把每次转换对应的点打印出来。
思路：
先记录第一个序列每个元素在第二个应该有的位置需要的花费，即计算每一个|i-j|，对于这个序列需要的花费，即是sigma|i-j|，现在我们做一个操作，对于那些要往后移动的，我们将它的移动花费变成正数，需]]></description><category></category></item><item><title><![CDATA[Codeforces Round# 324(Div.2)]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/49047769</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/49047769</guid><author>AShallWe</author><pubDate>Sun, 11 Oct 2015 14:22:23 +0800</pubDate><description><![CDATA[A. Olesya and Rodion
题意：
给你N位数，然后给一个数字t，问你是否能不能找到这样的一个N位数，使得能被t整除。
思路：
因为数据量在2到10之间，所以分等于10，和不等于10来看。当t=10时，这时候只需要最后一位是0那么就能整除10，不过这要N>1，因为等于1是不可能的。当t
code：
#include
#include
using namespace std]]></description><category></category></item><item><title><![CDATA[POJ 2481 线段树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/48931503</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/48931503</guid><author>AShallWe</author><pubDate>Tue, 06 Oct 2015 14:57:30 +0800</pubDate><description><![CDATA[题意：
给你一个区间，问你有多少个比这个区间大的区间，区间大小比较按照这个规则
 If Si  Ej - Sj, we say that cowi is
 stronger than cowj.
思路：
咋一看这个根本没法想象到和线段树结合到一起，（所以说线段树之类的题最重要的是思路=-=，而不是算法）我们先暂时想一个思路，如果把这些区间当做点来看的，那么对于这道题要求的值其实就是这个点]]></description><category></category></item><item><title><![CDATA[Codeforces Beta Round #19D 线段树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/48930797</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/48930797</guid><author>AShallWe</author><pubDate>Tue, 06 Oct 2015 12:29:45 +0800</pubDate><description><![CDATA[题意：
在一个二维平面内，现在有三个操作
add x y 向这个平面内添加一个点并且保证这个点之前没有被加入
remove x y 从这平面内删除这个点并且保证这个点时存在过的
find x y 找到这个点的右上角离它最近的那个点
思路：
二维转一维，以x轴作为线段树的区间，线段树每个区间保存这个区间最大的y，根节点用set保存有多少个y，因为只有20W个数然而数据大小达到10^9，所]]></description><category></category></item><item><title><![CDATA[Codeforces Yandex.Algorithm 2011 Round 1 85D  线段树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/48897003</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/48897003</guid><author>AShallWe</author><pubDate>Sun, 04 Oct 2015 16:20:08 +0800</pubDate><description><![CDATA[此题和POJ2828andPOJ2886其实属于同一类型的题目，也是作为某年的成都赛区的比赛题目。也感谢Acrush的代码让我知道怎么做这题。
首先讲题意：
现在有一个序列，要求你求这个序列下标对5取模余3的所有数字的和（下标从1开始）。有三个操作
add 向这个集合中添加一个数字，并且保证这个数字是没有重复出现过的；
del从这个集合中删除掉一个数字，并且保证这个数字是在这个集合中存在的]]></description><category></category></item><item><title><![CDATA[POJ 2886 线段树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/48685755</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/48685755</guid><author>AShallWe</author><pubDate>Wed, 23 Sep 2015 20:02:28 +0800</pubDate><description><![CDATA[该题和poj2828的思路非常类似。
题意：
有N个人参加一个游戏，每个人手上都拿了一张卡片，每张卡片的数字都是非0的，现在从第K人开始，第K人离开后，这时候根据第K人手上拿着的卡片的数字，决定下一个人是谁，如果这个数字m为正数，那么其实相当于向右数m个，如果这个数字为负数，那么其实相当于向左数m个数的位置（所有的数法都是要排除自己）。
现在构建一颗类似于poj2828的线段树，这时候主要的]]></description><category></category></item><item><title><![CDATA[POJ 2828 线段树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/48633271</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/48633271</guid><author>AShallWe</author><pubDate>Mon, 21 Sep 2015 21:02:02 +0800</pubDate><description><![CDATA[线段树单点更新
这道题写线段树是很简单的操作，但是最重要的是思路，因为很难想到。因为是插队插入的，所以换个方向思考，最后插入的一定是该位置，然后忽略该位置，后面同理。
主要思路：
现在看样例这组数据，因为上面已经说过了，所以我们先要把所有的输入存储起来，于是从最后一条输入来看，3 69（位置先自加1）说明了前面是有2个空位的，于是这时候就要插入到第3个位置中（原因在于此时序列中没有其他数字，]]></description><category></category></item><item><title><![CDATA[HDU 2796 线段树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/48597571</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/48597571</guid><author>AShallWe</author><pubDate>Sun, 20 Sep 2015 15:55:33 +0800</pubDate><description><![CDATA[线段树单点更新
题意：
一个广告板，知道它的长和宽，现在有N条信息需要在板上显示，每天信息都有自己的宽度，长度都为1。现在问你每条信息在哪个位置。
思路：

利用线段树，将有多少条信息或者高度作为线段树的最大区间，然后题目中说明要如果不能放在最上边（topmost），那么就放在最左边的上边（leftmost）。现在以样例为准来说明，依据样例数据，那么线段树的区间为1~3,那么首先宽度为2]]></description><category></category></item><item><title><![CDATA[HDU 1394 线段树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/48529665</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/48529665</guid><author>AShallWe</author><pubDate>Thu, 17 Sep 2015 21:30:49 +0800</pubDate><description><![CDATA[线段树单点更新。
题意：
给你任意N个数字，然后算这个数字序列的逆序数，然后依次把第1个，第2个。。。第N个移动到后面得到一个数字序列，在这些序列里面找到逆序数最小的一个序列，打印出该序列的 逆序数。
思路：
利用线段树单点更新的思想，输入一个数就 判断在线段树里面是否有比他大的数，如果有，则计入ans。计算完原始序列后，下面要用上一个结论，就是接下来的序列的逆序数=上一个序列的逆序数-t]]></description><category></category></item><item><title><![CDATA[HDU 1754 线段树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/48500923</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/48500923</guid><author>AShallWe</author><pubDate>Wed, 16 Sep 2015 20:25:28 +0800</pubDate><description><![CDATA[线段树单点更新
这道题需要注意的是输入，题目明确提示了要用scanf来输入加快速度，所以这里可能会有一个错误，在build里面是用scanf输入的。而输入文件可能是在输入N个数据后有一个换行符，如果不把换行符读出来可能会有错误。所以要用下面这句话scanf("%*c%c%d %d", &c, &a, &b);
#include
#include
#include
using namespace]]></description><category></category></item><item><title><![CDATA[HDU 1166 线段树]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/48476551</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/48476551</guid><author>AShallWe</author><pubDate>Tue, 15 Sep 2015 22:17:53 +0800</pubDate><description><![CDATA[题意：
给你N个数据，现在有无数个查询（每次不超过4W）。
线段树的单点更新。#include
#include
#include
using namespace std;
#define Lchild rt<<1,L,m
#define Rchild rt<<1|1,m+1,R
int T,N;
int tree[50010*3];
void push_up(int rt)
{
	tree[]]></description><category></category></item><item><title><![CDATA[PAT Advanced 1041]]></title><link>https://blog.youkuaiyun.com/AShallWe/article/details/48228941</link><guid>https://blog.youkuaiyun.com/AShallWe/article/details/48228941</guid><author>AShallWe</author><pubDate>Sat, 05 Sep 2015 20:15:55 +0800</pubDate><description><![CDATA[题意：
给你一些数，让你判断有哪些数是只有一个的，然后打印出最先unique的那个数。
注意10^4是有10000，还有数字大小是1到10000，N的大小是1到100000.#include
#include
#include
using namespace std;
int t;
int number[111111];
int rep[11111];
int unique=-1;
void ]]></description><category></category></item></channel></rss>