| |||
|
这道题话说是相当简单的,将区间合并,然后计算就可以了,但是如果题目条件改变一下就不一样了。
所以这道题可以用树状数组或者线段树来解决。
具体内容以后再写吧,最后总结一下我刷这道题的经历:
第一次是很久以前些的,用朴素的O(l)算法,
#01: Accepted (121ms, 98476KB)
#02: Accepted (137ms, 98476KB)
#03: Accepted (184ms, 98476KB)
#04: Time Limit Exceeded (?, 98476KB)
#05: Time Limit Exceeded (?, 98476KB)
#06: Time Limit Exceeded (?, 98476KB)
#07: Time Limit Exceeded (?, 98476KB)
#08: Time Limit Exceeded (?, 98476KB)
#09: Time Limit Exceeded (?, 98476KB)
#10: Time Limit Exceeded (?, 98476KB)
第二次写的线段树,用链表存的,当然超内存了。
#01: Accepted (0ms, 668KB)
#02: Accepted (168ms, 956KB)
#03: Accepted (184ms, 63456KB)
#04: Accepted (340ms, 126196KB)
#05: Memory Limit Exceeded (371ms, ?)
#06: Memory Limit Exceeded (371ms, ?)
#07: Memory Limit Exceeded (371ms, ?)
#08: Memory Limit Exceeded (371ms, ?)
#09: Memory Limit Exceeded (371ms, ?)
#10: Memory Limit Exceeded (356ms, ?)
第三次我改用数组,结果开大了,超内存:
#01: Memory Limit Exceeded (0ms, ?)
#02: Memory Limit Exceeded (0ms, ?)
#03: Memory Limit Exceeded (0ms, ?)
#04: Memory Limit Exceeded (0ms, ?)
#05: Memory Limit Exceeded (0ms, ?)
#06: Memory Limit Exceeded (0ms, ?)
#07: Memory Limit Exceeded (0ms, ?)
#08: Memory Limit Exceeded (0ms, ?)
#09: Memory Limit Exceeded (0ms, ?)
#10: Memory Limit Exceeded (0ms, ?)
第四次我索性将数组改小一点,于是runtime error:
#01: Accepted (0ms, 2292KB)
#02: Accepted (0ms, 2292KB)
#03: Runtime Error (0ms, 2292KB)
写入访问违规, 地址: 0x005c76a0
#04: Runtime Error (0ms, 2292KB)
写入访问违规, 地址: 0x005c76a0
#05: Runtime Error (0ms, 2292KB)
写入访问违规, 地址: 0x005c76a0
#06: Runtime Error (0ms, 2292KB)
写入访问违规, 地址: 0x005c76a0
#07: Runtime Error (0ms, 2292KB)
写入访问违规, 地址: 0x005c76a0
#08: Runtime Error (4ms, 2292KB)
写入访问违规, 地址: 0x005c76a0
#09: Runtime Error (4ms, 2292KB)
写入访问违规, 地址: 0x005c76a0
#10: Runtime Error (12ms, 2292KB)
写入访问违规, 地址: 0x005c76a0
第五次我将数组开到一百万,比上次扩大十倍,但结果一样:
#01: Accepted (0ms, 17264KB)
#02: Accepted (0ms, 17264KB)
#03: Runtime Error (0ms, 17264KB)
写入访问违规, 地址: 0x0146fdc0
#04: Runtime Error (0ms, 17264KB)
写入访问违规, 地址: 0x0146fdc0
#05: Runtime Error (0ms, 17264KB)
写入访问违规, 地址: 0x0146fdc0
#06: Runtime Error (0ms, 17264KB)
写入访问违规, 地址: 0x0146fdc0
#07: Runtime Error (0ms, 17264KB)
写入访问违规, 地址: 0x0146fdc0
#08: Runtime Error (0ms, 17264KB)
写入访问违规, 地址: 0x0146fdc0
#09: Runtime Error (0ms, 17264KB)
写入访问违规, 地址: 0x0146fdc0
#10: Runtime Error (0ms, 17264KB)
写入访问违规, 地址: 0x0146fdc0
第六次我讲究用区间合并,O(m+loc(m))算法,结果小错误不断:
#01: Wrong Answer (0ms, 640KB)
#02: Wrong Answer (0ms, 640KB)
#03: Wrong Answer (0ms, 640KB)
#04: Wrong Answer (0ms, 640KB)
#05: Wrong Answer (43ms, 640KB)
#06: Wrong Answer (59ms, 640KB)
#07: Runtime Error (0ms, 640KB)
执行访问违规, 地址: 0x033c4812
#08: Runtime Error (0ms, 640KB)
执行访问违规, 地址: 0x05c4b447
#09: Runtime Error (0ms, 640KB)
执行访问违规, 地址: 0x041fa2ce
#10: Runtime Error (0ms, 640KB)
执行访问违规, 地址: 0x035de5ca
最后检查才发现几个致命错误:
1.忘记删除调试代码
2.变量些反了
3.数组开的过小
4.没有看到题目是从0开始计数的。
加上我不愿意DEBUG,找到一项错误就盲目提交...
悲剧ing...
在第十次提交之后,终于AC
呃,艰难的AC历程啊。
这道题还不能画上句号,因为还有树状数组和线段树的方法没有AC...