P5641 【CSGRound2】开拓者的卓识

P5641 【CSGRound2】开拓者的卓识P5641 CSGRound2 开拓者的卓识 link 解题思路我们考虑每个 aia iai 对 sumk 1 r sum k 1 r sumk 1 r 的贡献 aia iai 有贡献当且仅当 i lk 1 rk 1 lk 2 rk 2 l0 r0 i in l k 1 r k 1 subseteq l k 2 r k 2 subseteq cdots subseteq l 0 r 0 i lk 1 rk 1 lk 2 rk 2 l

P5641 【CSGRound2】开拓者的卓识

link

解题思路

我们考虑每个 a i a_i ai s u m k ( 1 , r ) sum_k(1,r) sumk(1,r) 的贡献。

a i a_i ai 有贡献当且仅当
i ∈ [ l k − 1 , r k − 1 ] ⊆ [ l k − 2 , r k − 2 ] ⊆ ⋯ ⊆ [ l 0 , r 0 ] i\in[l_{k-1},r_{k-1}]\subseteq[l_{k-2},r_{k-2}]\subseteq\cdots\subseteq [l_0,r_0] i[lk1,rk1][lk2,rk2][l0,r0]
其中 l 0 = 1 , r 0 = r l_0=1,r_0=r l0=1,r0=r




#include 
     #include 
     #include 
     using namespace std; typedef long long ll; char In[1 << 20], *ss = In, *tt = In; #define getchar() (ss == tt && (tt = (ss = In) + fread(In, 1, 1 << 20, stdin), ss == tt) ? EOF : *ss++) ll read() { 
    ll x = 0, f = 1; char ch = getchar(); for(; ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1; for(; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + int(ch - '0'); return x * f; } #define clr(f, s, t) memset(f + (s), 0x00, sizeof(int) * ((t) - (s))) #define cpy(f, g, n) memcpy(g, f, sizeof(int) * (n)) const int MAXN = (1 << 18) + 5, P = , G = 3, invG = ; int pls(int a, int b) { 
   return a + b < P ? a + b : a + b - P;} int mns(int a, int b) { 
   return a < b ? a + P - b : a - b;} int mul(int a, int b) { 
   return 1ll * a * b % P;} int qpow(int a, int n) { 
   int ret = 1; for(; n; n >>= 1, a = mul(a, a)) if(n & 1) ret = mul(ret, a); return ret;} int inv[MAXN], _g[2][MAXN], tr[MAXN], tf; void init() { 
    inv[1] = 1; for(int i = 2; i < MAXN; i++) inv[i] = mul(P - P / i, inv[P % i]); for(int l = 2; l < MAXN; l <<= 1) { 
    _g[1][l] = qpow(G, (P-1) / l); _g[0][l] = qpow(invG, (P-1) / l); } } int getlim(int n) { 
    int lim = 1; for(; lim < n + n; lim <<= 1); return lim; } void tpre(int lim) { 
    if(tf == lim) return; tf = lim; for(int i = 0; i < lim; i++) tr[i] = (tr[i >> 1] >> 1) | ((i & 1) ? (lim >> 1) : 0); } void NTT(int* f, int lim, int fl) { 
    tpre(lim); for(int i = 0; i < lim; i++) if(i < tr[i]) swap(f[i], f[tr[i]]); for(int l = 2, k = 1; l <= lim; l <<= 1, k <<= 1) for(int i = 0; i < lim; i += l) for(int j = i, gn = 1; j < i+k; j++, gn = mul(gn, _g[fl][l])) { 
    int tt = mul(f[j+k], gn); f[j+k] = mns(f[j], tt); f[j] = pls(f[j], tt); } if(!fl) for(int i = 0; i < lim; i++) f[i] = mul(f[i], inv[lim]); } void Mul(int* f, int* g, int* h, int n) { 
    static int a[MAXN], b[MAXN]; int lim = getlim(n); cpy(f, a, n); clr(a, n, lim); cpy(g, b, n); clr(b, n, lim); NTT(a, lim, 1); NTT(b, lim, 1); for(int i = 0; i < lim; i++) h[i] = mul(a[i], b[i]); NTT(h, lim, 0); clr(h, n, lim); } int n, k, f[MAXN], g[MAXN], h[MAXN]; int main() { 
    init(); n = read(); k = read(); g[0] = 1; for(int i = 1; i < n; i++) g[i] = mul(g[i-1], mul(i+k-1, inv[i])); for(int i = 0; i < n; i++) f[i] = mul(read(), g[i]); Mul(f, g, h, n); for(int i = 0; i < n; i++) printf("%d ", h[i]); return 0; } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200290.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午11:08
下一篇 2026年3月20日 上午11:09


相关推荐

  • oracle数据库学习总结在(一)

    oracle数据库学习总结在(一)对oracle已经学习三个多月了,看了不少东西,oracle数据库很复杂,光概念就很多,为了对oracle有更好的认识我打算把我这段时间的学习做下总结,为结下来的学习打下好的基础。  总结目录:1.设计数据库,设计出结构优化的数据库,可扩展性好。2.数据库的备份和恢复,权限的分配3.优化数据库,数据库性能调优。4.数据库开发,存储过程,触发器,函数等后端数据库程序,给系

    2022年10月21日
    8
  • OJ平台各个简写的含义

    OJ平台各个简写的含义简写字符的含义简写全称中文称谓ACAccepted通过WAWrongAnswer答案错误TLETimeLimitExceed超时OLEOutputLimitExceed超出输出限制MLEMemoryLimitExceed超出内存RERuntimeError运行时错误PEPresentationError格式错误CECompileError无法编译…

    2022年6月22日
    31
  • 【小白的java成长系列】——面向对象基础

    【小白的java成长系列】——面向对象基础

    2021年11月13日
    41
  • 配置远程连接MySQL数据库

    原创作品,出自“深蓝的blog”博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任。深蓝的blog: 使用mysql远程连接软件(MySQL-Front),远程连接报错: [root@master~]#mysql-uroot@localhostWelcometotheMySQLmonitor. Commandsendwith;o

    2022年4月11日
    41
  • fastCGI详解「建议收藏」

    fastCGI详解「建议收藏」http{#缓存路径fastcgi_cache_path/usr/local/nginx/fastcgi_cachelevels=1:2keys_zone=licache:10minact

    2022年7月4日
    26
  • 中标麒麟/NeoKylin U盘安装系统「建议收藏」

    中标麒麟/NeoKylin U盘安装系统「建议收藏」这里以NeoKylin6为例,其他版本与此相类似大同小异。但是下载指定版本的镜像时要注意配合该版本的软件包是否充足,不然就会遇到安装好系统很多软件无法安装或更新的情况。1.官方下载地址:http://download.cs2c.com.cn/neokylin/desktop/releases/2.第二步,在上个地址中找你想要下载的版本,注意前面说的先检查下资源,以我想下载的版本6.0为…

    2022年8月10日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号