当前位置: 首页 > 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.rkmt.cn/news/1404624.html

相关文章:

  • Simple Runtime Window Editor:如何轻松调整游戏窗口尺寸的终极指南
  • WebAssembly入门——从C++到.wasm的编译与集成实战
  • 精准匹配:为RStudio选择兼容的R语言版本
  • 2026年最新保康县黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 3个步骤快速上手:用代码生成专业UML图的在线编辑器
  • 别再手动建模了!CST Studio Suite里这个‘一键加厚’功能,让Sheet秒变3D模型
  • 别再手动改代码了!用Modbus指令在线修改STM32波特率(附HAL库/标准库两种方法)
  • 机器学习算法系列(四)- 岭回归算法(Ridge Regression):从多重共线性到模型稳定
  • 2026年最新红安县黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • LuaJIT字节码逆向分析:LJD反编译工具全面指南
  • 侧信道攻击实战:基于四阶矩预处理与改进策略的3DES密钥恢复
  • 企业级人力资源管理系统部署指南:5种专业方案助力高效实施
  • 基于深度学习与软体机器人技术的仿人抓取系统设计与实现
  • AI应用开发中如何利用Taotoken实现模型的热切换与降级
  • 2026年最新洪湖市黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 2026年邯郸工程机械设备租赁服务商实录:邯郸武安市瑞辉机械设备租赁有限公司 - 海棠依旧大
  • 终极AI图像高清化指南:用Real-ESRGAN-GUI让模糊图片焕发新生
  • Keil开发工具许可证错误1773解析与解决方案
  • 模拟IC设计中的‘反馈思维’:从二级运放的单位增益负反馈,看如何跳出局部优化陷阱
  • 如何用智能去重技术提升视频硬字幕提取精度?3大核心算法解析
  • 别再死记公式了!手把手教你从GBW和相位裕度反推二级运放设计参数
  • 2026年最新掇刀区黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • Boss-Key终极指南:三分钟掌握Windows窗口隐藏隐私保护技巧
  • 揭秘chfsgui:3分钟让你从文件共享小白变高手![特殊字符]
  • Python命令行工具如何突破百度网盘下载限速:pan-baidu-download实战指南
  • 2026年最新临翔区黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 不止VSIN!Cadence PSpice仿真库SOURCE.OLB里还有哪些宝藏信号源?
  • 数字串行NTT加速器设计:提升全同态加密性能
  • 2026年最新禄丰市黄金回收白银回收铂金回收靠谱店铺权威排行榜TOP5:纯金+金条+银条+钯金 门店地址联系方式推荐 - 莘州文化
  • 双基地MIMO ISAC波束成形设计:原理、算法与鲁棒性实践