传送门

生成函数入门题。


按照题意构造函数:

对于限定必须是出现偶数次的颜色:1+x22!+x44!+...=ex+e−x21+\frac {x^2}{2!}+\frac {x^4}{4!}+...=\frac{e^x+e^{-x}}21+2!x2​+4!x4​+...=2ex+e−x​

对于无限定的颜色:1+x1!+x22!+...=ex1+\frac x{1!}+\frac{x^2}{2!}+...=e^x1+1!x​+2!x2​+...=ex

因此最终的生成函数SET(x)=e2x∗(ex+e−x2)2=e4x+2e2x+14SET(x)=e^{2x}*(\frac{e^x+e^{-x}}2)^2=\frac{e^{4x}+2e^{2x}+1}4SET(x)=e2x∗(2ex+e−x​)2=4e4x+2e2x+1​

而我们要求的就是xix^ixi的系数。

根据泰勒展开式:

ekxe^{kx}ekx的展开式中xnx^nxn对应的系数是knk!\frac{k^n}{k!}k!kn​

因此出现的方案数为4n+2n+14n!\frac{4^n+2^{n+1}}{4n!}4n!4n+2n+1​

由于每种方案有n!n!n!种排列方式,因此最终答案就是4n+2n+14\frac{4^n+2^{n+1}}444n+2n+1​

代码:

#include<iostream>
#include<cstdio>
using namespace std;
const int mod=10007;
int T,n;
inline int ksm(int a,int p){int ret=1;for(;p;p>>=1,a=a*a%mod)if(p&1)ret=ret*a%mod;return ret;}
int main(){
	scanf("%d",&T);
	while(T--)scanf("%d",&n),cout<<((ksm(2,n+1)+ksm(4,n))%mod)*2502%mod<<'\n';
	return 0;
}

2018.12.30 poj3734 Blocks(生成函数)的更多相关文章

  1. 2018.12.30【NOIP提高组】模拟赛C组总结

    2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...

  2. 2018.12.30 bzoj3027: [Ceoi2004]Sweet(生成函数+搜索)

    传送门 生成函数好题. 题意简述:给出n个盒子,第iii个盒子里有mim_imi​颗相同的糖(但不同盒子中的糖不相同),问有多少种选法可以从各盒子中选出数量在[a,b][a,b][a,b]之间的糖果. ...

  3. 2018.12.30 bzoj3028: 食物(生成函数)

    传送门 生成函数模板题. 我们直接把每种食物的生成函数列出来: 承德汉堡:1+x2+x4+...=11−x21+x^2+x^4+...=\frac 1{1-x^2}1+x2+x4+...=1−x21​ ...

  4. POJ3734 Blocks(生成函数)

    题意 链接 长度为\(n\)的序列,用红黄蓝绿染色,其中红黄只能是偶数,问方案数 Sol 生成函数入门题 任意的是\(e^x\),偶数的是\(\frac{e^x + e^{-x}}{2}\) 最后化完 ...

  5. 2018.12.30 洛谷P4238 【模板】多项式求逆

    传送门 多项式求逆模板题. 简单讲讲? 多项式求逆 定义: 对于一个多项式A(x)A(x)A(x),如果存在一个多项式B(x)B(x)B(x),满足B(x)B(x)B(x)的次数小于等于A(x)A(x ...

  6. 2018.12.30 Intellij IDEA设置main方法自动补全

    Eclipse与 Intellij IDEA设置方法自动补全 1.首先,点击File-->Settings-->Editor-->Live Templates 设置你想输出的模板 右 ...

  7. 2018.12.1 Test

    目录 2018.12.1 Test A 串string(思路) B 变量variable(最小割ISAP) C 取石子stone(思路 博弈) 考试代码 B C 2018.12.1 Test 题目为2 ...

  8. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  9. 2015.12.29~2015.12.30真题回顾!-- HTML5学堂

    2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停 ...

随机推荐

  1. vue初学:基础概念

    一.vue使用步骤: 1.引包vue.js 2.html中写要操作的DOM节点 3.创建vue对象:new Vue({options}); 4.配置options:el:(要操作的对象,用选择器,同j ...

  2. 设置导航栏和TabBar标题的文字格式

    //TabBar样式 [navi.tabBarItem setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSiz ...

  3. AttributeError: 'WebElement' object has no attribute 'send_keys'

    这个是没问题的代码:用来打开谷歌搜索cheese并退出 from selenium import webdriver from selenium.common.exceptions import Ti ...

  4. Javascript 四种输出方式

    JavaScript 输出 javascript 没有任何打印或输出的函数 可以通过不同的方式输出数据 使用window.alert() 弹出警告框 使用document.write()方法将内容写到 ...

  5. python 基本数据类型 之 字符串

    字符串数据出现的意义 掌握字符串的定义和特性 能熟练掌握字符串常用操作,并了解其他工厂方法 字符串的定义和创建 字符串是一个有序的字符集合,用于存储和表示基本的文本信息,  用引号“          ...

  6. PAT 甲级 1019 General Palindromic Number(20)(测试点分析)

    1019 General Palindromic Number(20 分) A number that will be the same when it is written forwards or ...

  7. fastdfs 上传图片 完整版

    1.jsp文件 <%@ page language="java" import="java.util.*" pageEncoding="UTF- ...

  8. 如何使用NSDL玩转微信跳一跳

    目前网上介绍windows和IOS操作系统上玩微信跳一跳的有很多文章,但介绍Linux平台下的文章相对较少,所以动手操作下和大家分享,同时感谢wangshub在github上的分享: 1 下载wech ...

  9. DNA甲基化测序方法介绍

    DNA甲基化测序方法介绍 甲基化 表观遗传学 DNA 甲基化是表观遗传学(Epigenetics)的重要组成部分,在维持正常细胞功能.遗传印记.胚胎发育以及人类肿瘤发生中起着重要作用,是目前新的研究热 ...

  10. Luogu1501 Tree II - LCT

    Code #include<cstdio> #include<cstring> #include<algorithm> #define rd read() #def ...