生成函数

qt之qmake

时光怂恿深爱的人放手 提交于 2020-04-08 12:22:00
qt之qmake qmake 10分钟学会使用qmake 创建一个项目文件 qmake使用储存在项目(.pro)文件中的信息来决定Makefile文件中该生成什么。 一个基本的项目文件包含关于应用程序的信息,比如,编译应用程序需要哪些文件,并且使用哪些配置设置。 这里是一个简单的示例项目文件: SOURCES = hello.cpp HEADERS = hello.h CONFIG += qt warn_on release 我们将会提供一行一行的简要解释,具体细节将会在手册的后面的部分解释。 SOURCES = hello.cpp 这一行指定了实现应用程序的源程序文件。在这个例子中,恰好只有一个文件,hello.cpp。大部分应用程序需要多个文件,这种情况下可以把文件列在一行中,以空格分隔,就像这样: SOURCES = hello.cpp main.cpp 另一种方式,每一个文件可以被列在一个分开的行里面,通过反斜线另起一行,就像这样: SOURCES = hello.cpp \ main.cpp 一个更冗长的方法是单独地列出每一个文件,就像这样: SOURCES += hello.cpp SOURCES += main.cpp 这种方法中使用“+=”比“=”更安全,因为它只是向已有的列表中添加新的文件,而不是替换整个列表。

利用生成函数求斐波那契数列通项公式

ぃ、小莉子 提交于 2020-04-08 04:55:12
利用生成函数求斐波那契数列通项公式 先吐槽一下,学习这玩意儿的时候真的是深深的明白了自己的弱小,人家的一个"解得"我居然解了两个小时。。qwq 前置知识 斐波那契数列: \[f_i = f_{i-1} + f_{i - 2} \] \[f_0 = f_1 = 1 \] 普通生成函数: 简单来说用多项式 \(\sum_{i=0}^{\infty} a_ix^i\) 的系数表示序列的元素 同时因为我们不关心 \(x\) 的取值,因此 \(\sum_{i=0}^{\infty}a_ix^i\) 又称作以 \(x\) 为自由元的形式幂级数 常见的有: \(\frac{1}{1-x} = 1 + x + x^2 + x^3 + \dots + x^{\infty}\) 证明: 后半部分可以直接由通项公式得到 \(S_n = \frac{1-x^{n+1}}{1-x}\) ,当 \(x \in (-1, 1)\) ,那么 \(\lim_{n\to +\infty} x^{n+1} = 0\) 将 \(x\) 替换为 \(xk\) 得 \(\frac{1}{1-kx} = 1 + kx + k^2x^2 + k^3x^3 \dots + k^{\infty}x^{\infty}\) 解法 设 \(A = 1 + 1x + 2x^2 + 3x^3 + 5x^4 + 8x^5 \dots\)

C语言中 *.c和*.h文件的区别!

泪湿孤枕 提交于 2020-04-06 13:19:41
C语言中 *.c和*.h文件的区别! http://blog.163.com/jiaoruijun07@126/blog/static/68943278201042064246409/ 这是HR面试我的一道题,没技术上含量,不过细想起来,还是C语言的最基本的知识!俗话说,目标决定动力,细节决定成败! C文件就是C语言系列的源文件,而H文件则是C语言的头文件,即C系列中存放函数和全局变量的文件,因为C中的函数是被封装起来的,即无法看到其代码。 子程序不要定义在*.h中。函数定义要放在*.c中,而*.h只做声明.否则多引用几次,就会发生函数重复定义的错误。*.h只做声明,编译后不产生代码。这样做目的是为了实现软件的模块化,使软件结构清晰,而且也便于别人使用你写的程序。 纯粹用 C 语言语法的角度,你当然可以在*.h 中放任何东西,因为 #include 完全等价于把*.h 文件 Ctrl-C Ctrl-V 到*.c 中,*.h 中应该都是一些宏定义和变量、函数声明,告诉别人你的程序“能干什么、该怎么用”。*.c 中是所有变量和函数的定义,告诉计算机你的程序“该怎么实现”。当然,如果一个*.h 被多个*.c 包含,而且*.h 中有对象(变量或函数)的定义,就会发生重复定义的错误了,声明可以无穷多次,定义只能一次。 一般来说,一个C文件应该是一个模块,如果你的程序仅仅有一个模块

玩游戏——生成函数

