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

P9129 [USACO23FEB] Piling Papers G

先考虑 \(1\sim n\) 的时候怎么做,差分一下,只需要求 \(1\sim p\) 就行。先考虑朴素的时候,设 \(f_{i,j,k=0/1/2}\) 表示对于前 \(i\) 个纸片,已经补了 \(j\) 个位置了,当前的数分别小于,等于,大于 \(p\) 数字。

对于题目要求的前插后插很难用这个状态去实现,于是把 \(j\) 给改一下,表示为 \(f_{i,l,r,k=0/1/2}\) 已经补完了 \(l\sim r\) 位,其他的定义跟朴素一样,那这样就很好求出来了。

再考虑一下 \(ql\sim qr\),提前预处理出来 \(Ans_{ql,qr}\),把状态 \(i\) 改掉:

\[Ans_{ql,qr}=\sum\limits_{i=1}^m f_{i,m,0/1}+[i\neq1]f_{i,m,2} \]

时间复杂度为:\(O(n^2\lg^2 p+q)\)

::::info[\(\mathscr{Code:}\)]

#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdio>
#include<cstring>#define ll long long
// #define int ll
#define pii pair<int,int>
#define ull unsigned long long
using namespace std;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
char buf[1<<21], *p1=buf,*p2=buf;
#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#define getchar() gc()
ll rd(){ll s=0;char ch=getchar();bool fu=0;while(ch<'0'||ch>'9')ch=='-'?fu=1:0,ch=getchar();while(ch>='0'&&ch<='9')s=(s<<1)+(s<<3)+(ch^48),ch=getchar();return fu?-s:s;
}const int N=310;
int n,a[N],cur[N],cnt;
ll ansA[N][N],A,B,ansB[N][N],f[N][N][3];void getnum(ll a){while(a){cur[++cnt]=a%10;a/=10;}reverse(cur+1,cur+cnt+1);
}static inline ll add(ll a,ll b){return a+b>=mod?a+b-mod:a+b;}
static inline void upd(ll &a,ll b){(a+=b)>=mod?a-=mod:0;}
static inline int calc(ll a,ll b){if(a<b)return 0;if(a==b)return 1;return 2;
}void init(){getnum(A-1);for(int i=1;i<=n;++i){memset(f,0,sizeof(f));for(int j=i;j<=n;++j){for(int l=1;l<=cnt;++l)for(int r=cnt;r>l;--r){if(a[j]>cur[l]){upd(f[l][r][2],f[l+1][r][0]);upd(f[l][r][2],f[l+1][r][1]);upd(f[l][r][2],f[l+1][r][2]);}else if(a[j]==cur[l]){upd(f[l][r][0],f[l+1][r][0]);upd(f[l][r][1],f[l+1][r][1]);upd(f[l][r][2],f[l+1][r][2]);}else{upd(f[l][r][0],f[l+1][r][0]);upd(f[l][r][0],f[l+1][r][1]);upd(f[l][r][0],f[l+1][r][2]);}upd(f[l][r][0],f[l][r-1][0]);upd(f[l][r][calc(a[j],cur[r])],f[l][r-1][1]);upd(f[l][r][2],f[l][r-1][2]);}for(int k=1;k<=cnt;++k)upd(f[k][k][calc(a[j],cur[k])],2);for(int k=1;k<=cnt;++k){upd(ansA[i][j],f[k][cnt][0]);upd(ansA[i][j],f[k][cnt][1]);if(k!=1)upd(ansA[i][j],f[k][cnt][2]);}}}cnt=0;getnum(B);for(int i=1;i<=n;++i){memset(f,0,sizeof(f));for(int j=i;j<=n;++j){for(int l=1;l<=cnt;++l)for(int r=cnt;r>l;--r){if(a[j]>cur[l]){upd(f[l][r][2],f[l+1][r][0]);upd(f[l][r][2],f[l+1][r][1]);upd(f[l][r][2],f[l+1][r][2]);}else if(a[j]==cur[l]){upd(f[l][r][0],f[l+1][r][0]);upd(f[l][r][1],f[l+1][r][1]);upd(f[l][r][2],f[l+1][r][2]);}else{upd(f[l][r][0],f[l+1][r][0]);upd(f[l][r][0],f[l+1][r][1]);upd(f[l][r][0],f[l+1][r][2]);}upd(f[l][r][0],f[l][r-1][0]);upd(f[l][r][calc(a[j],cur[r])],f[l][r-1][1]);upd(f[l][r][2],f[l][r-1][2]);}for(int k=1;k<=cnt;++k)upd(f[k][k][calc(a[j],cur[k])],2);for(int k=1;k<=cnt;++k){upd(ansB[i][j],f[k][cnt][0]);upd(ansB[i][j],f[k][cnt][1]);if(k!=1)upd(ansB[i][j],f[k][cnt][2]);}}}
}inline void Solve(){n=rd(),A=rd(),B=rd();for(int i=1;i<=n;++i)a[i]=rd();init();int q=rd();while(q--){int ql=rd(),qr=rd();
//		cout<<"==> "<<ansA[ql][qr]<<" "<<ansB[ql][qr]<<"\n";printf("%lld\n",(ansB[ql][qr]+mod-ansA[ql][qr])%mod);}
}signed main(){// freopen("input.in","r",stdin);// ios::sync_with_stdio(false);// cin.tie(0), cout.tie(0);int T=1;while(T--)Solve();return 0;
}

::::

http://www.jsqmd.com/news/897598/

相关文章:

  • CPGC引擎:现代SoC内置自测试(BIST)的融合架构与工程实践
  • Simple Runtime Window Editor:如何轻松调整游戏窗口尺寸的终极指南
  • SQL UNION和UNION ALL性能差异与正确选型指南
  • 2026年最新汉川市黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 2026年最新保康县黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 学术写作提质新思路:paperxie 一站式毕业论文智能撰写实操指南
  • 精准匹配:为RStudio选择兼容的R语言版本
  • 2026年河南空压机节能改造与维保服务商深度选型指南 - 精选优质企业推荐官
  • 湖北膜结构安装技术要点解析及本地合规厂家梳理 - 奔跑123
  • 别再手动建模了!CST Studio Suite里这个‘一键加厚’功能,让Sheet秒变3D模型
  • 2026滨江名表回收标杆商家:首选滨江名表回收的TOP 1,让你的闲置腕表卖出天花板价 - 人间半盏茶
  • 2026年最新大悟县黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 机器学习算法系列(四)- 岭回归算法(Ridge Regression):从多重共线性到模型稳定
  • 2026年最新凤庆县黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 从失败到完美:3D打印螺纹设计的Fusion 360革命
  • VLSI测试原理如何赋能硬件安全:逻辑加密、分割制造等DfTr技术解析
  • 2026年最新红安县黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • LuaJIT字节码逆向分析:LJD反编译工具全面指南
  • 混合神经形态计算框架:融合双模记忆与自适应突触可塑性
  • 6G动态物联网新架构:普适多级协同ISAC如何破解通信感知融合难题
  • 2026年最新耿马傣族佤族自治县黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 2026年最新东宝区黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • LibreCAD:当开源精神遇见专业二维设计
  • 2026年邯郸工程机械设备租赁服务商实录:邯郸武安市瑞辉机械设备租赁有限公司 - 海棠依旧大
  • 2026年最新洪湖市黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • Windows Defender 深度移除技术解析与性能优化实战指南
  • 2026年6月更新:劳力士腕表全国维修保养售后服务指南(附40+城市网点地址与400-106-3365热线) - 速递信息
  • 基于INLA的块聚合空间模型:解决多尺度数据融合与空间分解预测
  • 深度解析开源CAD库:为什么LibreDWG成为DWG文件处理的技术首选
  • 2026年最新掇刀区黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化