生成函数

CF891E Lust 生成函数

别等时光非礼了梦想. 提交于 2019-11-27 00:26:10
传送门 设在某一次操作之后的 \(a\) 数组变为了 \(a'\) 数组,那么 \(\prod\limits_{i \neq x} a_i = \prod a_i - \prod a_i'\) 。那么就不难发现我们需要求的是进行这 \(k\) 次操作之后的 \(a\) 数组所有数的乘积的期望值。 注意到当第 \(i\) 个数被减去 \(p_i\) 次,那么方案数就是 \(\frac{k!}{\prod p_i!}\) ,那么考虑指数型生成函数求解。那么第 \(i\) 个数的生成函数就是 \(\sum\limits_{j \geq 0} \frac{a_i - j}{j!}x^j = (a_i - x)e^x\) 。那么答案就是 \(k![x^k]e^{nx}\prod (a_i - x)\) 。暴力求出 \(\prod (a_i - x)\) 的表示,求出它的每一项对应的 \(e^{nx}\) 的项的系数,然后就可以求出这个值了。值得注意的是 \(k!\) 太大,但是 \(e^{nx}\) 中也有一个阶乘,这两个可以进行抵消使得需要计算的量在 \(O(n)\) 范围内。复杂度 \(O(n^2)\) 。 代码 来源: https://www.cnblogs.com/Itst/p/11336534.html

django为Form生成的label标签添加class

大城市里の小女人 提交于 2019-11-26 16:15:28
使用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']

2019杭电多校第六场 5/12

笑着哭i 提交于 2019-11-26 14:33:36
前言 发现hdu的多校我怎么才写了1场的blog,咋回事啊。。。 决定不贴代码了 最近讲了很多课,还在学习生成函数等。。。可能一场比赛补题要比较后了 samjia的生成函数课件感觉很不错。。。 然后samjia IOI Au啦,tql 先加在这里以后慢慢补吧(一定会补的!) 1001 1002 每次搜出LIS,然后删除不在当前LIS的直接不用理会,否则暴力重构 1003 1004 1005 转化为一个矩阵,找一个最大子矩阵的和最大。大力 O ( n 2 l o g n ) O(n^2 logn) O ( n 2 l o g n ) 1006 直接暴力枚举x和y分别在哪一段,把绝对值去掉。 然后因为mod问题,所以直接枚举x和y的值来判断解 然后对于一对点 ( x , y ) (x,y) ( x , y ) 直接统计矩形中有多少个点即可 1007 1008 发现减去n的那一边非常的小,暴力枚举那一边,然后check是否成立即可 1009 1010 1011 1012 开个堆,拓扑排序扔进去就好了 来源: https://blog.csdn.net/qq_20139423/article/details/98886236

C++模板template用法

送分小仙女□ 提交于 2019-11-26 14:30:28
引言 模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。C++ 的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO Stream。 1. 模板 1.1 什么是函数模板 函数模板定义一族函数。 //template1.cpp #include <iostream> template<typename T> void swap(T &a, T &b) { T tmp{a}; a = b; b = tmp; } int main(int argc, char* argv[]) { int a = 2; int b = 3; swap(a, b); // 使用函数模板 std::cout << "a=" << a << ", b=" << b << std::endl; double c = 1.1; double d = 2.2; swap(c, d);std::cout << "c=" << c << ", d=" << d << std::endl;return 0; } 函数模板的格式: template function-declaration 函数模板在形式上分为两部分:模板、函数。在函数前面加上 template<…>就成为函数模板,因此对函数的各种修饰(inline、constexpr 等)需要加在

jmeter常用函数

