loj#P6396. 「THUPC 2018」弗雷兹的玩具商店 / Toyshop
「THUPC 2018」弗雷兹的玩具商店 / Toyshop
题目描述
物是人非事事休,欲语泪先流。
弗雷兹在 C 市有一个玩具店,店里有 种玩具,编号依次为 ,编号为 的玩具的单价为 元,一个该玩具提供的愉悦度为 。
突然有一天,C市来了 个小朋友。据可靠消息,这些小朋友会在一些时刻一起来店里买东西,其中第 个小朋友每次都会带 元( )。
由于某些玩具特别优秀,所以每次小朋友们都会在特定的编号范围内挑选玩具。
除此之外,由于小朋友们在一年前的清华校赛中就愉悦得无法自拔,所以弗雷兹放弃了对他们的治疗,于是小朋友们就可以无限制地购买玩具了。也就是说,对于任意玩具,每个小朋友在每次的购买件数都可以是任意的非负整数。
时代飞速发展,玩具的受欢迎程度和价格也会随着时代的发展而改变。
为了方便你处理这些信息,Yazid 进行了整理,发现这些日子里,弗雷兹的玩具商店里共发生了 个事件。
对于每个事件,都有 个基本参数 。其中 为 至 之间的整数,代表了事件的类别:
-
对于 的事件,Yazid 还会给你一个额外参数 ,表示这是一个价格调整事件:将编号在区间 内的玩具的单价 全部增加 元。为了防止单价超过 元导致玩具永远无法被小朋友们购买,弗雷兹会将所有超过 的单价减去 。(保证 为不超过 的正数)
-
对于 的事件,Yazid还会给你一个额外参数 ,表示这是一个愉悦修正事件:将编号在区间 内的玩具的愉悦度 全部增加 。(需要注意这里的 可能是负数)
-
对于 的事件,表示购买事件:所有的 个小朋友来到弗雷兹的玩具商店,在编号范围在 内的玩具中进行随意地购买。
现在,对于每一次的购买事件,你想知道:
-
所有小朋友所能获得的最大愉悦度之和。
-
所有小朋友所能获得的最大愉悦度的异或和(异或运算是 运算,即 C++/Java/Python 中的
^
运算)。
输入格式
-
第 行 个正整数 ,分别表示玩具数量、以及小朋友的数量。
-
第 行 个正整数 ,依次描述各玩具的单价。
-
第 行 个正整数 ,依次描述各玩具的愉悦度。
-
第 行 个非负整数 ,表示事件的数量。
-
接下来 行依次描述所有事件,每行描述一个事件。每行的开头是 个整数 ,意义见题目描述。
-
如果 ,接下来跟随 个该事件的额外参数(整数) ,意义见题目描述。
-
如果 ,接下来跟随 个该事件的额外参数(整数) ,意义见题目描述。
-
如果 ,接下来无任何额外参数。
-
保证 。
-
对于每一行,如果包含多个数,则用单个空格将它们隔开。
输出格式
- 对于每个购买事件,输出一行 个用空格隔开的整数,依次表示所有小朋友所能获得的最大愉悦度之和、以及所有小朋友所能获得的最大愉悦度的异或和。
4 10
1 6 10 2
100 2333 666 300
7
3 1 4
3 1 3
1 2 4 1
3 1 4
2 2 3 -1000
2 2 3 -600
3 2 4
15165 2865
14165 2169
36630 798
4899 1273
数据范围与提示
保证 ,,。
保证 。
保证 ,。
提示
这个提示本不该有,但善良的出题人还是想提醒你:所有小朋友所能获得的最大愉悦度之和有可能超过 位有符号整数的范围。
来自 2018 清华大学学生程序设计竞赛暨高校邀请赛(THUPC2018),感谢 Pony.ai 对此次比赛的支持。
题解等资源可在 https://github.com/wangyurzee7/THUPC2018 查看。