题目名称 1859. [国家集训队2011]拆迁队
输入输出 lanxisi.in/out
难度等级 ★★★★
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 20
题目来源 Gravatarcstdio 于2014-12-09加入
开放分组 全部用户
提交状态
分类标签
斜率优化 线段树
查看题解 分享题解
通过:23, 提交:91, 通过率:25.27%
GravatarSpylft 100 0.372 s 4.15 MiB C++
GravatarSpylft 100 0.399 s 9.09 MiB C++
Gravatar 100 0.476 s 9.30 MiB C++
GravatarFoolMike 100 0.581 s 7.17 MiB C++
Gravatar_Itachi 100 0.823 s 14.79 MiB C++
Gravatarop_组撒头屯 100 0.879 s 33.48 MiB C++
Gravatar_Itachi 100 0.927 s 14.79 MiB C++
Gravatar┭┮﹏┭┮ 100 0.930 s 12.60 MiB C++
Gravatar_Itachi 100 0.943 s 14.79 MiB C++
Gravatar_Itachi 100 0.946 s 5.25 MiB C++
关于 拆迁队 的近10条评论(全部评论)
一个Y打成了X导致调了4h,视力为0,望周知
Gravatar┭┮﹏┭┮
2024-03-16 14:16 7楼
题目给的A>=0,我还以为拆了再建的美观值可以为0呢……
cdq分治大法好,伏地膜万古神犇cdq!
GravatarFoolMike
2017-06-04 18:03 6楼
UUPD:又改写了一个二分的,也写错好久。。最后发现自己二分姿势一直是有bug的。。
Gravatar_Itachi
2017-04-04 16:07 5楼
UPD:又写了个复杂度正确的(nlog^2),不过三分写挂了好久。。
Gravatar_Itachi
2017-04-04 15:39 4楼
好吧我承认我的第二问做法貌似是可以构造数据卡掉的,但是我没有成功,大体卡的方法是“构造出一种数据使得g[i]的值只有两个且g[i]==1的和g[i]==2的各有n/2个”,其中g[i]表示前i个房子保留第i最多保留多少个房子,但是在构造数据时发现似乎难以构造出这样的数据?我尝试构造前n/2单调减,后n/2单调减,但是后n/2都比前n/2大的,但是没能卡住,是我的姿势不对吗?求大神指点
Gravatar_Itachi
2017-04-03 06:28 3楼
第一问线段树,第二问玄学暴力水过= =
Gravatarthomount
2016-02-09 20:30 2楼
拆完再建的房子美观值也必须是正的(好像是废话)
不拆房子就得给房主赔偿金并且还要求尽量不拆房子是什么设定啊喂→_→
驼峰命名法就是看着舒服……(虽然一旦用上就表明这是一道丧心病狂的码农题233333333)
做法是斜率优化+线段树套凸包:在线段树每个节点处记录该段元素形成的凸包……然后会用到单点修改(将其压入路径上所有节点的凸包)和段询问(在它覆盖的每一个“完整段”处做一次凸包二分查询)
解题报告:http://blog.sina.com.cn/s/blog_c5566b0f0102v7mu.html
Gravatarcstdio
2014-12-09 20:50 1楼

1859. [国家集训队2011]拆迁队

★★★★   输入文件:lanxisi.in   输出文件:lanxisi.out   简单对比
时间限制:1 s   内存限制:512 MiB

【试题来源】

2011中国国家集训队命题答辩

【问题描述】

lanxisi带领着他的拆迁队来整治一个街道。这个街道由N个旧房子组成,从左到右编号为1..N。每个旧房子i有一个正整数的美观度Ai
lanxisi希望整个街道从左到右美观度严格递增,也就是保证Ai<Aj(i<j)。但是旧的街道明显不符合这个要求,于是lanxisi希望拆迁一些旧房子并在原地建立新房子来满足这一要求。但是与很多拆迁队一样,很多钉子户拒绝拆迁。所以lanxisi希望能保留最多的旧房子来满足某些钉子户,当然,保留一个旧房子需要给房子主人Bi的赔偿金。最后,总花费=整治好以后所有房子美观度之和+赔偿金之和。
现在,请你求出lanxisi最多能保留多少旧房子和整治这个街道所需要的最少总花费(当然是在保留旧房子最多这个前提下的)。重建后房屋的美观值应当是一个正整数。

【输入格式】

第一行有1个整数N,表示旧房子个数。
第二行有N个整数,第i个数Ai表示旧房子的美观度。
第三行有N个整数,第i个数Bi表示保留旧房子的赔偿金。

【输出格式】

第一行输出2个整数,表示保留的旧房子数量、总花费的大小。

【样例输入一】

4
2 1 7 4
1 5 4 3

【样例输出一】

2 25

【样例输入二】

6
1 6 3 4 7 7
1 2 1 1 1 9

【样例输出二】

4 29

【数据规模和约定】

20%的数据中,1<=N<=20。
40%的数据中,1<=N<=7000。
100%的数据中,1<=N<=100000,0<=Ai,Bi<=100000000。
100%的数据中,时间限制为1s。