╄→尐↘猪︶ㄣ 提交于 2019-11-26 12:48:14
一、"_csvRead"函数   csvRead函数是从外部读取参数,csvRead函数可以从一个文件中读取多个参数。   下面具体讲一下如何使用csvread函数:   1.新建一个csv或者text文件,里面保存要读取的参数,每个参数间用逗号相隔。每行表示每一组参数,每列表示每种参数:   比如:   admin,123   manager,456   2.打开Jmeter的函数助手,选择csvread函数:   其中:   CSV file to get values from | *alias:要读取的文件路径,应该是绝对路径   CSV文件列号| next| *alias:从第几列开始读取,注意第一列是0   点击生成按钮,则生成了函数,为:${__CSVRead(D:\test.txt,1)}csvread就是从test.txt文件中读取第一列的参数。以此类推。   3.将生成的参数拷贝到需要参数化的参数的值一项中,如果要修改要读取的参数的列,则可以直接在参数值中修改数字而不用重新在csvread函数生成中修改。   4.jmeter执行的时候,如果有多个线程,顺序读取第一行的数字,如果线程组多余文件中的行数,则循环读取。   5.利用该功能,可以实现不同参数需要不同参数值的问题,只需要在需要参数化的地方将生成的CSVRead函数字符串粘贴过去

Python3数据类型之数字

痴心易碎 提交于 2019-11-26 10:30:28
1. Python数字类型的作用 Python数字类型用来存储数值,它是不可变对象,一旦定义之后,其值不可以被修改。如果改变了数字类型的值,就要重新为其分配内存空间。 定义一个数字类型的变量:a = 100, 变量a就存储了100这个数值 2. Python支持三种不同的数值类型 (1)整型(int):Python整型数据,包含正整数和负整数。在Python3中,整型是没有限制大小的,也没有Python2中的Long类型。 同时可以使用十六进制(0x)或八进制(0o)来表示一个整数。 (2)浮点型(float): Python浮点型由整数部分和小数部分组成,也可以使用科学计数法表示,比如:3.14e+10, 60.99E-5 (3)复数(complex): 复数由实数部分和虚数部分组成,可以使用a + bj或者complex(a, b)来表示,其中a是实数部分,b是虚数部分。复数的实部a和虚部b都是浮点型。 3. Python数字类型转换 Python数字类型转换就是将一个数据内置的类型进行转换,而数据类型的转换,只需要将数据类型作为函数名即可。 数字类型转换的函数方法如下: int(x): 将x转换为一个整数; float(x): 将x转换为一个浮点数 complex(x): 将x转换为一个复数,其中实部为x,虚部为0; complex(x, y): 将x和y转换为一个复数

生成函数

眉间皱痕 提交于 2019-11-26 07:53:14
也许更好的阅读体验 一般生成函数(OGF) 引入 考虑一类组合对象组成的集合 \(A\) ,其中: 每个元素 \(a\in A\) 都被定义了“大小” \(|a|\) ,它是一个非负整数。 对于给定的 \(n\) ,大小为 \(n\) 的元素的数量是有限的,记作 \(A_n\) eg. \(A\) 是全体 \(01\) 串组成的集合,一个 \(01\) 串的大小被定义为它的长度则 \(A_n=2^n\) 定义 \(A\left( x\right) =\sum ^{\infty }_{i=0}A_ix^{i}\) 为 \(A\) 的一般生成函数 注意 \(A(x)\) 为一个多项式 这里的 \(A_i\) 为第 \(i\) 项的 系数 这是一个形式幂级数,不用考虑何时收敛 这里的 \(x^i\) 为形式幂,无实义,一般也不会去求 但是 \(x^i\) 有区分实际意义的作用,即 \(x^i\rightarrow\) 第 \(i\) 项 \(x^i\) 的系数为第 \(i\) 种状态的答案 这个不好说,举个例子 eg. \(A\) 是全体 \(01\) 串组成的集合,则 \(\begin{aligned}A\left( x\right) =\sum ^{\infty }_{i=0}2^{i}x^{i}\end{aligned}=\dfrac{1}{1-2x}\)

php随机函数mt_rand()产生的小问题大漏洞

