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

【做题记录】多校-dp

A. Multitest Generator

考虑一个长为 \(m(m\ge 2)\) 的序列 \(b\),我们显然可以令 \(b_1=1,b_2=m-2\) 来使它变成 multitest。于是我们只需要判断能否使用 \(0\) 次或 \(1\) 次操作使其变成 multitest。

首先考虑 \(0\) 次,也就是它本身就是个 multitest。设 \(f_i\) 表示 \(i\sim n\) 这段后缀中有多少个 test,若不合法则 \(f_i=0\),可以 DP 出来。于是 \(i\) 的答案为 \(0\) 的充要条件即为 \(a_i=f_{i+1}\)

考虑 \(1\) 次。首先如果 \(f_{i+1}\ne0\),那么我们可以直接修改 \(a_i\) 来满足要求。而如果 \(f_{i+1}=0\),我们则希望通过一次修改将 \(i+1\sim n\) 这段后缀变成 \(a_i\) 个 test。考虑如果能变成 \(x\) 个 test,则一定可以变成 \(x-1\) 个 test,于是设 \(g_i\) 表示通过一次修改能使 \(i\sim n\) 最多变成多少个 test,则有:

\[g_i=\max(g_{i+a_i+1}+1,\max_{j=i+1}^{n}\{f_j\}+1) \]

也就是分别考虑是否修改 \(a_i\)。于是若 \(g_{i+1}\ge a_i\) 那么 \(i\) 的答案为 \(1\),否则答案为 \(2\)

Code
#include<bits/stdc++.h>
#define ll long long
#define il inline
using namespace std;
namespace asbt{
const int maxn=3e5+5;
int T,n,a[maxn],f[maxn],hp[maxn],g[maxn];
il void solve(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}f[n+1]=hp[n+1]=g[n+1]=0;for(int i=n;i;i--){f[i]=i+a[i]==n?1:i+a[i]>n||!f[i+a[i]+1]?0:f[i+a[i]+1]+1;hp[i]=max(hp[i+1],f[i]);g[i]=max(i+a[i]>n?0:g[i+a[i]+1]+1,hp[i+1]+1);}for(int i=1;i<n;i++){cout<<(a[i]==f[i+1]?0:f[i+1]||g[i+1]>=a[i]?1:2)<<' ';}cout<<'\n';
}
int main(){ios::sync_with_stdio(0),cin.tie(0);cin>>T;while(T--){solve();}return 0;
}
}
int main(){return asbt::main();}

B. Bitwise Slides

\(s_i\) 为前缀异或和数组。则对于每一时刻,都有三个数的异或和为 \(s_i\)。又因为有两个相等,所以必然有一个值为 \(s_i\)

\(dp_{i,j}\) 表示进行完第 \(i\) 次操作后那两个相等的数值为 \(j\) 的方案数。于是有转移:

  • \(j=s_{i-1}\)\(dp_{i,j}\gets 3dp_{i-1,j}\)

  • \(j=s_i\)\(\begin{cases}dp_{i,j}\gets dp_{i-1,j}\\dp_{i,s_{i-1}}\gets2dp_{i,j}\end{cases}\)

  • \(else\)\(dp_{i,j}\gets dp_{i-1,j}\)

发现每次 DP 值改变的只有 \(dp_{i,s_{i-1}}\)。用 map 维护即可。

Code
#include<bits/stdc++.h>
#define ll long long
#define il inline
#define pii pair<int,int>
#define fir first
#define sec second
using namespace std;
namespace asbt{
const int maxn=2e5+5,mod=1e9+7;
il int pls(int x,int y){return x+y<mod?x+y:x+y-mod;
}
il void add(int &x,int y){x=pls(x,y);
}
il int mns(int x,int y){return x<y?x-y+mod:x-y;
}
il void sub(int &x,int y){x=mns(x,y);
}
int T,n,a[maxn];
map<int,int> dp;
int main(){ios::sync_with_stdio(0),cin.tie(0);cin>>T;while(T--){cin>>n;dp.clear();dp[0]=1;for(int i=1,x;i<=n;i++){cin>>x;a[i]=a[i-1]^x;dp[a[i-1]]=(dp[a[i-1]]*3ll+dp[a[i]]*2ll)%mod;}int ans=0;for(pii i:dp){add(ans,i.sec);}cout<<ans<<'\n';}return 0;
}
}
int main(){return asbt::main();}
http://www.jsqmd.com/news/31606/

