win7 设置电脑保护色

伸展树模版真的好长好长。。。

cut a b c:把第a-1个数伸展到根节点,把第b+1个数伸展到a的右子树,然后把ch[ch[root][1][0]]拿掉,放在剩下的树的第c个节点下。

flip a b:把第a-1个数伸展到根节点,把第b+1个数伸展到a的右子树,然后翻转ch[ch[root][1][0]];

由于会出现操作两边的情况,所以加了两个-1节点。

注意:

1,输出的时候要注意空格和换行。

2,在拿掉子树的时候要注意push_up();

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
#define maxn 330000
#define mem(a,b) memset(a,b,sizeof(a))
#define root10 ch[ch[root][1]][0]
#define root1 ch[root][1]
int pre[maxn],ch[maxn][2],root,tot;
int size[maxn];
int rev[maxn];
int key[maxn];
int n;
void Treaval(int x) {
    if(x) {
        Treaval(ch[x][0]);
        printf("结点%2d:左儿子 %2d 右儿子 %2d 父结点 %2d size = %2d ,key = %2d \n",x,ch[x][0],ch[x][1],pre[x],size[x],key[x]);
        Treaval(ch[x][1]);
    }
}
void debug() {printf("%d\n",root);Treaval(root);}
//以上Debug
void init()
{
    root=tot=0;
    mem(pre,0);
    mem(ch,0);
    mem(size,0);
    mem(rev,0);
}
void newnode(int &x,int k,int father)
{
    x=++tot;
    pre[x]=father;
    size[x]=1;
    ch[x][0]=ch[x][1]=0;
    rev[x]=0;
    key[x]=k;
}
void push_down(int x)
{
    if(rev[x])
    {
        rev[x]=0;
        rev[ch[x][0]]^=1;
        rev[ch[x][1]]^=1;
        swap(ch[x][0],ch[x][1]);
    }
}
void push_up(int x)
{
    size[x]=size[ch[x][0]]+size[ch[x][1]]+1;
}
void rot(int x,int kind)
{
    int y=pre[x];
    push_down(y);
    push_down(x);
    ch[y][!kind]=ch[x][kind];
    pre[ch[x][kind]]=y;
    if(pre[y])ch[pre[y]][ch[pre[y]][1]==y]=x;
    pre[x]=pre[y];
    ch[x][kind]=y;
    pre[y]=x;
    push_up(y);
    push_up(x);
}
void splay(int x,int goal)
{
    push_down(x);
    while(pre[x]!=goal)
    {
        if(pre[pre[x]]==goal)
        {
            push_down(pre[x]);
            push_down(x);
            rot(x,ch[pre[x]][0]==x);
        }
        else
        {
            int y=pre[x];
            push_down(pre[y]);
            push_down(y);
            push_down(x);
            int kind=ch[pre[y]][0]==y;
            if(ch[y][kind]==x)
            {
                rot(x,!kind);
                rot(x,kind);
            }
            else
            {
                rot(y,kind);
                rot(x,kind);
            }
        }
    }
    push_up(x);
    if(goal==0)root=x;
}
void buildtree(int &x,int l,int r,int father)
{
    if(l>r)return ;
    int mid=(l+r)/2;
    newnode(x,mid,father);
    buildtree(ch[x][0],l,mid-1,x);
    buildtree(ch[x][1],mid+1,r,x);
    push_up(x);
}
int get_kth(int x,int k)
{
    push_down(x);
    int p=size[ch[x][0]];
    if(p+1==k)return x;
    else if(k<=p)return get_kth(ch[x][0],k);
    else get_kth(ch[x][1],k-p-1);
}
int get_min(int r){
    push_down(r);
    while(ch[r][0]){
        r=ch[r][0];
        push_down(r);
    }
    return r;
}
int get_max(int r){
    push_down(r);
    while(ch[r][1]){
        r=ch[r][1];
        push_down(r);
    }
    return r;
}
void cut(int a,int b,int c)
{
    int x=get_kth(root,a);
    int y=get_kth(root,b+2);
    splay(x,0);
    splay(y,root);
    int t=root10;
    root10=0;
    push_up(root1);
    push_up(root);
    int z=get_kth(root,c+1);
    splay(z,0);
    int p=get_min(root1);
    splay(p,root);
    root10=t;
    pre[root10]=root1;
    push_up(root1);
    push_up(root);
}
void flip(int a,int b)
{
    int x=get_kth(root,a);
    int y=get_kth(root,b+2);
    splay(x,0);
    splay(y,root);
    rev[root10]^=1;
}
vector<int>vec;
void print(int x)
{
    if(x==0)return;
    push_down(x);
    print(ch[x][0]);
    if(key[x]!=-1)vec.push_back(key[x]);
    print(ch[x][1]);
}
int main()
{
    int m,a,b,c;
    char str[110];
    int i;
    while(scanf("%d%d",&n,&m)&&(n+1||m+1))
    {
        init();
        newnode(root,-1,0);
        newnode(ch[root][1],-1,root);
        size[root]=2;
        buildtree(root10,1,n,root1);
        push_up(root1);
        push_up(root);
        for(i=1;i<=m;i++)
        {
            scanf("%s",str);
            if(str[0]==‘C‘)
            {
                scanf("%d%d%d",&a,&b,&c);
                cut(a,b,c);
            }
            else
            {
                scanf("%d%d",&a,&b);
                flip(a,b);
            }
        }
        vec.clear();
        print(root);
        for(i=0;i<vec.size();i++)
        {
            cout<<vec[i];
            if(i!=vec.size()-1)cout<<" ";
            else cout<<endl;
        }
    }
    return 0;
}

win7 设置电脑保护色,码迷,mamicode.com

