题面

https://www.lydsy.com/JudgeOnline/problem.php?id=5015

题解

首先把k=1,k=2,k=3的手推一遍

然后发现一些规律 就是数列可以表示成$a_i=2a_{i-1}+f(i)$的形式

然后f(i)算一算之后我们得到

然后我们试图求这个东西的通项公式

我们要把它变成$a_i+f(i)=2(a_{i-1}+f(i-1))$的形式就好了

那么我们设

一共k个变量 对于每一个$n^i$我们根据他的系数可以列一个方程 一共k个方程

所以高斯消元把它解出来就结束了

Code

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll; ll read(){
ll x=,f=;char c=getchar();
while(c<'' || c>''){if(c=='-')f=-;c=getchar();}
while(c>='' && c<=''){x=x*+c-'';c=getchar();}
return x*f;
} const ll mod=1000000007ll;
ll n;
int k;
ll mat[][]; ll calc(ll a,ll b){
ll ret=;
for(int i=;i<=b;i++)
ret=ret*(a-i+)/i;
return ret%mod;
} ll ksm(ll a,ll b){
if(b==) return ;
ll nw=;
if(b==) return a%mod;
if(b&) nw=a;
ll ret=ksm(a,b/);
return ret*(nw%mod)%mod*ret%mod;
} inline ll pd(ll x){
if(x&) return -;
return ;
}
ll ans[]; int main(){
#ifdef LZT
//freopen("in","r",stdin);
#endif
n=read(),k=read();
for(int i=;i<=k;i++){
mat[i][]=calc(k,i)*pd(i+);
mat[i][i]--;
int st=i-;
for(int j=;j<=i;j++)
mat[i][j]+=(*calc(k-j,st)*pd(st--));
}
for(int i=;i<=k;i++){
ll nw=;
for(int j=;j<i;j++) nw=nw+mat[i][j]*ans[j];
ans[i]=(mat[i][]-nw)/mat[i][i];
}
for(int i=;i<=k;i++)
ans[i]=ans[i]%mod;
ll res=ans[k]*ksm(,n)%mod;
for(int i=;i<=k;i++){
ll nw=ans[i]*ksm(n,k-i)%mod;
res=(res-nw+mod)%mod;
}
printf("%lld\n",res); return ;
}

Review

这样做的动机?

就是先把k=2,k=3的情况推了一下 然后发现很相似 f(i)的次数与k相关而k很小 只有10

然后就试图用程序表达手推的过程 发现消元就可以了 然后就做了出来

bzoj 5015 [Snoi2017]礼物的更多相关文章

  1. bzoj 5015 [Snoi2017]礼物 矩阵乘法

    5015: [Snoi2017]礼物 Time Limit: 15 Sec  Memory Limit: 512 MBSubmit: 163  Solved: 115[Submit][Status][ ...

  2. BZOJ_5015_[Snoi2017]礼物_矩阵乘法

    BZOJ_5015_[Snoi2017]礼物_矩阵乘法 Description 热情好客的请森林中的朋友们吃饭,他的朋友被编号为 1-N,每个到来的朋友都会带给他一些礼物:.其中,第 一个朋友会带给他 ...

  3. 洛谷P5364 [SNOI2017]礼物 题解

    传送门 /* 热情好客的小猴子请森林中的朋友们吃饭,他的朋友被编号为 1∼N,每个到来的朋友都会带给他一些礼物:大香蕉.其中,第一个朋友会带给他 11 个大香蕉,之后,每一个朋友到来以后,都会带给他之 ...

  4. bzoj5015 [Snoi2017]礼物 矩阵快速幂+二项式展开

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5015 题解 设 \(f_i\) 表示第 \(i\) 个朋友的礼物,\(s_i\) 表示从 \( ...

  5. bzoj 4827: [Hnoi2017]礼物 [fft]

    4827: [Hnoi2017]礼物 题意:略 以前做的了 化一化式子就是一个卷积和一些常数项 我记着确定调整值还要求一下导... #include <iostream> #include ...

  6. [bzoj5015][Snoi2017]礼物

    来自FallDream的博客,未经允许,请勿转载,谢谢. 热情好客的请森林中的朋友们吃饭,他的朋友被编号为 1-N,每个到来的朋友都会带给他一些礼物:.其中,第一个朋友会带给他 1 个,之后,每一个朋 ...

  7. bzoj P5016[Snoi2017]一个简单的询问——solution

    Description 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出   get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. Input ...

  8. 【bzoj5015】[Snoi2017]礼物 矩阵乘法

    题目描述 热情好客的请森林中的朋友们吃饭,他的朋友被编号为 1-N,每个到来的朋友都会带给他一些礼物:.其中,第一个朋友会带给他 1 个,之后,每一个朋友到来以后,都会带给他之前所有人带来的礼物个数再 ...

  9. [BZOJ]5018: [Snoi2017]英雄联盟 DP

    [Snoi2017]英雄联盟 Time Limit: 15 Sec  Memory Limit: 512 MBSubmit: 270  Solved: 139[Submit][Status][Disc ...

随机推荐

  1. 【学生信息管理系统】EOF 和 BOF

    敲完学生信息管理系统时,在删除信息的时候,常常会出现下图这种错误,遇到问题就要解决这个问题.经过查阅理解了记录集Recordset的EOF和BOF属性,用这两个属性能够知道记录集中是否有信息存在. E ...

  2. mac系统不同java版本切换

    #确认jdk版本 /usr/libexec/java_home #会得到下面信息(不同版本显示不一样) /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jd ...

  3. visual studio 2013 update 3正式版出来了

    微软的更新速度还是蛮快的吗.新版本号出来了,大家快下载体验一下吧,详细下载地址在http://www.visualstudio.com/zh-cn/downloads/download-visual- ...

  4. mysql创建 存储过程 并通过java程序调用该存储过程

    create table users_ning(id primary key auto_increment,pwd int); insert into users_ning values(id,123 ...

  5. bind_ip

    https://docs.mongodb.com/manual/reference/configuration-options/index.html 192.168.2.* --23T10:: I C ...

  6. 如何使用CSS3 @font-face

    @font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体不怕只能使用Web安全字体,你们当中或许有许 ...

  7. Immutable学习及 React 中的实践

    为什么用immutable.js呢.有了immutable.js可以大大提升react的性能. JavaScript 中的对象一般是可变的(Mutable),因为使用了引用赋值,新的对象简单的引用了原 ...

  8. DeepLearningFlappyBird-深度学习玩游戏-1-环境搭建

    -------------------------------------------------------------------------------------- https://githu ...

  9. vscode中检测代码中的空白行并去除的方法【转】

    按下ctrl+h键进行正则匹配:^\s*(?=\r?$)\n 然后直接替换,再看代码发现空行已经不见了.

  10. 随机生成50个字段的elasticsearch的测试程序输入

    词典位置:https://raw.githubusercontent.com/jonbcard/scrabble-bot/master/src/dictionary.txt import json f ...