16年北京现场赛的题,全场过的队30+。

初看只知道 O(N^2logK)的暴力,以为是什么变换。

仔细发现活用 二项式定理 就行。

 #include <bits/stdc++.h>
using namespace std;
#define fst first
#define scd second
#define pb(x) push_back((x))
#define mkp(x,y) make_pair((x),(y))
#define ist(x) insert((x))
typedef long long ll;
typedef pair<int ,int > pii;
typedef pair<ll ,ll > pll;
typedef vector< int > vi;
ll gcd(ll a,ll b){ return b==?a:gcd(b,a%b);}
ll qPow(ll a,ll b,ll mod){ ll ret=1ll;while(b){ if(b&) ret=ret*a%mod;a=a*a%mod;b>>=;} return ret; } const ll mod=1e9+;
const int maxn=5e4+;
ll P[maxn][]; // P[i][k] 代表 前i个数字之和的k次方
ll Pre[maxn][];// Pre[i][k] 代表 前i个P[i][k]的和
ll F[],INV[];
char raw[maxn];
int N,K; void init(){
P[][]=;
for(int i=;i<=N;++i){
P[i][]=;
P[i][]=(P[i-][]+raw[i-]-'')%mod;
for(int j=;j<=K;++j)
P[i][j]=P[i][j-]*P[i][]%mod;
} Pre[][]=;// 0^0 =1
for(int j=;j<=K;++j){
for(int i=;i<=N;++i)
Pre[i][j]=(Pre[i-][j]+P[i][j])%mod;
}
} ll getC(int i,int j){
if(j==) return 1ll;
return F[i]*INV[i-j]%mod*INV[j]%mod;
} int main(){ F[]=1ll;
for(ll i=;i<=;++i)
F[i]=F[i-]*i%mod;
INV[]=qPow(F[],mod-,mod);
for(ll i=;i>=;i--)
INV[i]=(i+)*INV[i+]%mod; int Tests;
scanf("%d",&Tests);
while(Tests--){
scanf("%d%d",&N,&K);
scanf("%s",raw);
init();
ll ans;
for(int i=;i<=N;++i){
ans=0ll;
for(int j=;j<=K;++j){
if(j&)
ans=(ans-getC(K,j)*P[i][K-j]%mod*Pre[i-][j]%mod+mod)%mod;
else
ans=(ans+getC(K,j)*P[i][K-j]%mod*Pre[i-][j]%mod)%mod;
}
printf("%lld%c",ans,i==N?'\n':' ');
}
}
return ;
}

(代码写的常数有点大,应该是mod多了,,,

A Boring Problem UVALive - 7676的更多相关文章

  1. A Boring Problem UVALive - 7676 (二项式定理+前缀和)

    题目链接: I - A Boring Problem UVALive - 7676 题目大意:就是求给定的式子. 学习的网址:https://blog.csdn.net/weixin_37517391 ...

  2. hihoCoder 1430 : A Boring Problem(一琐繁题)

    hihoCoder #1430 : A Boring Problem(一琐繁题) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 As a ...

  3. 【XSY1642】Another Boring Problem 树上莫队

    题目大意 给你一棵\(n\)个点的树,每个点有一个颜色\(c_i\),每次给你\(x,y,k\),求从\(x\)到\(y\)的路径上出现次数第\(k\)多的颜色的出现次数 \(n,q\leq 1000 ...

  4. Joseph's Problem UVALive - 3521(等差数列的应用)

    题意:给定n, k,求出∑ni=1(k mod i) 思路:由于n和k都很大,直接暴力是行不通的,然后在纸上画了一些情况,就发现其实对于k/i相同的那些项是形成等差数列的,于是就可以把整个序列进行拆分 ...

  5. 北京区域赛I题,Uva7676,A Boring Problem,前缀和差分

    转载自https://blog.csdn.net/weixin_37517391/article/details/83821752 题解 其实这题不难,只要想到了前缀和差分就基本OK了. 我们要求的是 ...

  6. UVALive - 3713 - Astronauts(图论——2-SAT)

    Problem   UVALive - 3713 - Astronauts Time Limit: 3000 mSec Problem Description Input The input cont ...

  7. UVALive - 3211 - Now or later(图论——2-SAT)

    Problem   UVALive - 3211 - Now or later Time Limit: 9000 mSec Problem Description Input Output Sampl ...

  8. UVALive - 4287 - Proving Equivalences(强连通分量)

    Problem   UVALive - 4287 - Proving Equivalences Time Limit: 3000 mSec Problem Description Input Outp ...

  9. UVALive - 5135 - Mining Your Own Business(双连通分量+思维)

    Problem   UVALive - 5135 - Mining Your Own Business Time Limit: 5000 mSec Problem Description John D ...

随机推荐

  1. mybatis-plus的代码生成器

    简介:构建自定义mybatis-plus模板,自动生成mybatis,entity,mapper,service,controller 项目源码:https://github.com/y369q369 ...

  2. whil

    while true; do select input in cpu_load disk_load disk_use disk_inode mem_use tcp_status cpu_top10 m ...

  3. 检查 TCP 80 端口是否正常工作

    检查 TCP 80 端口是否正常工作 2017-09-13 22:12:50 目录 Windows Server 2012 Windows Server 2008 CentOS 7.3 Ubuntu ...

  4. html5编写软件哪个好?八款html5编写软件推荐

    随着各大浏览器对HTML5技术支持的不断完善,未来HTML5必将改变我们创建Web应用程序的方式.而很多html5的初学者都想找一款好用的编写软件,这里主机吧就给大家推荐七款好用的html5编写软件. ...

  5. efcore migration

    实体------->migration------->db ---------------------------------------------------------------- ...

  6. Error:(72) error: unknown element <user-permission> found.

    android studio升级之后会出现这样一个问题,Error:(72) error: unknown element <user-permission> found. 解决方法是在项 ...

  7. 质心坐标(barycentric coordinates)及其应用

    一.什么是质心坐标? 在几何结构中,质心坐标是指图形中的点相对各顶点的位置. 以图1的线段 AB 为例,点 P 位于线段 AB 之间, 图1 线段AB和点P 此时计算点 P 的公式为 . 同理,在三角 ...

  8. 李清华 201772020113《面向对象程序设计(java)》第十四周学习总结

    1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和步骤 实验1: 导入第12章示例程序,测试程序并进行组内讨论. 测试程 ...

  9. MYSQL1

    一:对查询就行优化 避免全表查询 1.首先考虑在where及order by 列上建立索引 2.where子句   LIKE  '%abc%' 前置%   引擎放弃使用索引而进行全表扫描 3.wher ...

  10. Android中 Git 使用中几个概念

    1.仓库(版本库) 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史 ...