zoukankan      html  css  js  c++  java
  • [BZOJ4811][Ynoi2017]由乃的OJ 树链剖分+线段树

    4811: [Ynoi2017]由乃的OJ

    Time Limit: 6 Sec  Memory Limit: 256 MB
    Submit: 405  Solved: 134
    [Submit][Status][Discuss]

    Description

    由乃正在做她的OJ。现在她在处理OJ上的用户排名问题。OJ上注册了n个用户,编号为1~",一开始他们按照编号
    排名。由乃会按照心情对这些用户做以下四种操作,修改用户的排名和编号:然而由乃心情非常不好,因为Deus天
    天问她题。。。因为Deus天天问由乃OI题,所以由乃去学习了一下OI,由于由乃智商挺高,所以OI学的特别熟练她
    在RBOI2016中以第一名的成绩进入省队,参加了NOI2016获得了金牌保送
    Deus:这个题怎么做呀?
    yuno:这个不是NOI2014的水题吗。。。
    Deus:那如果出到树上,多组链询问,带修改呢?
    yuno:诶。。。???
    Deus:这题叫做睡觉困难综合征哟~
    虽然由乃OI很好,但是她基本上不会DS,线段树都只会口胡,比如她NOI2016的分数就是100+100+100+0+100+100。
    。。NOIP2017的分数是100+0+100+100+0+100所以她还是只能找你帮她做了。。。
    给你一个有n个点的树,每个点的包括一个位运算opt和一个权值x,位运算有&,l,^三种,分别用1,2,3表示。
    每次询问包含三个数x,y,z,初始选定一个数v。然后v依次经过从x到y的所有节点,每经过一个点i,v就变成v opti
     xi,所以他想问你,最后到y时,希望得到的值尽可能大,求最大值?给定的初始值v必须是在[0,z]之间。每次修
    改包含三个数x,y,z,意思是把x点的操作修改为y,数值改为z

    Input

    第一行三个数n,m,k。k的意义是每个点上的数,以及询问中的数值z都 <2^k。之后n行
    每行两个数x,y表示该点的位运算编号以及数值
    之后n - 1行,每行两个数x,y表示x和y之间有边相连
    之后m行,每行四个数,Q,x,y,z表示这次操作为Q(1位询问,2为修改),x,y,z意义如题所述
    0 <= n , m <= 100000 , k <= 64

    Output

    对于每个操作1,输出到最后可以造成的最大刺激度v

    Sample Input

    5 5 3
    1 7
    2 6
    3 7
    3 6
    3 1
    1 2
    2 3
    3 4
    1 5
    1 1 4 7
    1 1 3 5
    2 1 1 3
    2 3 3 3
    1 1 3 2

    Sample Output

    7
    1
    5

    HINT

     

    Source

    By 佚名提供

    用线段树维护v0和v1,v0的每一位代表这一位原来是0的话经过这条链会变成什么,v1的每一位代表这一位原来是1的话经过这条链会变成什么。

    合并,先经过x后经过y,合并之后新的v0=(v0[x]&v1[y])|(~v0[x]&v0[y]),v1=(v1[x]&v1[y])|(~v1[x]&v0[y])

    O(∩_∩)O~ (*^__^*) 嘻嘻…… O(∩_∩)O哈哈~
  • 相关阅读:
    通讯录封装实现
    简单通讯录的实现 main..h .m文件全部
    iOS 开发 OC编程 字典和集合 排序方法
    iOS 开发 OC编程 数组冒泡排序.图书管理
    iOS 开发 OC编程 属性和字符串练习
    iOS 开发 OC编程 属性和字符串
    iOS 开发 OC编程 便利构造器以及初始化方法
    iOS 开发 OC编程 方法的书写
    IOS 开发 OC编程 类和对象
    iOS 开发 c语言阶段考试题
  • 原文地址:https://www.cnblogs.com/wls001/p/8377632.html
Copyright © 2011-2022 走看看