HPrefix Sum

study from : https://blog.csdn.net/mitsuha_/article/details/81774727

k较小。分离x和k。

另外的可能:求a[k][x],x不确定,想到的是求sum(a[k][1]+a[k][2]+...+a[k][x]),树状数组 sum(x)-sum(x-1)。这题用不上。

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <iostream>
using namespace std; #define ll long long const int maxn=1e5+;
const int maxk=+;
const int inf=1e9;
const ll mod=1e9+;
const double eps=1e-; ll f[maxk][maxn],mul[maxn],chu[maxn];
int n,k; ll C(int x,int y)
{
if (x<)
{
x=y--x;
return (y&?-:)*mul[x]*chu[x-y]%mod*chu[y]%mod;
}
if (x<y)
return ;
return mul[x]*chu[x-y]%mod*chu[y]%mod;
} ll _pow(ll a,ll b)
{
ll y=;
while (b)
{
if (b &)
y=y*a%mod;
a=a*a%mod;
b>>=;
}
return y;
} void update(int x,ll y,int j)
{
while (x<=n)
{
f[j][x]=(f[j][x]+y)%mod;
x+=x&-x;
}
} ll cal(int x,int j)
{
ll sum=;
while (x)
{
sum=(sum+f[j][x])%mod;
x-=x&-x;
}
return sum;
} int main()
{
int m,i,j,mode,x;
ll sum=,y;
scanf("%d%d%d",&n,&m,&k);
k--;
mul[]=;
for (i=;i<=n;i++)
mul[i]=mul[i-]*i%mod;
chu[n]=_pow(mul[n],mod-);
for (i=n-;i>=;i--)
chu[i]=chu[i+]*(i+)%mod;
while (m--)
{
scanf("%d",&mode);
if (mode)
{
scanf("%d",&x);
sum=;
for (j=;j<=k;j++)
sum=(sum+C(x,j)*cal(x,j))%mod;
printf("%lld\n",sum);
}
else
{
scanf("%d%lld",&x,&y);
for (j=;j<=k;j++)
update(x,C(k-x,k-j)*y%mod,j);
}
}
return ;
}
/*
4 11 3
0 3 1
1 4
*/

CGambling

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <iostream>
using namespace std; #define ll long long const int maxn=1e5+;
const int inf=1e9;
const double eps=1e-;
const ll mod=1e9+; ll mul[maxn<<],chu[maxn<<]; ll _pow(ll a,ll b)
{
ll y=;
while (b)
{
if (b&)
y=y*a%mod;
a=a*a%mod;
b>>=;
}
return y;
} ll C(ll x,ll y)
{
return mul[x]*chu[x-y]%mod*chu[y]%mod;
} int main()
{
int n,i,j,a;
scanf("%d",&n);
mul[]=;
for (i=;i<=*n;i++)
mul[i]=mul[i-]*i%mod;
chu[*n]=_pow(mul[*n],mod-);
for (i=*n-;i>=;i--)
chu[i]=chu[i+]*(i+)%mod;
i=,j=;
while (~scanf("%d",&a))
{
printf("%lld\n",_pow(,+i+j)*C(*n--i-j,n-i-)%mod);
i+=(a==),j+=(a==);
}
return ;
}
/* */

GLongest Common Subsequence

