procedure2012
It's not worth it to know you're not worth it!
摘要: [题目来源]:NOIP2003普及组[关键字]:动态规划[题目大意]:将一个n个数字组成的环分成m份,使每份之和对10取模后相乘的积最大或最小。//======================================================================[分析]:类似于石子合并的动态规划,解法比较暴力(n<=50 m<=9)。枚举每一个点,以此为起点将环断开,然后f[i,j]为以枚举断链的点开始前i个分成j组的最大(最小值),f[i,j]=f[k,j-1]*sum[k+1,i],具体i,j,k所代表的含义有点不同,结合代码再仔细看吧。[代码]:Vi 阅读全文
posted @ 2011-10-31 20:25 procedure2012 阅读(259) 评论(0) 推荐(0)
摘要: [题目来源]:NOIP2004[关键字]:数学[题目大意]:求2p-1的位数,和后500位。//======================================================================[分析]:求位数可以用数学方法求:N的位数=log10(N),所以2p-1的位数=log10(2p-1)=p*log10(2)。第二问要用高精度求出后500位就行,但是要用快速幂。[代码]:无第一问View Code 1 program Project1; 2 const up = 10000; 3 type 4 rec = record 5 ... 阅读全文
posted @ 2011-10-31 17:46 procedure2012 阅读(293) 评论(0) 推荐(2)
摘要: [题目来源]:NOIP2004[关键字]:二分图[题目大意]:判断是否能用两个栈将给定的序列排列成升序,如果能则输出操作序列。//======================================================================[分析]:易证对于i<j如果存在k,使i<j<k且a[k]<a[i]<a[j]则i和j必定不能在同一个栈里,所以将他们连一条无向边。然后就是利用染色法判断是否是一个二分图。染色时吧标号小的放进栈1就能得出字典序小的操作序列。[代码]:View Code 1 var 2 a, b: array[0.. 阅读全文
posted @ 2011-10-31 17:29 procedure2012 阅读(280) 评论(0) 推荐(0)