代码改变世界

东南大学2004年程序设计第一届决赛解题报告

2007-03-06 22:10  老博客哈  阅读(981)  评论(2编辑  收藏  举报

                                           东南大学第一届程序设计竞赛决赛解题报告
                                                                                                  农夫三拳@seu
                                                                                                  drizzlecrj@gmail.com
    “善始者实繁,克终者盖寡”,既然初赛解题报告贴出来了,为了不做“寡人”,偶痛下心来做了一下决赛。决赛的题目相对初赛题量进行了减少 ,难度略有增加。为了大家能力的提高,这次就不传solution了。(里面有两题目前为止还没有找到Oj提交)

    第一题 Simple Multiplication
    高精度乘法,模拟手工计算时的即可。
    http://acm.pku.edu.cn/JudgeOnline/problem?id=1001 即为一题稍微复杂点的高精度乘法的问题

    第二题 How Many Triangles
    找递归规律。通过枚举前几个三角形可以发现每一个边长为n(n > 3)的三角形都可以由3个n-1个三角形组成,
    而这种情况下需要除去重叠的部分,还要加上漏掉的部分。由于在偶数边长的情况下会存在一个边长为n / 2倒三角形。因此递归式为
  C[n] = 3*C[n - 1] - 3*C[n - 2] + C[n - 3] + 2 , n为偶数
  C[n] = 3*C[n - 1] - 3*C[n - 2] + C[n - 3] + 1 , n为奇数
  可以在http://acm.hdu.edu.cn/showproblem.php?pid=1396进行提交

    第三题 BST Reconstruction
                题意很简单。我是模拟做的,按照输入序列从后往前的构建BST(Binary Search Tree),然后进行PreOrder输出应该有更好办法

    第四题      Palindrome Numbers
                这题看起来简单,其实花了我不少时间,规律很容易发现,从1位数目的数字,到2位,3位。。。所有回文数的个   数为9, 9, 90, 90, 900, 900, ... ...
  知道这个规律也并非一定能很容易的做出来。事实上使用构造是无可厚非的,关键点要注意回文的第一个数字和其它的数字并相同。此外,从题目的数据量2*10^9可以推算出,回文的“一半”在int范围之内,这就给你不用字符串提供了一些机会。写出短小精悍的程序我是没能做到(-_-),下面是某大牛的一段代码:
  

#include<stdio.h>
  
int main()
  
{
          
int i,j,n;
          scanf(
"%d",&n);
          
while (n)
          
{
                  i
=9;
                  j
=1;
                  
while (n-2*i>0)
                  
{
                          n
-=2*i;
                          i
*=10;
                          j
*=10;
                  }

                  j
+=((n%i==0? i:n%i)-1;
                  printf(
"%d",j);
                  
if (n-i<=0)
                          j
/=10;
                  
while (j)
                  
{
                          printf(
"%d",j%10);
                          j
/=10;
                  }

                  printf(
"\n");
                  scanf(
"%d",&n);
          }

          
return 0;
  }

    第五题      Possible Weights
  数据量比较小,用n^2的dp就可以搞定了。

试题下载