第三届河南省大学生程序设计竞赛题型简要分析

来源:互联网 发布:docker web mysql 编辑:程序博客网 时间:2024/05/16 15:17

所有的题目 时间限制: 1

概览:

 

题数

类型

1

线段树;区间树

2

动态规划;枚举

3

图论

4

图论

5

动态规划

6

模拟

7

贪心;(树形)动态规划

8

线段树


【试题一】          房间安排

 

 

练习处:http://acm.nyist.net/JudgeOnline/problem.php?pid=168

 

类型:线段树;区间树

 

解法:普通的做法时间复杂度为O(n) ,每次需要遍历区间内所有的数,但用线段树可以做到O(log n)。普通的做法是统计每天占用的房间总数,最大值即解。

 

【试题二】         素 数

 

练习处:http://acm.nyist.net/JudgeOnline/problem.php?pid=169

 

类型:动态规划;枚举

 

解法:动态规划,求出X前的第一个素数以及其后的第一个素数,取其较近者。枚举(牺牲内存,换取时间),先离线求出范围内的所有素数(168个),存储起来,再找出离X最近且较大的那个素数即可。

 

【试题三】           网络的可靠性 

 

练习处:http://acm.nyist.net/JudgeOnline/problem.php?pid=170

 

类型:图论

 

解法:在给出图的基础上求出闭合环,边数与原始边数差值即解。

 

试题四】          虚拟城市之旅  

 

练习处:http://acm.nyist.net/JudgeOnline/problem.php?pid=247

 

类型:图论

 

解法:求出由源点能到达的强连通分量,然后搜索求最优解。

 

【试题五】         聪明的“KK

 

练习处:http://acm.nyist.net/JudgeOnline/problem.php?pid=171

 

类型:动态规划

 

解法:类似“TheTriangle”(http://acm.nyist.net/JudgeOnline/problem.php?pid=18),这个题利用数塔,数塔的思想就是从下往上来进行运算,不断的更新数组,最终求出最大和。有些细节要注意,当KK走倒最后一列是只能向下走,当KK走到最后一行时,只能向右走。

 

【试题六】          AMAZING AUCTION 

 

练习处:http://acm.nyist.net/JudgeOnline/problem.php?pid=251

http://acm.zju.edu.cn/na_public/showProblem.do?problemCode=2613


类型:模拟

 

解法:先剔除无效竞价,再取最低竞价,为了保证先入为主,在求最小值的过程中应该使用条件min > p[i]而非min>= p[i].

 

【试题七】        BUYING FEED

 

练习处:http://acm.nyist.net/JudgeOnline/problem.php?pid=248

http://202.120.106.94/onlinejudge/problemshow.php?pro_id=440条件不同

 

类型:贪心;(树形)动态规划

 

解法:贪心,求出每个商店(每一点)每买一磅食物需要的价钱,价钱中包括从这点运到终点需要的运费。

DP,转移方程(条件不同)

DP[I][J]=MIN{DP[I-1][K]+K*K*(D[I]-D[I-1])+(J-K)*C[I]}      J-F[I]<=K<=J

根据题目数据给的范围,500(I的范围)*10000(J的范围)*500(K的范围)肯定要超时。 

于是用单调队列优化。

关于单调队列:队头的元素肯定是最小的(最大的)

取元素操作:从队头取出元素,直到该元素在要求的范围内(本题即为J-F[I]<=K<=J

插入元素操作:若队尾元素比插入的元素要大,则删除。直到比待插入的元素小为止,然后再插入元素。

另外通过本题明确了队列的用法,头指针指向第一个元素,尾指针指向最后一个元素的后一位。若头尾指针相等则队列为空。

 

【试题八】          ROOM ASSIGNATION

 

练习处:http://acm.nyist.net/JudgeOnline/problem.php?pid=250

 

类型:线段树

 

题意:题目的意思很简单,问你有没有连续的n的房间,如果有,就输出以那个房间开始(最小的)。如果没有就输出0;还有一种情况:客人要退房间,然后退掉n——n+len-1这些房间。

给出M(M<= 50000)组操作,每组操作的形式如下:

1 D: 询问是否有长度为D的连续区间,如果存在输出最左边的,否则输出0,并且将这块连续的区间占据。

2 X D:将从X开始的连续D块空间释放掉。

 

解法:线段树染色问题,和ZJU2301 Color the Ball类似,也是寻找最长连续区间。记录左右端点的连续情况。


赛题见:http://download.csdn.net/download/wujun8/4218470

0 0
原创粉丝点击