【noi.ac-CSP-S全国模拟赛第三场】#705. mmt
给定数组a[],b[]
求$$c_i=\sum_{j=1}^{i} a_{\left \lfloor \frac{n}{j} \right \rfloor}·b_{i \bmod j}$$
大概就是对于每一个n求上面那个式子,显然数论分块
乱搞有$$c_n=\sum_{i=1}^{n} a_{\left \lfloor \frac{n}{i} \right \rfloor}·b_{n-\lfloor \frac{n}{i} \rfloor * i}$$
当在同一块内,也就是$\lfloor \frac{n}{i} \rfloor$相等的时候,我们令$t=\lfloor \frac{n}{i} \rfloor$,左边界为l,右边界为r有:
$$c_n=a_t*\sum_{i=l}^{r}b_{n-t*i}$$
看了其他巨佬的做法了之后知道了要对b[]按位置的差值做一个前缀和
所以令f[i][j]表示位置差为j,当前位置为i的前缀和
然而空间开不下,所以j太大的时候暴力计算就好了(j大的时候显然减个几下就没了)
#include<bits/stdc++.h>
#define int long long
#define writeln(x) write(x),puts("")
#define writep(x) write(x),putchar(' ')
using namespace std;
inline int read(){
int ans=,f=;char chr=getchar();
while(!isdigit(chr)){if(chr=='-') f=-;chr=getchar();}
while(isdigit(chr)){ans=(ans<<)+(ans<<)+chr-;chr=getchar();}
return ans*f;
}void write(int x){
if(x<) putchar('-'),x=-x;
if(x>) write(x/);
putchar(x%+'');
}const int M = 1e5+,mod = ;
int a[M],b[M],n,m,s[M][];
inline int calc(int n,int x,int l,int r){
int ans=;
if(n/x<=){
if(l-n/x<) ans=s[r][n/x];
else ans=s[r][n/x]-s[l-n/x][n/x];
ans=(ans%mod+mod)%mod;
}else{
int y=n/(n/x);
for(int p=x;p<=y;p++)ans=(ans+b[n-p*(n/x)])%mod;
}return ans;
}
inline int Solve(int n){
int ans=;
for(int i=,j,t;i<=n;i=j+){
if(n/i==)j=n;
else j=n/(n/i);
t=a[n/i]*calc(n,i,n-j*(n/i),n-i*(n/i))%mod;
ans=(ans+t)%mod;
}return ans;
}
signed main(){
n=read();
for(int i=;i<=n;i++)a[i]=read();
for(int i=;i<n;i++)b[i]=read();
for(int i=;i<n;i++)
for(int j=;j<=;j++)
if(i-j>=)s[i][j]=(s[i-j][j]+b[i])%mod;
else s[i][j]=b[i];
for(int i=;i<=n;i++)printf("%lld\n",Solve(i));
return ;
}
【noi.ac-CSP-S全国模拟赛第三场】#705. mmt的更多相关文章
- CSP-S全国模拟赛第三场 【nan死了】
mmt 居然第一步膜化乘除 都没看出来,没救了... 大概是贡献前缀和优化的做法 巨兔式讲解:大家都学会了么? 咱发现有大量的 (i/j , i%j ) 同时 对很多 c 产生了贡献,咱可以去优化这一 ...
- NOI.AC NOIP模拟赛 第三场 补记
NOI.AC NOIP模拟赛 第三场 补记 列队 题目大意: 给定一个\(n\times m(n,m\le1000)\)的矩阵,每个格子上有一个数\(w_{i,j}\).保证\(w_{i,j}\)互不 ...
- [NOI.AC 2018NOIP模拟赛 第三场 ] 染色 解题报告 (DP)
题目链接:http://noi.ac/contest/12/problem/37 题目: 小W收到了一张纸带,纸带上有 n个位置.现在他想把这个纸带染色,他一共有 m 种颜色,每个位置都可以染任意颜色 ...
- CSP-S全国模拟赛第四场 【nan?】
本来想抢三题的 rk1 ?[无耻 最后发现 T2 好像还是慢了些,只搞了个 rk2 子段与子段 第一题随便分析一下,发现一段区间中某个元素的贡献次数就是 \((x+1)·(y+1)\) x 是他左边的 ...
- [NOI.AC]NOI2019省选模拟赛 第二场
传送门 Solution A. 一共有\(T\)组数据 每次询问你\([l,r]\)中有多少个数能被他的所有数位整除(如果数位中含有\(0\)忽略掉) 数位dp,咕咕咕 B. 题面略 考虑一个个只有两 ...
- NOI2019省选模拟赛 第三场
传送门 明明没参加过却因为点进去结果狂掉\(rating\)-- \(A\) 集合 如果我们记 \[f_k=\sum_{i=1}^nT^i{n-i\choose k}\] 那么答案显然就是\(f_{k ...
- NOI.AC NOIP模拟赛 第五场 游记
NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...
- NOI.AC NOIP模拟赛 第六场 游记
NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...
- NOI.AC NOIP模拟赛 第四场 补记
NOI.AC NOIP模拟赛 第四场 补记 子图 题目大意: 一张\(n(n\le5\times10^5)\)个点,\(m(m\le5\times10^5)\)条边的无向图.删去第\(i\)条边需要\ ...
随机推荐
- 使用shell脚本查看文件类型
显示文件类型 #如查看 /etc 目录 [root@localhost ~]# sh test.sh /etc /etc/ [目录文件] #如查看 /etc 目录下所有文件 [root@localho ...
- 百度网盘不限速下载PanDownload网页版+IDM
1.安装配置IDM 下载链接:链接:https://pan.baidu.com/s/13P4ae-IPgi5Y13CGEZgmlg 提取码:do44 安装后在浏览器(推荐chrome或Firefox) ...
- window 对象常见的事件
1.页面加载事件 方式1:window.onload = function(){ } window.addEventListener('load',function(){ }) window.onlo ...
- unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL - 用于本地内部进程通讯的套接字。
SYNOPSIS(总览) #include <sys/socket.h> #include <sys/un.h> unix_socket = socket(PF_UNIX, t ...
- uname - 显示输出系统信息
总览 uname [OPTION]... 描述 显示相应的系统信息. 没有指定选项时,同 -s. -a, --all 显示所有的信息 -m, --machine 显示机器(硬件)类型 -n, --no ...
- eclipse打包jar及第三方jar包一起导出(生成SDK)
一.前言: 因公司需求,需要将某个工具类供外部使用,所以需要生成jar文件.但是jar内还包含了第三方的jar,普通的打包方式无法将lib下的第三方jar包提取. 这将会导致工具jar无法运行,或Ex ...
- API详解
- windows 开启管理员权限
在使用cmd为windows系统的电脑添加一条路由的时候,发现提示我权限不足,经过我的查找,需要在 我的电脑 右键 管理 本地用户管理 打开用户一栏 找到管理员账户 右键打开属 ...
- 本地项目上传github
(1)github上面新建仓库 (2) 1. git init //初始化仓库 2. git add .(文件name) //添加文件到本地仓库 3. git commit -m "firs ...
- map方法的简单使用
假设有一个数组a,将a中的数值以2倍的形式放到b数组中 <!DOCTYPE html> <html lang="en"> <head> < ...