2015年“达内杯”台州学院第八届大学生程序设计竞赛解题报告

校赛解题:-by yume

A:12345

B:面子工程

背景:领导在各校间巡回抽测体质。

数据范围:最多100个城市100000条道路。其中每条道路都有一个时间花费,每个城市都有一个彩旗花费。


问题:一个城市道路描述情况。求多个领导巡回抽测的最大花费(在时间最短的前提下,花费最大)

分析:(最短路,最大花费)

因为城市道路图只有一个,而对领导的询问有多个,且城市最多100个。

所以,可从这100个城市考虑,使用floyd算法可求解任意两个城市间的最短路。

for(int k = 0; k < 100; k++){

for(int j = 0; j < 100; j++){

for(int j = 0; j < 100; j++){

if(dp[i][j] > dp[i][k]l + dp[k][j]){

dp[i][j] = dp[i][k] + dp[k][j];

}

}

}

}

这样可以保证最短时间了,然后再在里面变形下,当城市i、j间的时间相等时,取其中彩旗花费较大的即可。

for(int k = 0; k < 100; k++){

for(int j = 0; j < 100; j++){

for(int j = 0; j < 100; j++){

if(dp[i][j] > dp[i][k]l + dp[k][j]){

dp[i][j] = dp[i][k] + dp[k][j];

}else{

if(dp[i][j] == dp[i][k] + dp[k][j]){

...

}

}

}

}

}

(注意:当这里的i、j、k相等时,花费的计算公式dp[i][j]=dp[i][k]+dp[k][j]-dp[k][k] 不成立)。

C:F(x)

D:涂色问题

E:促销活动

背景:大学生超市促销活动。

每个物品都有一个进价、售价、和保质期。

奇数天卖1个,偶数天卖2个(保证促销的物品一定可以卖出)

问题:在物品没有保质期前,卖出若干商品,使总获利最大。

数据范围描述:最多有100000个物品参与促销,每个物品最大可获利润为1000000(因此,100000个 * 1000000 会超出int范围,使用longlong)。

分析:

常规思路,贪心下,从保质期最大的物品开始出售(假设就在保质期的最后一天出售),优先卖利润最大的。然后在该天标记出售的物品数+1。如果在该天卖不出去了,则往前寻早可出售的天出售即可。

因此,对与物品一个for循环,每个物品再根据保质期往前找可出售的天(又一个for循环)。时间复杂度O( 100000*1000000)。由此可以推出,此方法会超时。

优化思路:可以发现,超时的主要地方再为每个物品寻早可出售时间上。类比并查集,为每个时间确定的保质期 直接指向一个可出售的最迟时间(parent数组维护)。

int Solve(){

int ret = 0;

memset(par, -1, sizeof(par));

sort(product, product + n);

for(int i = n - 1; i >= 0; i--){

int deadline = FinBin(product[i].second);

if(deadline > 0){

ret += product[i].first;

par[deadline] = deadline - 1;

}

}

return ret;

}

关于奇数天卖1个,偶数天卖2个。只要在天数数组里再加当天还可售物品数,当数量为0时,才另par[deadline] = deadline - 1;

类似题目:http://poj.org/problem?id=1456

题解:http://alanyume.com/646.html

F:袜子

G:线性表公共元素

问题:要求对n个有序线性表求公共元素。

分析:因为线性表最多10000个,每个线性表最多含有100个元素。要求的是公共元素。所以抓住“公共”,只需维护第一个数组,并对该数组里的每个元素判断是否在其他数组里都存在即可。

H:正方形

I:三叉路口

分析:分类讨论,把线段两两的位置情况讨论清楚即可。考点:向量运算。

类似题目:http://210.33.181.162/acmhome/problemdetail.do?&method=showdetail&id=3617

题解:http://alanyume.com/721.html

J:OJ虚拟排名

胡搞。


为解题报告打分
暂时不评分

★★
★★★
★★★★
★★★★★
发表您的评论(若贴AC代码或发表禁止言论等违禁行为将被删除并扣除积分)

|返回 |   | 转到页头|
Copyright @ 2008-2024(浙ICP备2022001332号), TZOJ. All Rights Reserved.