相关文章:

  • CSP-S 题解反思考场游记
  • 新学期每日总结(第19天)
  • 2025 年 11 月扑灭司林厂家推荐排行榜:专业杀虫剂,高效农药,卫生防疫用药,农业喷洒用药源头厂家精选!
  • 2025 年 11 月高压清洗机厂家推荐排行榜,超高压清洗机组,超高压水清洗设备,超高压清洗装置,工业超高压清洗设备公司精选
  • Centos7安装新版本python3.10
  • 2025 年 11 月高温轴承厂家权威推荐榜:耐高温轴承,真空高温轴承,窑炉高温轴承,BOPP链夹高温轴承,高温调心球轴承,高温关节轴承,高温滚针轴承,高温角接触轴承,高温圆柱滚子轴承公司推荐
  • 2025 年 11 月不干胶轮转机厂家推荐排行榜,商标不干胶轮转机,高速轮转印刷设备,高效稳定生产解决方案
  • swagger-typescript-api
  • HAL库DMA框架
  • 2025 年 11 月电线电缆厂家推荐排行榜,国标电线电缆,中缆电线电缆,工程电线电缆,环保电线电缆,家用电线电缆,工业电线电缆,光伏电线电缆,耐火电线电缆公司推荐
  • 2025 年 11 月清洗机厂家推荐排行榜,全自动/工业/零排放/双溶剂/碳氢/改性醇/真空/全密闭清洗机设备公司精选
  • 2025 年 11 月电线电缆厂家推荐排行榜,电力电缆,控制电缆,通信电缆,阻燃电缆,高压电缆公司推荐
  • 2025 年 11 月电磁阀线圈厂家推荐排行榜,电磁线圈,电磁铁线圈,小型电磁线圈,微型线圈,汽车电磁线圈,车用感应线圈,防爆线圈,防爆电磁线圈,直流电磁线圈,电磁线圈定制公司推荐
  • 2025 年 11 月潜水泵厂家推荐排行榜,新型潜水泵,节能潜水泵,低噪声潜水泵,超低压潜水泵,防爆潜水泵,高压潜水泵,防腐潜水泵公司推荐
  • 2025 年 11 月消杀药剂厂家推荐排行榜,扑灭司林/5%扑灭司林,苯甲酸苄酯/25%苯甲酸苄酯,15%胺氯菊百灭宁,疥螨,阴虱,科灭达公司推荐
  • 2025 年 11 月回信器厂家推荐排行榜,隔爆回信器,阀门回信器,防爆回信器,限位开关回信器,气动阀回信器,气动回信器公司推荐
  • 数据分析流程
  • 2025 年 11 月闭式冷却塔厂家推荐排行榜,工业闭式冷却塔,横流闭式冷却塔,逆流闭式冷却塔,复合流闭式冷却塔公司推荐
  • 2025 年 11 月锅炉厂家推荐排行榜,有机热载体锅炉,导热油锅炉,生物质锅炉,蒸汽锅炉,燃天然气锅炉,热水锅炉公司推荐
  • 每日反思(2025_11_03)
  • 2025 年 11 月高温轴承厂家推荐排行榜,耐高温轴承,不锈钢高温轴承,高速高温轴承,定制高温轴承公司精选
  • 2025 年 11 月清洗机厂家推荐排行榜,高压清洗机,工业清洗机,超声波清洗机,零部件清洗设备公司推荐
  • 2025 年 11 月电缆厂家推荐排行榜,国标电缆/国网南网入围电缆,铜芯/铝合金/光伏/新能源/工业/控制/拖链/橡胶/铠装电缆公司推荐
  • 9.22 未完成的情感投射
  • 20232306 2025-2026-1 《网络与系统攻防技术》实验四实验报告
  • 2025 年 11 月轮转印刷机厂家推荐排行榜,间歇式轮转印刷机,凸版/胶印/PS版间歇式轮转印刷机,专业印刷设备厂家推荐
  • 2025 年 11 月电磁铁厂家推荐排行榜,直流电磁铁,微型电磁铁,小型电磁铁,防爆电磁铁,比例电磁铁,非标电磁铁定制公司推荐
  • 2025 年 11 月柱塞泵厂家权威推荐榜:高压柱塞泵/液压柱塞泵/气动柱塞泵/电动柱塞泵/小型柱塞泵/超高压柱塞泵/往复式柱塞泵公司精选
  • 大文件上传公共库
  • 2025 年 11 月电磁阀厂家推荐排行榜,高压电磁阀,防爆电磁阀,比例电磁阀,汽车电磁阀,ABS电磁阀,ESP电磁阀,车用ESC电磁阀公司推荐