时间: 2024-10-15 02:12:17

win7 设置电脑保护色的相关文章

win7设置电脑锁屏时间

方法/步骤 1 小编用的win7电脑,进入控制面板先~ 2 选择系统与安全选项. 3 如图所示,箭头所指,可以设置锁屏时间,不过电源选项中还有个设置开启屏幕输入密码的设置,第一个就是. 4 如图所示,可以设置自动锁屏时间. 5 设置好之后点击保存修改. 6 保存好之后会进入下图界面,可以选择电源计划~ END 注意事项 好吧,小编更想设置个30秒黑屏的设置~ 初恋就是婚姻原创,记得点赞哦~

win7设置电脑保护眼睛颜色(终极方法,提供两种颜色选择)

整了大半天终于把电脑的保护色设置好了.方法如下: 主要是替换文件C:\Windows\Resources\Themes\Aero\Shell\NormalColor\shellstyle.dll,按下文档中的步骤替换即可. 具体的方法在下载文件中有个word文档.请务必按照步骤来.否则可能不成功. 文档中提供了两种颜色,根据个人喜好替换. 备注:请将dll中的(**)去掉,即:改为shellstyle.dll 下载无需积分. 文件下载地址:http://download.csdn.net/det

【C#公共帮助类】DateTimeHelper设置电脑本地时间,实际开发很需要

关于本文档的说明 本文档主要为了解决实际开发当中,服务器和客户端电脑时间不能相等的问题,纯干货,实际项目这种时间不同步的情况很多很多,时间不相等,到时候把本地的数据提交给服务器,服务器看实际上传时间和我写入数据库时间相差好大,影响实际业务操作和判断业务准确性,所以需要设置设备或者电脑的时间来为上传提供准确的时间节点. 欢迎传播分享,必须保持原作者的信息,但禁止将该文档直接用于商业盈利. 本人自从几年前走上编程之路,一直致力于收集和总结出好用的框架和通用类库,不管是微软自己的还是第三方的只要实际项

win7设置虚拟网卡以及如何设置静态IP

首先来说明一下我用的虚拟机是VMware-workstation-6.5.1物理机平台是Win7旗舰版(说实在现在很多教程都还是以古老的XP系统来讲解的我以我就试着在Win7下小试一下.),人家都说嵌入式并不难,但是为什么还是有很多对嵌入式感兴趣的小伙伴最后放弃了呢?以我的拙见可能就是大家对linux系统(温馨提示:此处我说的Linux系统是指PC机上的.)的不熟悉导致的,有些小伙伴就问了这个学嵌入式怎么跑到Linux系统了呢,多方面的原因其中最重要的是因为我们图便宜-系统开源免费呗!既然我们选

半夜自动开机是什么鬼,Win7/Win10电脑自动开机解决步骤

电脑半夜自动开机听起来很奇怪,但确实有网友碰到这种情况,Win7/Win10的电脑或笔记本半夜自动开机是不是很吓人.其实不用大惊小怪,这不过是电脑系统中的一个设置引起的,下面我们就来找找问题原因. Win7/Win10电脑半夜自动开机是什么原因? 电脑半夜自动开机,其实都是由电脑系统中的设置或软件原因引起的,比如"电源管理"设置有问题就可能导致.只要按照下面的方法就可以轻松搞定了! 解决办法 1.依次进入:控制面板--硬件和声音--电源选项,然后找到正在使用的电源计划,选择其右边的&q

win7系统设置电脑不待机状态的操作方法

系统的休眠功能可以方便我们的操作,休眠之后所有的工作都将保存在硬盘中,待我们再次打开电脑之后,这些程序不是重新加载,晚上挂机下载东西,电脑自己会休眠,这样下载就不能够进行了,怎么让电脑不休眠呢?小编带来了设置电脑不休眠的操作教程. 休眠是计算机的一种待机模式,可以把电脑内存中的内容会保存在磁盘上,并完全关闭计算机,下次开机会精准的还原工作状态.可是相对睡眠来说,休眠唤醒时候过长,特别是win7系统又有快速启动,休眠根本没有用武之地. 大家都知道待机就是将系统切换到该模式后,除了内存,电脑其他设备

win7设置共享文件夹

win7设置共享文件夹 1.在硬盘建立一个文件夹: 2.右键属性,选择第二个选项卡,共享: 3.点击共享,选择Everyone,并添加: 4.点击右下方共享,完成: 5.可查看该文件状态:

设置电脑开关机音乐(转)

1首先要音乐的格式正确,必须是.wav,如果你喜欢的音乐不是该种音乐,首先要进行转换,好在现在转换工具多.2该音乐大小有限制,好象不能大于200kb(妨正是不能太大),win2000的启动音乐才154KB.3做好的音乐粘贴到C:\winnt\media(单系统win2000为例)4以2000为例,控制面板---声音和多媒体---声音---启动windows---- 名称-----windows 登录音---浏览,找到你刚粘的文件.5或者你把音乐粘贴到C:\winnt\media下时,把文件"Wi

如何设置电脑的固定IP地址

大家在上网时电脑的IP地址往往都是自动选择的,但在局域网内有时会方便共享文件和监控流量等操作时需要固定的IP地址.下面将简单介绍如何手设置电脑的固定IP地址. 百度经验:jingyan.baidu.com 方法/步骤 1 单击电脑网络连接图标,打开网络和共享中心 步骤阅读 2 点击本地连接 步骤阅读 3 点击详细信息,即可看到IP地址.子网掩码.默认网关.DNS服务器信息 步骤阅读 步骤阅读 4 再点击本地连接状态下的属性 步骤阅读 5 找到Internet 协议版本 4(TCP/IPv4) 用