2018/8/4训练日记 生成函数

A题 Singing Contest

用结构体存储每个歌手各首歌的愉悦值。排序后依次加入队列,每次将队首的两个人出对列。用二人最大值的愉悦值比较输赢后利用二分查找修改胜者的愉悦值数组。并且将胜者加入队尾,直到队列只剩下最后一个元素。

c题 Generation i

相当于染色问题。每一次染色就相当于从某个位置到末端扫一遍

然后假设一共是m个颜色,假设染 k 种颜色  就是C(m,k)

第一个位置肯定是要染色的,有k种选择方法。然后剩下的,有的需要染,有的不需要就是在n-1个位置里选出k-1个位置为开头进行染色,然后具体怎么染色还要有(k-1)!

所以 就是   C(m,k)*k*C(n-1,k-1)*(k-1) !,   k从1到min(位置数,总颜色数)

J题 Heritage of skywalkert

题意:给出n,a,b,c,按照题目给的式子求a[1]~a[n]。最后求所有(i,j)的最大LCM。

思路:保留最大的20项,然后暴力求就能过。大多数人是保留的100项也可以。

还有几天上午看的跟生成函数有关。。。

/*生成函数 解决一大系列的排列组合问题*/
/*无限个 一块钱,五块钱,十块钱   组合出x*/
/* 
   只用一块钱硬币的情况
 p=0个一+ 1个一 + 2个一 +....+  = z的零次方+z的一次方+...
 n=(0个五+ 1个五 + 2个五 +....+ )p=(z的零次方+z的五次方+z的十次方)p
 d=(0个十 +1个十 + ....+  )n =(z的零次方+z的十次方+z的二十)n
 等比数列求和
 p=(1-z的n次方)/(1-z) //z的绝对值小于一  收敛的
  =1/(1-z)  
  p(1-z)=1
  p-pz=1
  p(n)=p(n-1)+[n=0]  //下标
  n(n)=n(n-5)+p(n)
  d(n)=d(n-10)+n(n)
*/

猜你喜欢

转载自blog.csdn.net/qq_37748451/article/details/81408787