当前位置: 首页 > news >正文

P14510 夜里亦始终想念着你 miss 题解

验题人题解。

观察所有 \(\tt 0\) 的位置,容易发现 \(\forall i\),从左到右第 \(i\)\(\tt 0\) 所在位置的奇偶性是固定的。且任意一个这样的棋盘都能通过题面中的操作得到。

考察操作的可逆性,容易想到令每个 \(S\) 对应一个具有代表性的棋盘状态。

考虑构造这样的一个棋盘状态。在满足位置奇偶性正确的情况下,先令所有 \(\tt 0\) 尽量靠左。接下来从左到右考虑每个 \(\tt 0\) 的位置,若一个 \(\tt 0\) 所在的位置 \(i\in S\),则令这个 \(\tt 0\) 及其后面所有 \(\tt 0\) 都向右移动两格。若没有 \(\tt 0\) 被移出格子,则 \(S\) 合法。

容易使用线段树维护尽量靠左的情况下,最后一个 \(\tt 0\) 的位置,记为 \(p\)。记 \(\tt 0\) 的个数为 \(c\)。枚举最后一个 \(\tt 0\) 向右移动的次数 \(i\),容易得到答案:

\[\sum_{i=0}^{\lfloor\frac{n-p}2\rfloor}2^{n-c-i}{c+i-1\choose c-1} \]

\(m=\lfloor\frac{n-p}2\rfloor\),则答案为:

\[\begin{aligned}&\sum_{i=0}^{m}2^{n-c-i}{c+i-1\choose c-1}\\ =&2^{n-c-m-1}\sum_{i=0}^{m}2^{m-i+1}{c-1+i\choose c-1}\\ =&2^{n-c-m-1}\sum_{i=c}^{m+c}{m+c\choose i}\\ =&2^{n-c-m}\left(2^{m+c}-\sum_{i=0}^{c-1}{m+c\choose i}\right)\\ =&2^{n}-2^{n-c-m}\sum_{i=0}^{c-1}{m+c\choose i}\\\end{aligned} \]

问题转化为组合数下标前缀和,容易想到莫队。由于操作是单点修改,\(c\)\(m\) 的变化量都是 \(\mathcal O(1)\) 级别的,不用莫队,暴力求变化量即可。时间复杂度 \(\mathcal O(q\log n)\)

参考代码:

#include<bits/stdc++.h>
#define ll long long
#define mxn 500003
#define md 1000000007
#define pb push_back
#define mkp make_pair
#define ld long double
#define umap unordered_map
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define rept(i,a,b) for(int i=a;i<b;++i)
#define drep(i,a,b) for(int i=a;i>=b;--i)
#define pq priority_queue
using namespace std;
ll power(ll x,int y){ll ans=1;for(;y;y>>=1){if(y&1)ans=ans*x%md;x=x*x%md;}return ans;
}
struct node{int l,r,x;
}t[mxn<<2];
struct asker{int a,b,i;
}d[mxn];
int n,q,c,tt,now;
char s[mxn];
ll f[mxn<<1],f1[mxn<<1],fac[mxn<<1],ifac[mxn<<1],ans[mxn],s1[mxn],s2[mxn];
node operator+(node x,node y){return {min(x.l,y.l),max(x.r,y.r),x.x+y.x+(x.r&&y.l<=n?((x.r^y.l)&1?1:2):0)};
}
void build(int p,int l,int r){if(l==r){if(s[l]=='0')t[p]={l,l,0};else t[p]={n+1,0,0};return;}int mid=(l+r)>>1;build(p<<1,l,mid);build(p<<1|1,mid+1,r);t[p]=t[p<<1]+t[p<<1|1];
}
void upd(int p,int x,int l,int r){if(l==r){if(s[l]=='0')t[p]={l,l,0};else t[p]={n+1,0,0};return;}int mid=(l+r)>>1;if(x<=mid)upd(p<<1,x,l,mid);else upd(p<<1|1,x,mid+1,r);t[p]=t[p<<1]+t[p<<1|1];
}
void init(int n){f[0]=f1[0]=1;rep(i,1,n)f[i]=f[i-1]*2%md,f1[i]=f1[i-1]*500000004%md;fac[0]=1;rep(i,1,n)fac[i]=fac[i-1]*i%md;ifac[n]=power(fac[n],md-2);drep(i,n,1)ifac[i-1]=ifac[i]*i%md;
}
inline ll C(int n,int m){if(n<m||m<0)return 0;return fac[n]*ifac[m]%md*ifac[n-m]%md;
}
void get(int m,int c){s2[now]=f[n]%md;d[++tt]={m+c+1,c,now};s1[now]=(md-f1[m+c])*f[n-1]%md;
}
void solve(){if(!c){ans[now]=f[n];return;}int p=(t[1].l&1?1:2)+t[1].x;get((n-p)>>1,c-1);
}
signed main(){scanf("%d%d%s",&n,&q,s+1);rep(i,1,n)if(s[i]=='0')c++;init(n<<1);build(1,1,n);rep(i,0,q)s1[i]=1,s2[i]=0;now=0;solve();int x;rep(i,1,q){scanf("%d",&x);if(s[x]=='1')c++;else c--;s[x]^=1;upd(1,x,1,n);now=i;solve();}int l=0,r=0;ll vl=1;rep(i,1,tt){while(l<d[i].a)vl=(vl*2-C(l,r))%md,l++;while(r>d[i].b)vl=(vl-C(l,r))%md,r--;while(l>d[i].a)vl=(vl+C(l-1,r))*500000004%md,l--;while(r<d[i].b)vl=(vl+C(l,r+1))%md,r++;ans[d[i].i]=vl;}rep(i,0,q){cout<<((ans[i]*s1[i]+s2[i])%md+md)%md<<'\n';}return 0;
}
http://www.rkmt.cn/news/53372.html