牛客网暑期ACM多校训练营 第九场的更多相关文章

  1. 牛客网暑期ACM多校训练营(第四场):A Ternary String(欧拉降幂)

    链接:牛客网暑期ACM多校训练营(第四场):A Ternary String 题意:给出一段数列 s,只包含 0.1.2 三种数.每秒在每个 2 后面会插入一个 1 ,每个 1 后面会插入一个 0,之 ...

  2. 牛客网暑期ACM多校训练营(第五场):F - take

    链接:牛客网暑期ACM多校训练营(第五场):F - take 题意: Kanade有n个盒子,第i个盒子有p [i]概率有一个d [i]大小的钻石. 起初,Kanade有一颗0号钻石.她将从第1到第n ...

  3. 牛客网 暑期ACM多校训练营(第二场)A.run-动态规划 or 递推?

    牛客网暑期ACM多校训练营(第二场) 水博客. A.run 题意就是一个人一秒可以走1步或者跑K步,不能连续跑2秒,他从0开始移动,移动到[L,R]的某一点就可以结束.问一共有多少种移动的方式. 个人 ...

  4. 牛客网 暑期ACM多校训练营(第一场)A.Monotonic Matrix-矩阵转化为格子路径的非降路径计数,Lindström-Gessel-Viennot引理-组合数学

    牛客网暑期ACM多校训练营(第一场) A.Monotonic Matrix 这个题就是给你一个n*m的矩阵,往里面填{0,1,2}这三种数,要求是Ai,j⩽Ai+1,j,Ai,j⩽Ai,j+1 ,问你 ...

  5. 牛客网暑期ACM多校训练营(第三场)H Diff-prime Pairs (贡献)

    牛客网暑期ACM多校训练营(第三场)H Diff-prime Pairs (贡献) 链接:https://ac.nowcoder.com/acm/contest/141/H来源:牛客网 Eddy ha ...

  6. 2018牛客网暑期ACM多校训练营(第二场)I- car ( 思维)

    2018牛客网暑期ACM多校训练营(第二场)I- car 链接:https://ac.nowcoder.com/acm/contest/140/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 ...

  7. 牛客网暑期ACM多校训练营(第七场)Bit Compression

    链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 题目描述 A binary string s of length N = 2n is give ...

  8. 牛客网暑期ACM多校训练营(第一场) - J Different Integers(线段数组or莫队)

    链接:https://www.nowcoder.com/acm/contest/139/J来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048 ...

  9. 牛客网暑期ACM多校训练营(第九场) A题 FWT

    链接:https://www.nowcoder.com/acm/contest/147/A来源:牛客网 Niuniu has recently learned how to use Gaussian ...

随机推荐

  1. mac 电脑 打开隐藏文件

    command +shift +. 第一次是打开,第二次是关闭

  2. vue-cli: render:h => h(App)是什么意思

    import Vue from 'vue' import App from './App.vue' Vue.config.productionTip = false new Vue({ render: ...

  3. Oracle 查询字段不包含多个字符串方法

    开发过程中遇到个需求,用户要提取的数据列中不包含 YF.ZF.JD的字符串, 方法1:select * from table  where  order_no not like '%YF%' and ...

  4. How to ssh

    ssh -p 22 cuthead@127.0.0.1

  5. 3.docker基础架构

    docker是一个典型的c/s架构产品. dockerd :为客户端提供  RESTFUL API,响应来自客户端的请求, 采用模块化的架构, 通过专门的 Engine 模块来分发管理各 个来自客户端 ...

  6. redis两种持久化

    Redis 提供了不同级别的持久化方式: RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储. AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据 ...

  7. codeforces401C

    Team CodeForces - 401C Now it's time of Olympiads. Vanya and Egor decided to make his own team to ta ...

  8. 训练赛-Move Between Numbers

    题意:给你n个数,每个数有20个数字,每两个数字之间如果相等的数字数量为17个(一定是17),就能从一个数字到达另一个数字,给你两个数字编号,求从第一个数字编号到第二个数字编号之间最少需要走几次: 解 ...

  9. 洛谷 P1484 种树

    题目描述 cyrcyr今天在种树,他在一条直线上挖了n个坑.这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会在相邻的两个坑中种树.而且由于cyrcyr的树种不够,他至多会种k棵树 ...

  10. Android 模块化/热修复/插件化 框架选用

    概念汇总 动态加载:在程序运行的时候,加载一些程序自身原本不存在的文件并运行这些文件里的代码逻辑.动态加载是热修复与插件化实现的基础. 热修复:修改部分代码,不用重新发包,在用户不知情的情况下,给ap ...