台州学院2010年暑期程序设计兴趣班周赛(2)解题报告

周赛(2)解题报告-by baiyuang

A题 ASCII:简单题。定义整型数组,输入数字,输出ASC码。

 

B题 Fix: 未做。

题目给出平面的个点,某些是固定的,需要加边构造类似三角形的形状,固定其他的点,求出需要加的最小长度,如果无法实现,输出“No Solution”。

 

C题 Ice-sugar Gourd:题目给出一串只由H,T组成的串,要求最小切几次可以把H,T平均分给两人,并输出切的点的位置,且要求竟可能是切的点下标小。

扫描线

首先,知道最多切两次即可

就是找到两条线,一条含有一半个数的H;另一条含有一半个数的T,

然后慢慢向右移,直到有满足条件的情况,当需要两次的时候,注意输出右边界


例如:

4

HHTT

定义pos=0,从第0个位置开始找,统计pos―pos+n/2之间H的个数sum=2,不等于H总个数的一半,向右移即pos++,继续统计pos―pos+n/2之间H的个数,注意此时sum应减1,除去第一个H,因为它不在pos―pos+n/2范围内。此时sum=1等于H总个数的一半,则在pos和pos+n/2位置分别切一刀。

 

D题 Lanterns:未做。

题目描述了n 个灯,m个开关,对应的控制关系,求出对于一个给定的最终的灯状态,有多少种控制开关的方法。

 

E题 New Ground:未做。

题目给出简单多边形的顶点坐标a[0..n-1]

给出另一个相似多边形的两个点b[0],b[1],

且相同下标的点一一对应,求出剩余的点

标称是用复数的乘法和除法来做的,需要理解复数乘法的几何意义

或者 利用 向量的 点积 和 差积 列两个方程,解出x,y

长度平方比为 d = |b[1] - b[0]| / |a[1] - a[0]|

(a[1] - a[0]) . (a[i] - a[1]) = d * (b[1] - b[0]).(b[i] - b[1])

(a[1] - a[0]) * (a[i] - a[1]) = d * (b[1] - b[0])*(b[i] - b[1])

几何题,计算量大,细心认真才可以。

 

F题 Passage:动态规划。


题目描述了一个人有m百万,去选择n条路,

其中,每条路:

1) 有一个成功逃脱的概率pi。

2) 有一个遇到匪徒的概率qi,遇到匪徒需要花费一百万,重新选择另外的一条路。

3) 有一个无法通过的概率1-pi-qi,必须返回,不需花费。

求最终选最优策略,能够逃脱的概率

先按照 pi/qi 从大到小排序,(貌似这样是最优的选择)

//dp[i][j]表示花费j到达i的概率

ans+=dp[i][j]*pass[i].p;//在这里可以出去,所以ans+=dp[i][j]*Pi

dp[i+1][j]+=dp[i][j]*(1-pass[i].p-pass[i].q);//第i条路无法走

dp[i+1][j+1]+=dp[i][j]*pass[i].q;//走第i条路遇到匪徒

 

G题 Pseudoforest:未做。

并查集。

题目给伪森林的定义,每一个连通树最多有一个环,求给定图的最大伪森林。

 

H题 Reversi:描述了翻转棋,给出一个状态,要求算出加一个黑子,最多可以翻几个白子。

我用的暴力搜索。双重循环,外加8个方向上的循环。核心代码如下:

if(check(x,y)&&r[x][y]=='L')

{

       cnt++;

       x+=dir[k][0];

       y+=dir[k][1];

       while(check(x,y))

       {

          if(r[x][y]=='L')

              cnt++;

          else if(r[x][y]=='D')

          {sum+=cnt;break;}

          else if(r[x][y]=='*')

             break;

           x+=dir[k][0];                                               

           y+=dir[k][1];

       }

}

 


I题 Robot:未做。
题解
http://hi.baidu.com/pojoflcc/blog/item/3da18231d2558095a8018e7c.html
题解说是典型的矩阵乘法。

 

J题 Guard:未做。


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

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

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