相关文章:

  • 解码死锁的产生与解决
  • P9846 [ICPC 2021 Nanjing R] Paimons Tree
  • linux audio
  • 透视数字世界:可观测平台如何破解企业智能运维困局
  • 2025 履带厂家最新推荐排行榜:聚焦高性能钢制履带与履带板,权威测评优选榜单履带板/履带钢/钢制履带/钢履带/履带型钢公司推荐
  • linux at 脚本
  • 什么是可观测性?数字化转型时代的企业“透视眼”
  • 深入解析:FPGA开发入门:深入理解计数器——数字逻辑的时序基石
  • 2025年佛山二手房拍卖公司专业推荐指南,佛山二手房拍卖/佛山房屋拍卖全流程服务
  • 2 小时,我搭了一套工单实时跟进系统,让每个工序进度一目了然!
  • linux arp缓存
  • CCS新能源船舶智能监控终端
  • 每日 Emacs Tip:winner-mode —— 窗口布局的“撤销/重做”神器
  • 掌握Ansible:自动化运维全攻略 - 实践
  • Notes about interesting concepts in Linear Algebra (2025 Fall)
  • 2025年闭口塑料罐批发厂家权威推荐榜单:塑料闭口罐/30L闭口罐/5L闭口罐源头厂家精选
  • 2025年成套高低压柜实力厂家权威推荐榜单:高低压成套配电柜/高低压柜厂家成套/高低压开关柜成套源头厂家精选
  • 2025年广东治疗焦虑医院服务权威推荐榜单:广州治疗心理医院/广东治疗癫痫医院/广州心理医院服务精选
  • 2025 最新搅拌机源头厂家推荐排行榜:聚焦纳米级脱泡技术,权威测评脱泡搅拌机/真空搅拌机/锡膏搅拌机/行星式搅拌机/行星式重力搅拌机/离心脱泡搅拌机公司推荐
  • 2025年分子防潮封堵剂制造企业权威推荐榜单:福州高分子防潮封堵剂/南京高分子防潮封堵剂/汨罗高分子防潮封堵剂源头厂家精选
  • 2025年软床企业推荐:优秀企业榜单
  • 2025年软床公司推荐排行榜前十强
  • 实验室氢气传感器选型陷阱:为什么90%的人都选错了
  • 2025 最新推荐分子蒸馏设备厂家权威排行榜,国际协会测评认证 专利技术与进口级品质双优品牌实测推荐工业化/多级/不锈钢/多功能分子蒸馏设备公司推荐
  • 完整教程:PyQt5 入门教程(7万字详解)
  • 2025年山东艺考生文化课机构实力榜:高三艺考生文化课、全日制艺考生文化课、三家特色机构与标杆校的差异化突围​
  • AAAI2025!北理工团队提出FBRT-YOLO:面向实时航拍图像更快更好的目标检测 |计算机视觉|目标检测
  • 20232423 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • (二)文件下载压缩打包:下载(wget)、压缩(gzip)、解压(gunzip)、打包(tar)
  • 前端打包的一些注意事项