天气好热……不知道是因为热的原因还是因为被昨天吓到了的原因,
总之昨天晚上醒来了应该是四五次……有印象的有3点半的一次和5点42的一次。
总之虽然热得不行,事实上却是阴天,还真是讽刺啊。
话说回来阴天热不是正常的么……果然我胡言乱语了。
又一个性格残疾的孩子,唉可惜了。
我以前说过,性格基本上是不可能,我们也没有义务去纠正的。
所以说只能旁观然后感慨而已。
说真的,在这个环境里EQ比IQ重要太多了。
下东西的速度还真是不稳……从几K到几百K之间来回摇摆……
总之RP好的话说不定能在回国之前把其中一部分拖完……
下面是某人的东西……这两天手忙脚乱的,今天晚上刚抽出时间,抱歉。
/*
第一题,随机更改数据和查询
线段树应该说是第一选择
(当然,树形数组也可以?)
简而言之重点就是下面这个线段树的实现
命令解析和调用的部分没啥内涵就略过了
Elysion
Jul.23
*/
#include<stdio.h>
#include<stdlib.h>
class SegmentTree
{
private:
int value;
int place;
int min;
int max;
SegmentTree* left;
SegmentTree* right;
public:
int Sum()
{
if(this->left==NULL && this->right==NULL)
{
return value;
}
else
{
return this->left->Sum()+this->right->Sum();
}
}
SegmentTree(int start,int end,int base_value)
:min(start),max(end),place((end+start)/2)
{
if(start!=end)
{
left=new SegmentTree(start,place,base_value);
right=new SegmentTree(place+1,end,base_value);
value=this->Sum();
}
else
{
value=base_value;
left=NULL;
right=NULL;
}
}
void Plus(int start,int end,int plus_val)
{
if(end<min || start>max) return;
if(min<=start && max>=end)
{
value+=(end-start+1)*plus_val;
}
if(left)
{
if(place>=start)
{
if(place>=end) left->Plus(start,end,plus_val);
else
{
left->Plus(start,place,plus_val);
right->Plus(place+1,end,plus_val);
}
}
else right->Plus(start,end,plus_val);
}
}
int Query(int start,int end)
{
if(start==min && end==max) return value;
if(place>=start)
{
if(place>=end) return left->Query(start,end);
else return left->Query(start,place)+right->Query(place+1,end);
}
else return right->Query(start,end);
}
};