谁说胖子不能爱 提交于 2020-04-06 09:31:13
题面    洛谷P4705 解析   答案显然是$\frac{\sum_{i=1}^n\sum_{j=1}^m (a_i+b_j)^k}{n*m}$   因此只需要求出$\sum_{i=1}^n\sum_{j=1}^m (a_i+b_j)^k$即可   暴力展开:$$\begin{align*}\sum_{i=1}^n\sum_{j=1}^m (a_i+b_j)^k&=\sum_{i=1}^n\sum_{j=1}^m\sum_{p=0}^k\binom{k}{p}a_i^p*b_j^{k-p}\\ &=k!\sum_{p=0}^k\sum_{i=1}^n\frac{a_i^p}{p!}\sum_{j=1}^m\frac{b_j^{k-p}}{(k-p)!}\\&=k!\sum_{p=0}^k\frac{\sum_{i=1}^na_i^p}{p!}\frac{\sum_{j=1}^mb_j^{k-p}}{(k-p)!}\end{align*}$$   现在就是要求对于任一$1\leqslant p \leqslant k$,$\sum_{i=1}^na_i^p$(求$\sum_{j=1}^mb_j^{k-p}$是类似的)   这个比较常见,我在 生成函数小结 里有写,这里直接给出结论:$$\begin{align*}F(x)&=\sum_{j=0}^{\infty}\sum_{i=1

Form生成的label标签详解

淺唱寂寞╮ 提交于 2020-04-04 14:24:36
使用Form生成html标签的时候,虽然提供了widget的方法可以自定义标签,但是只能给生成的input标签添加样式,对于生成的label标签无法添加样式。而很多场景下需要为label和input都添加class以实现自定义样式。 测试环境 创建一个Form,通过Form帮我们生成HTML: # urls.py 文件,添加对应关系 path('email/', views.email), # forms.py 文件 from django.forms import Form from django.forms import fields from django.forms import widgets class UserEmail(Form): username = fields.CharField() password = fields.CharField( widget=widgets.PasswordInput(attrs={'class': 'c1'}) ) email = fields.EmailField( widget=widgets.EmailInput(attrs={'class': 'c1'}) ) # views.py 文件 def email(request): obj = forms.UserEmail() print(obj['email']

Grand Central Dispatch (GCD) 转

北城余情 提交于 2020-04-03 05:31:34
GCD是异步执行任务的技术之一。 GCD使用很简洁的记述方法,实现了极为复杂繁琐的多线程编程。 dispatch_async(queue, ^{ //长时间处理 //例如AR用动画识别 //例如数据库访问 //长时间处理结束,主线程使用该处理结果 dispatch_async( dispatch_get_main_queue(), ^{ //只在主线程可以执行的处理 //例如用户界面更新 }); }); 在NSObject中,提供了两个实例方法来实现简单的多线程技术:performSelectorInBackground:withObject performSelectorOnMainThread。 我们也可以改用performSelector系方法来实现前面使用的GCD。 //NSObject performSelectorInBackground:withObject:方法中执行后台线程 - (void)launchThreadByNSObject_performSelectorInBackground_withObject { [self performSelectorInBackground:@selector(doWork) withObject:nil]; } //后台线程处理方法 - (void)doWork { @autoreleasepool{ //长时间处理,

Python高级特性:迭代器和生成器

一个人想着一个人 提交于 2020-04-01 07:48:54
在Python中,很多对象都是可以通过for语句来直接遍历的,例如list、string、dict等等,这些对象都可以被称为可迭代对象。至于说哪些对象是可以被迭代访问的,就要了解一下迭代器相关的知识了。 迭代器 迭代器对象要求支持迭代器协议的对象,在Python中,支持迭代器协议就是实现对象的__iter__()和next()方法。其中__iter__()方法返回迭代器对象本身;next()方法返回容器的下一个元素,在结尾时引发StopIteration异常。 __iter__()和next()方法 这两个方法是迭代器最基本的方法,一个用来获得迭代器对象,一个用来获取容器中的下一个元素。 对于可迭代对象,可以使用内建函数iter()来获取它的迭代器对象: 例子中,通过iter()方法获得了list的迭代器对象,然后就可以通过next()方法来访问list中的元素了。当容器中没有可访问的元素后,next()方法将会抛出一个StopIteration异常终止迭代器。 其实,当我们使用for语句的时候,for语句就会自动的通过__iter__()方法来获得迭代器对象,并且通过next()方法来获取下一个元素。 自定义迭代器 了解了迭代器协议之后,就可以自定义迭代器了。 下面例子中实现了一个MyRange的类型,这个类型中实现了__iter__()方法

生成函数

陌路散爱 提交于 2020-03-26 09:26:31
母函数 定义 又称生成函数,用多个独立多项式相乘来解决组合问题。 只关心多项式的系数,而不关心变量x的取值 普通型母函数 HDU 1085 题意:给你1,2,5这几个硬币,每一个有a,b,c个,问你最小的不能达到的价值是多少? 代码 #include<iostream> #include<cstring> using namespace std; const int maxn = 1e4; int a,b,c;//1 2 5硬币的数量 int t1[maxn];//中间结果存放系数 int t2[maxn];//中间结果 存放 int r[maxn];//最终结果存放 int main(){ while(cin>>a>>b>>c){ if(a + b + c == 0) break; int limit = a + 2*b + 5*c;//最多能表示的钱 memset(r , 0 , sizeof r); for(int i=0; i<=limit+1; i++){ t1[i] = t2[i] = 1; } for(int i=0; i<=a; i++){ //枚举第一个多项式的次数 i for(int j=0; j<=2*b; j+=2){ //枚举第二个多项式的次数 j r[i+j] += t1[i]*t2[j] ;//得到的是对i+j次数的贡献 } } for(int i=0

生成函数

强颜欢笑 提交于 2020-03-26 09:22:45
生成函数 普通生成函数(OGF) 定义 对于一类对象构成的集合 \(A\) ,若满足 对于每个元素 \(a\in A\) ,定义非负整数 \(|a|\) 为元素 \(a\) 的“大小”或“权值” 对于给定的 \(n\) ,大小为 \(n\) 的元素的个数是有限的(但 \(A\) 可以是无限集),其对应的元素个数记为 \(A_n\) 我们定义 \(A(x)=\sum\limits_{n\ge 0}A_nx^n\) 为 集合 \(A\) 的普通生成函数。 注意这里的 \(A(x)\) 认为是一个形式幂级数,在 \(\bmod x^n\) 以及系数 \(\bmod P\) 的意义下运算 基本运算 设有两个集合 \(A,B\) 。 定义它们的不交并为 \(C\) ,则 \(C(x)=A(x)+B(x)\) 通俗点其实就是把它们的元素原来是什么样还是什么样塞到 \(C\) 里面 定义两个集合的笛卡尔积为 \(D\) ,则 \(D=A*B\) ,这里指卷积。 意思是对于 \(a\in A,b\in B\) ,我们有 \(d=a+b,|d|=|a|+|b|\) (这里前面可以简单的理解成定义了元素的并 \(b\) ) 序列OGF 对于一类对象构成的集合 \(A\) ,定义 \(\mathbf {SEQ}(A)\) 是由 \(A\) 的元素排列而成的序列组成的集合,对于其中某一个长度为 \(n\)

生成函数与指数生成函数

*爱你&永不变心* 提交于 2020-03-26 09:21:29
普通型生成函数GF: 序列 \({a_i}\) 的生成函数为 \(\sum\limits_{i=0}^{\infty}a_ix^i\) 常用GF的收敛形式: 1. \(\sum\limits_{i=0}^{\infty}x^i=\frac{1}{1-x}\) ,序列 \({1}\) 的生成函数 2. \(\sum\limits_{i=0}^{\infty}\binom{n}{i}x^i=(1+x)^n\) ,序列 \({\binom{n}{i}}\) 的生成函数,就是二项式定理 3. \(\sum\limits_{i=0}^{\infty}\binom{n+i-1}{i}x^i=\frac{1}{(1-x)^n}\) ,序列 \({\binom{n+i-1}{i}}\) 的生成函数,就是广义二项式定理 4. \(\sum\limits_{i=0}^{\infty}(i+1)x^i=\frac{1}{(1-x)^2}\) ,为3中n=2的特殊形式 指数型生成函数EGF: 序列 \({a_i}\) 的生成函数为 \(\sum\limits_{i=0}^{\infty}\frac{a_ix^i}{i!}\) 常用EGF的收敛形式: 1. \(\sum\limits_{i=0}^{\infty}\frac{x^i}{i!}=e^x\) ,序列 \({1}\) 的生成函数 2. \(\sum