noip2002提高组题解
Posted 不明嚼栗的园子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了noip2002提高组题解相关的知识,希望对你有一定的参考价值。
T1.均分纸牌
给出n堆纸牌,每堆a[i]张,总数是n的倍数,每堆只能和相邻的堆移动牌,求最小的次数使得每堆排数相同。
说实话,本来想想就是O(n)的题。。。然后仔细考虑了一下,假设[1,i]的区间纸牌不等于应有的纸牌数的时候,肯定是从[i+1,n]上转移过来的。。那么最直接的方法就是一次移到位,向右一堆多扔少取,一直向右遍历,并统计移动次数即可。
T2.字串变换
给出字符串a,b以及变换规则,x->y,表示a中的子串x可以变成y。如果可以再10步内变成b,输出最小步数,否则NO ANSWER!
说实话。。。感觉字符串处理还是算有点坑的吧。。
做的时候完全转移不出来字符串(其实是快好了,有几个小错误,稍微找一下其实能找出来的。。。)
然后,交了很多代码。。基本就是。。dfs,bfs,id-dfs。。。。写了很久,不是TLE就是MLE。。。那个心累啊。。。
然后最后写的是ID-DFS,本来是超时的,然后加了一个map判重就过了。。。
字符串转移的时候,substr函数和replace函数。。。还是要会的吧。。
T3.自由落体
在高为 H 的天花板上有 n 个小球位置分别为 0,1,2,….n-1。在地面上有一个小车(长为 L,高为 K,距原点距离为 S1)。现在给出小车的速度v,求能接到的个数。
很简单的物理题啊,连公式都说了,只要考虑完整就能A啊。。。
T4.矩形覆盖
给出n个点,用k个矩形覆盖全部,要求面积最小。
没来得及打,T2略坑。。。
然后,其实就是一个dp,把所有点按照横纵坐标排序,然后用f[i][j][k]表示[i,j]区间内的点用k个矩形覆盖的最小面积。转移方程就是f[i][j][k]=min(f[i][l][k-1]+(x[j]-x[l+1])*(maxh-minh)).很简单有木有。。。只不过要把横纵坐标的排序优先级换一下再做一次。。。
然而,其实直接模拟不断扩大的矩形,dfs搜索每次由哪个矩形放大来覆盖这个点,也是可以过的。。。
以上是关于noip2002提高组题解的主要内容,如果未能解决你的问题,请参考以下文章