牛客网暑期ACM多校训练营 第九场
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
*/
#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 ;
}
/* */
牛客网暑期ACM多校训练营 第九场的更多相关文章
- 牛客网暑期ACM多校训练营(第四场):A Ternary String(欧拉降幂)
链接:牛客网暑期ACM多校训练营(第四场):A Ternary String 题意:给出一段数列 s,只包含 0.1.2 三种数.每秒在每个 2 后面会插入一个 1 ,每个 1 后面会插入一个 0,之 ...
- 牛客网暑期ACM多校训练营(第五场):F - take
链接:牛客网暑期ACM多校训练营(第五场):F - take 题意: Kanade有n个盒子,第i个盒子有p [i]概率有一个d [i]大小的钻石. 起初,Kanade有一颗0号钻石.她将从第1到第n ...
- 牛客网 暑期ACM多校训练营(第二场)A.run-动态规划 or 递推?
牛客网暑期ACM多校训练营(第二场) 水博客. A.run 题意就是一个人一秒可以走1步或者跑K步,不能连续跑2秒,他从0开始移动,移动到[L,R]的某一点就可以结束.问一共有多少种移动的方式. 个人 ...
- 牛客网 暑期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 ,问你 ...
- 牛客网暑期ACM多校训练营(第三场)H Diff-prime Pairs (贡献)
牛客网暑期ACM多校训练营(第三场)H Diff-prime Pairs (贡献) 链接:https://ac.nowcoder.com/acm/contest/141/H来源:牛客网 Eddy ha ...
- 2018牛客网暑期ACM多校训练营(第二场)I- car ( 思维)
2018牛客网暑期ACM多校训练营(第二场)I- car 链接:https://ac.nowcoder.com/acm/contest/140/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 ...
- 牛客网暑期ACM多校训练营(第七场)Bit Compression
链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 题目描述 A binary string s of length N = 2n is give ...
- 牛客网暑期ACM多校训练营(第一场) - J Different Integers(线段数组or莫队)
链接:https://www.nowcoder.com/acm/contest/139/J来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048 ...
- 牛客网暑期ACM多校训练营(第九场) A题 FWT
链接:https://www.nowcoder.com/acm/contest/147/A来源:牛客网 Niuniu has recently learned how to use Gaussian ...
随机推荐
- python学习笔记(3)--turtle简单绘制
参考:大学生mooc 北京理工大学的python程序与设计课程 蟒蛇绘制代码如下: #pythonDraw.py import turtle turtle.setup(650,350,200,200) ...
- SpringBoot之通过yaml绑定注入数据
依赖包: <!--配置文件注解提示包--> <dependency> <groupId>org.springframework.boot</groupId&g ...
- rmse均方根误差
rmse=sqrt(sum((w-r).^2)/length(w))
- Nginx 简单的cpu配置
配置指定CPU Nginx建议进程数和CPU数量一致,这样每个CPU都有自己独立的缓存 worker_processes 4; worker_cpu_affinity 1000 0100 0010 0 ...
- 【C/C++】龙格库塔+亚当姆斯求解数值微分初值问题
/* 解数值微分初值问题: 龙格-库塔法求前k个初值 + 亚当姆斯法 */ #include<bits/stdc++.h> using namespace std; double f(do ...
- Spring 使用介绍(十一)—— Spring事件
一.简介 spring事件是观察者设计模式的实现,主要有三个元素: 事件 spring事件由ApplicationEvent定义 监听者 由ApplicationListener定义 发布者 由App ...
- python+unnitest时运行后不执行main函数里面的内容
1.使用工具pycharm运行unnitest程序遇到的问题 1) 问题:运行后无法生成报告:经print()发现未执行main函数里的内容 2) 原因:使用unnitest测试框架,pycharm运 ...
- Iroha and a Grid AtCoder - 1974(思维水题)
就是一个组合数水题 偷个图 去掉阴影部分 把整个图看成上下两个矩形 对于上面的矩形求出起点到每个绿点的方案 对于下面的矩形 求出每个绿点到终点的方案 上下两个绿点的方案相乘后相加 就是了 想想为什么 ...
- 【CF809E】Surprise me! 树形DP 虚树 数学
题目大意 给你一棵\(n\)个点的树,每个点有权值\(a_i\),\(a\)为一个排列,求 \[ \frac{1}{n(n-1)}\sum_{i=1}^n\sum_{j=1}^n \varphi(a_ ...
- bzoj 2054: 疯狂的馒头(线段树||并查集)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2054 线段树写法: 点的颜色只取决于最后一次染的颜色,所以我们可以倒着维护,如果当前区间之前 ...