题目名称 | 2153. 快速红包变换 |
---|---|
输入输出 | redbag.in/out |
难度等级 | ★★★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 11 |
题目来源 | KZNS 于2016-02-06加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:5, 提交:272, 通过率:1.84% | ||||
KZNS | 100 | 2.048 s | 13.31 MiB | C++ |
梦那边的美好ET | 100 | 2.366 s | 26.14 MiB | C++ |
FoolMike | 100 | 2.380 s | 13.17 MiB | C++ |
葳棠殇 | 100 | 2.426 s | 13.32 MiB | C++ |
FoolMike | 100 | 2.810 s | 12.79 MiB | C++ |
Wei | 90 | 0.857 s | 13.02 MiB | C++ |
Wei | 90 | 0.858 s | 15.00 MiB | C++ |
面对疾风吧 疾风 疾风吧 | 90 | 0.933 s | 11.38 MiB | C++ |
sxysxy | 90 | 0.954 s | 9.44 MiB | C++ |
sxysxy | 90 | 0.954 s | 9.44 MiB | C++ |
本题关联比赛 | |||
新春水题赛 |
关于 快速红包变换 的近10条评论(全部评论) | ||||
---|---|---|---|---|
回复 @Turkey :
不不不……可以重载,但是不能用$const$……
HZOI_蒟蒻一只
2017-10-09 20:07
24楼
| ||||
噩梦结束啦!!
+=原来不能重载 | ||||
感受到了世界的恶意......为什么要多加一组
| ||||
卧槽...这组数据有点强啊23333
| ||||
讲道理,直接按照最大值递归下去处理的势能是不行的吧,比较科学的做法是在线段树每个节点上维护严格次小次大值,按吉司机论文方法写吧。
等回来有空了回来造个数据hack暴力选手 造数据方式: cbmax 1 n -inf 和 cbmin 1 n inf 相间分布,这样可以卡掉直接分治的同学,比如Itachi 初始序列搞成 inf 和 -inf 相间分布,操作的话 cbmax 1 n 0 和 add 1 n -1 交错分布,可以卡掉机智的暴力选手Go灬Fire,他打的特判挺多的 似乎这样做的话几乎所有暴力乱搞就都挂掉了 UPD:分块套平衡树可以做到$O(n\sqrt{nlogn})$ UPD2:分块平衡树卡常…… UPD3:分块大法好,不带平衡树,$O(n\sqrt{n})$,求吉司机线段树造数据来卡我复杂度,数据已更新 | ||||
| ||||
change的时候忘了给add清零,改完交发现cbmax和cbmin忘改了,最后cbmax和cbmin的修改条件又出了错。。。我要完了
| ||||
喵喵喵?
| ||||
....
| ||||
凄凄惨惨戚戚
|
春节,又是一年一度发红包的时节。
这天晚上,小O睡的正香,她梦见在NOI上拿了金牌,过不了多久,保送清华,进入计算机系,打入ACM,赢取金奖,走上人生巅峰,想想还有点小激动。
这时,残暴的笑声吵醒了小O。
“哈哈!愚蠢的人类!这种纸质的红包早就不能镇压本座了!哈哈!”
“看你一脸懵逼,没错,本座就是‘祟’!愚蠢的人类!用红包镇压了本座千百年!如今!QQ微信红包当世,人类寄托在压岁钱里的信念已经冲淡了!这,正是本座重现大地的契机!哈哈!”
“人类,你是本座遇到的第一个人!你来和本座玩个游戏吧!恩,就用这可恶的红包吧!哈哈!”
“本座,在这里放一些红包,然后!对里面的钱数做一些变换,你,要回答本座的问题,明白的了吗!哈哈!”
第一行,一个数N,表示红包的数量
第二行,N个数,表示红包A[1],A[2]……A[N]初始的钱数
第三行,一个数M,表示变换和询问的个数和
第4~3+M行,每行包含一条命令令,和命令的具体细节。
命令如下:
Cadd l r a (add 从A[l]到A[r]每个红包钱数加a)
Cchange l r a (change 从A[l]到A[r]每个红包钱数变为a)
Cbmax l r a (be max 从A[l]到A[r]每个红包钱数变为max(A[i],a))
Cbmin l r a (be min 从A[l]到A[r]每个红包钱数变为min(A[i],a))
Qsum l r (sum 求从A[l]到A[r]每个红包钱数和)
Qwmax l r (what is max 从A[l]到A[r]每个红包钱数的最大值)
Qwmin l r (what is min 从A[l]到A[r]每个红包钱数的最小值)
Qnmax l r (number of max 从A[l]到A[r]每个红包钱数的最大值的个数)
Qnmin l r (number of min 从A[l]到A[r]每个红包钱数的最小值的个数)
针对每个询问,输出结果,每行一个。
10 4 8 4 7 2 2 5 2 9 8 10 Qsum 1 6 Qsum 3 4 Cadd 3 4 8 Cadd 5 6 6 Qsum 6 9 Cadd 7 8 4 Qsum 8 8 Cadd 7 8 8 Cadd 2 5 2 Cadd 7 10 1
27 11 24 6
10 7 4 4 0 8 1 1 9 3 3 10 Cbmin 2 10 3 Qsum 2 7 Cbmax 2 8 5 Cbmin 2 4 5 Qsum 9 10 Cadd 3 6 9 Cbmin 10 10 7 Qnmax 7 7 Qnmax 4 5 Cadd 4 9 2
11 6 1 2
各组数据N,M取值,指令种类如下
10 10 Cadd Qsum
1000 1000 Cadd Cchange Qsum
100000 100000 Cadd Cchange Qsum
100000 100000 Cadd Cchange Qsum
100 100 全部
10000 10000 全部
10000 10000 全部
100000 100000 全部
100000 100000 全部
100000 100000 全部
题目中全部数据可用int保存
UBWH
UPD:2017.9.15新添数据一组By Mike,现在复杂度不对的算法都跪了……