A. Block Compaction [线段树]
题目地址:
http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9158#problem/A
模拟压缩过程。对于向下压缩,先将矩形按y坐标排序,按排好的序将矩形向下移。用线段树保存区间最大值,此处对应区间最高点。
查询x到p区间的最大值,如果该矩形可以下降,就处理并改变y和q坐标。每处理一个矩形后更新线段树。对于左移压缩同样处理。
B. Chemical Products [简单题]
题目地址:
http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9158#problem/B
设A、B、C的量分别为na,nb,nc,AB、BC、CA的单位价值分别为vab、vbc、vca,AB、BC、CA合成的量分别为nab、nbc、nca。按题目要求满足要列约束:
nab+nac<=na
nbc+nab<=nb
nca+nbc<=nc
于是可以枚举nab,nbc,对于一组合理的nab、nbc值,nca最优值唯一确定,复杂度为O(n^2)。对每组枚举结果取最大值。
D .Equipment [组合枚举]
题目地址:
http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9158#problem/D
对于k>=5的情况可以找出每列最大的数,然后求和;
对于k==1的情况可以找出5个数之和最大的行。
对于k为2,3,4的情况,需要对5列分组,以k==3为例,此时5列分为3组,每组数量可以是(1,2,2)或(1,1,3),每种情况对应多种具体分组方法,枚举。比如一个具体分组为(1),(4),(2,3,5),那么分别求出第一个数最大的行,第四个数最大的行,第2、3、5个数之和最大的行,再求和。对枚举的每种情况求最值。
E .Furniture Factory [序列处理]
题目地址:
http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9158#problem/E
每个工作对应一个5元组(t1,t2,t3,id,color),t1:可以开始工作的时间,t2:当前已情况下,完成该工作最晚开始时间,t3:工作最晚结束时间,id:第几项工作(要排序),color:该工作是否完成。
按时间t从1到max(deadline)处理每一天,每天对m个工人安排一项工作(如果有的话)。每一天先按t2排序,按t2越小优先,并且合法(t在t1和t2之间,且color显示该工作未完成)的m个工作分配(如果有m个的话)。每个工作做了一天那么其t2值就要+1。
最后对记录的情况整理输出。
H .Neon Sign [思维题]
题目地址:
http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9158#problem/H
一个完全图最多有C(n,3)个三角形,从三角形总数中减去混色三角形数量就是纯色三角形数量。
一个混色三角形有两条边是同种颜色,一条边颜色不同。其三个顶点中有两个顶点关联的两条边不同色,一个顶点关联的两条边同色。我们统计每个顶点关联的红色边数numred和蓝色边数numblue,numred×numblue就是该顶点关联的混色三角形数n。求出所有顶点n的和N,此时每个混色三角形其实算了两次,于是N需除2。
纯色三角形数是C(n,3)- N/2。