陌路散爱 提交于 2019-11-26 02:33:55
**说到随机函数的应用,作为一个菜鸟,理解的也不是很深刻,在这里之作为一个笔记来记录,以后慢慢将其掌握之后,再在内容上面进行加深。 随机函数的作用,常常是用来生成验证码、随机文件名、订单号,如果用来做安全验证的话常常用来生成加密key、token等等。** 一、常见的随机函数 1、rand() 常用的随机函数,默认生成0-getrandmax()之间的随机数,不过因为性能问题,已经被mt_rand()函数替代 相关函数: rand(int $min,int $max) srand(int $seed),生成时间种子,同一个时间种子下随机生成的随机数值是相同的。 getrandmax()获取最大随机数,这里获取的随机数会随系统的不同而不同。如linux最大2147483647 2、mt_rand 常用的随机函数,默认生成0-mt_getrandmax()之间的随机数, Mersenne Twister 算法生成随机整数 相关函数: mt_srand(),生成种子,同一个种子下随机生成的随机数值是相同的。 该函数是产生随机值的更好选择,返回结果的速度是 rand() 函数的 4 倍(手册是是这么写的),我个人并不认同的,我感觉他说的4倍是很多年前的事了。因为mt_rand()使用的Mersenne Twister algorythm是1997的事,所以在很多年前,和rand(

php类库到sublime完成

北战南征 提交于 2019-11-25 22:33:19
起因 前一篇写了反射类生成php速查表。过年了在家也没事,想完成自己想要实现的sublime自动完成文件生成。就是sublime里输入关键字后按tab自动补全一个全的函数名和参数的,按tab可以切换一致到最后的。也是给别人的承诺,今年肯定会实现sublime的tp5插件的。 地址在 https://github.com/yangweijie/SublimeThinkPHP5.0 思路 搞清sublime 完成的写法 "HTML_FILE_SUFFIX", "TEMPLATE_NAME", { "trigger": "_ad", "contents": "protected function _after_delete(\\$data,\\$options) {\n ${1:}\n}$0" }, { "trigger": "_af", "contents": "protected function _after_find(&\\$result,\\$options) {\n ${1:}\n}$0" }, { "trigger": "_ai", "contents": "protected function _after_insert(\\$data,\\$options) {\n ${1:}\n}$0" }, { "trigger": "_as", "contents":

C++应用程序性能优化(三)——C++语言特性性能分析

半世苍凉 提交于 2019-11-25 21:08:27
C++应用程序性能优化(三)——C++语言特性性能分析 一、C++语言特性性能分析简介 通常大多数开发人员认为,汇编语言和C语言比较适合编写对性能要求非常高的程序,C++语言主要适用于编写复杂度非常高但性能要求并不是很高的程序。因为大多数开发人员认为,C++语言设计时因为考虑到支持多种编程模式(如面向对象编程和范型编程)以及异常处理等,从而引入了太多新的语言特性。新的语言特性往往使得C++编译器在编译程序时插入了很多额外的代码,会导致最终生成的二进制代码体积膨胀,而且执行速度下降。 但事实并非如此,通常一个程序的速度在框架设计完成时大致已经确定,而并非因为采用C++语言才导致速度没有达到预期目标。因此,当一个程序的性能需要提高时,首先需要做的是用性能检测工具对其运行的时间分布进行一个准确的测量,找出关键路径和真正的性能瓶颈所在,然后针对性能瓶颈进行分析和优化,而不是主观地将性能问题归咎于程序所采用的语言。工程实践表明,如果框架设计不做修改,即使使用C语言或汇编语言重新改写,也并不能保证提高总体性能。 因此,遇到性能问题时,首先应检查和反思程序的总体架构,然后使用性能检测工具对其实际运行做准确的测量,再针对性能瓶颈进行分析和优化。 但C++语言中确实有一些操作、特性比其它因素更容易成为程序的性能瓶颈,常见因素如下: (1)缺页 缺页通常意味着要访问外部存储