cojs 疯狂的求和问题 解题报告
QAQ 好久不在cojs上出题了
最近学了点新科技,于是就做成题来分享了
这道题是要求simga(i^k)
那么就先说说部分分的算法吧:
10分:
直接暴力就可以了,时间复杂度O(nlogk)
30分:
我们考虑设S(n)表示1^k+2^k+……+n^k的和
不难发现S(n+1)=S(n)+(n+1)^k
由二项式定理得(n+1)^k=sigma( C(k,i)*n^i )
构造向量(n^0,n^1,n^2……,n^k,S(n))
不难根据刚才的式子构造出转移矩阵,之后矩阵乘法+快速幂就可以了
时间复杂度O(k^3logn)
60分:
设S(d)表示0^d+1^d+2^d+……+(n-1)^d的和
注意到(d+1)^i - d^i = sigma( C(i,j) *d^j )(其中j不等于i)
如果d的取值为0-(n-1)我们对左式求sigma
我们得到左式=n^i
相应的右式经过化简之后得到sigma( C(i,j) * S(j) )( j<i )
这样C(i,i-1)*S(i-1)=n^i-sigma( C(i,j) *S(j) )( j<i-1 )
由于S(0)已知,所以我们可以在O(k^2)的时间内递推出结果
80分:
我们定义伯努利数为B
可以得到 sigma(i^k) = sigma( C(k+1,j) * B(k+1-j) * (n+1)^j )/(k+1)
如果我们可以快速求出伯努利数,那么我们就可以在O(k)时间内算出答案
我们知道伯努利数的生成函数为x/(e^x-1)
对e^x做泰勒展开之后上下同时消掉一个x我们可以得到
伯努利数的多项式的生成函数 1 / (x^i/(i+1)!)
考虑到分母的多项式是非常容易求出的,而伯努利数的多项式就是这个多项式的逆
多项式求逆即可,时间复杂度O(klogk),常数巨大
100分:
由题面我们其实可以知道sigma(i^k)的通项公式实际上是一个(i+1)次的多项式
设这个多项式为f
我们实际上要求的是f(x)也就是某个点的值
不难在O(klogk)的时间内求出当x=(0->(k+1))的每个点的值
已知k+2个点值,则可以唯一确定一个k+1次的多项式
直接代入拉格朗日插值公式即可得到f(n)的值
注意到直接使用拉格朗日插值公式的时间复杂度是O(k^2)的
但是由于我们相邻点的x坐标相差为1
可以通过预处理阶乘和阶乘的逆元做到O(k)的插值出f(n)
总时间复杂度O(klogk),但是由于log取得是快速幂,所以常数较小
cojs 疯狂的求和问题 解题报告的更多相关文章
- cojs 简单的求和问题 解题报告
一个上午写了两个数据生成器,三个暴力和两个正解以及一个未竣工的伪正解思路 真是累死本宝宝了 首先这个题目暴力我的数据是有很多良心分的 但是不同的暴力拿到的分数也会有所差距,由于是题解就不说暴力怎么写了 ...
- cojs 自己出的题目 解题报告
省选成功成为河北B队队长QAQ 真是忧桑 所以在cojs上出了一套鬼畜的关于树的套题 黑白树: 我们先不考虑R操作 设x是u的祖先,那么fa(x)的贡献显然是 fa(x)*(sz(fa(x))-sz( ...
- cojs 简单的区间问题 解题报告
新学了些弦图和区间图的新玩意,于是就想着出一道题目 其实这道题不用弦图和区间图的理论也是可以做的 首先考虑第一问,第一问是一个NOIP普及组水平的贪心 我们把区间按照右端点从小到大排序,之后从头到尾扫 ...
- 2011 ACM-ICPC 成都赛区解题报告(转)
2011 ACM-ICPC 成都赛区解题报告 首先对F题出了陈题表示万分抱歉,我们都没注意到在2009哈尔滨赛区曾出过一模一样的题.其他的话,这套题还是非常不错的,除C之外的9道题都有队伍AC,最终冠 ...
- Hackerrank 2020 February 2014 解题报告
Hackerrank 2020 February 2014 解题报告 比赛链接 Sherlock and Watson (20分) 题意:给定一个数组,向右平移K次,然后有Q个询问,问第x位置上是几 ...
- 夏令营提高班上午上机测试 Day 4 解题报告
我要是没记错的话,今天的题难度算挺适中的. *标程来自高天宇哥哥 T1:小G的字符串 题目描述 有一天,小 L 给小 G 出了这样一道题:生成一个长度为 n 的.全由小写英文字母构成的字符串,只能使用 ...
- CYJian的水题大赛2 解题报告
这场比赛是前几天洛谷上 暮雪﹃紛紛dalao的个人公开赛,当时基本上都在水暴力分......也没有好好写正解(可能除了T1) 过了几天颓废的日子之后,本蒟蒻觉得应该卓越一下了qwq,所以就打算写一个解 ...
- 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...
- 解题报告 之 HDU5288 OO' s Sequence
解题报告 之 HDU5288 OO' s Sequence Description OO has got a array A of size n ,defined a function f(l,r) ...
随机推荐
- win32开发基础
收集的,正在学习... 跟我一起玩Win32开发(1):关于C++的几个要点 跟我一起玩Win32开发(2):完整的开发流程 跟我一起玩Win32开发(3):窗口的重绘 跟我一起玩Win32开发(4) ...
- 浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
以下是对php中fwrite写入txt文件的时候用 \r\n不能换行的问题进行了介绍,需要的朋友可以过来参考下今天遇到了一个问题就是用fwrite写入txt文件的时候用 rn不能换行试了很久都没找到办 ...
- 表达式语言之ongl表达式
OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,让你通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方 ...
- Google面试题及答案
1. 村子里有100对夫妻,其中每个丈夫都瞒着自己的妻子偷情...村里的每个妻子都能立即发现除自己丈夫之外的其他男人是否偷情,唯独不知道她自己的丈夫到底有没有偷情.村里的规矩不容忍通奸.任何一个妻子, ...
- C# 将cookiecontainer写到本地
public static void WriteCookiesToDisk(string file, CookieContainer cookieJar) { using(Stream stream ...
- ASP.NET MVC 学习第三天
今天来简单说一下Razor视图引擎语法相关的和视图类. 添加一个MvcTest项目,继续添加一个Home控制器,完成index的视图添加.我们就在index这里分析razor视图引擎.下面是home控 ...
- 按键消抖VERILOG实现
对于消抖,有很多种写法.今天分享一下我的写法. 基本思路: 1. 看图 图1 ...
- 【狼窝乀野狼】Excel那些事儿
在工作中我们常常遇到Excel表格,不管是数据的导入导出,还是财务统计什么都,都离不开Excel,Excel是我见过的最牛逼的一个软件(可能我的见识少)没有之一:如果你只停留在Excel处理数据,统计 ...
- C语言基础:两个变量交换值的方法
学习任何语言基础时,两个数值得交换是必须掌握的,下面是3种不同的方式(c语言) 方法一:利用数学的计算技巧 #include <stdio.h> int main() { , b = ; ...
- Opencv图像与矩阵的操作
#include "stdafx.h" #include <cv.h> #include <cxcore.h> #include <highgui.h ...