Southeastern European Regional Programming Contest 2009 部分解题报告

 

                      Southeastern European Regional Programming Contest 2009 部分解题报告

貌似这次题目还是不错的,所以做了一下,不过还有几道难题没弄出来,一边思考,一边求救中。。。。
题目网址:
http://acm.hunnu.edu.cn/online/?action=problem&type=list&courseid=49

Problem A】 

题目类型:数学 ,大数开方(用二分),大数四则运算。

思路分析:

已知 n = p * q  ,  p <= q  ,  | p - k * q| <= 10^5 

先消去p ,  然后解不等式得到 的取值范围为:

       ( -10^5 + sqrt( 10^10  + 4*k*n ) )/2  <= q <= (10 ^ 5 + sqrt(10 ^ 10  + 4 *k *n)) / 2 

本题巧妙之处,在于最多只有10^5 种选择 , 所以依次枚举即可。

       For  ( q = low ;  q<=up ; ++ q ) 

                 If( n % q == 0 )   这就是答案;

涉及大数除大数 , 所以用JAVA好点。 才学java , 写的比较烂 , 被鄙视!



 

Problem B

题目类型:简单模拟 

思路分析:

貌似没什么难点,就是题目描述有点晦涩。

 


 

   

Problem C

题目类型:稀疏图的二分图匹配

思路分析:

同上 , 题目太晦涩 

这题点数比较多,有10000,所以不能直接开二维数组,套匈牙利算法。

推荐使用Dinic算法求最大流解决,速度MS比较快。


ProblemD

题目类型:无向图连通性遍历  最大环

思路分析:

首先,既不能套用Tarjan算法,也不能套用求割点或求割边的算法。

注意到本题一个重要的信息:每条边最多属于一个环。

考虑用类似于求割点或割边的算法,一边用DFS遍历图的节点,一边记录部分信息。


首先考虑DFS遍历得到的生成树(如图),若DFS正好遍历到v这个节点,uv的一个邻节点,显然,u既不属于红点集(否则,v应该在红点集),也不属于灰点集(否则,灰点集应该是v的子孙)。由此可得,若<v,u>边属于题目中的一个环,u只有可能是从根到v路径上的某一点。又由于每边只属于一个环,所以我们只要记录点vDFS遍历得到的生成树的深度dep[ v ] 这个信息就可以完成要求,因为若<v , u>是回向边,必形成环,环的长度为

Dep[u] - dep[v] +1。

再深入一下思考,这个算法却不适用与求任意无向图的最大环,可以举出反例。

ProblemF

题目类型:BFS + 二分 (或者 最短路 二分)

思路分析:

该题的一个切入点在于题目规定了答案的范围[ 0 , 1000]之间,所以可以尝试去二分答案, 看看题目是否等价于具有单调性的可行性问题。很明显可以看出,拉长的棋盘最近距离肯定比压缩的棋盘最近距离大,所以满足单调性。



ProblemG

题目类型:动态规划 (必须用滚动数组)

思路分析:

设子串S[1..n] ,被匹配串T[1..m]

Opt[i , j]表示S[1...i] 与 T[1..j]进行匹配,且二者的尾部严格匹配的最小复杂值 。 

动态转移过程:

S[i] = ' * ' 时 

       Opt[i , j ] = Min( Opt[i - 1, j ] , Opt[i , j - 1] + T[j] - 'a' + 1 ) ;

否则,当S[i] = '?'  时 , 必须与T[j]匹配

       Opt[i , j]  = Opt[i -1 , j - 1]  + T[j] - 'a' + 1 ;

否则,当S[i] = T[j] 时 , 也必须匹配

       Opt[i , j ]  = Opt[i - 1, j - 1 ]  + T[j] - 'a' + 1 ;

否则   Opt[i , j] = 无穷大;

Problem I

题目类型:多重背包 , DFS + 贪心剪枝 

思路分析:

个背包选择时有 0 , 1 , ... , k k + 1种选择 , 所以状态可以用一颗排列树表示。

DFS角度看 , 复杂度为 15!, 明显复杂度太高,应该剪枝。

从贪心的角度思考,最好选择价格和重量比例比较大的物品比较占优势 , 所以这个可以作为DFS的上界估计。然后,我们也可以按照这个顺序贪心出一个可能的解(不一定是最优值),这个值用于动态更新最优值,会大大提高搜索的效率。


悲剧啊。。。。。。。。。。。。

还有好几道题目没弄出来。。。。。。。。

posted on 2010-10-29 02:04 IronOxide 阅读(772) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿

随笔分类

随笔档案

ACMer

方向

搜索

最新评论

阅读排行榜

评论排行榜