Hetao P1391 操作序列 题解 [ 绿 ] [ 二维线性 dp ]
操作序列:简单的二维 dp。
观察
我们每次操作可以让 \(x\) 变为 \(2x-1\),或者当 \(x\) 为奇数时让 \(x\) 变为 \(\frac{x+1}{2}\)。
显然,执行第一种操作,会使 \(x\) 变成奇数。
那一旦我们连续执行两次操作,\(x\) 就会变为:
\]
也就是说,当 \(x\) 为奇数时,这两个操作互逆。当 \(x\) 为偶数时,无法操作。
因此,在任何时候,第一次操作的次数都要大于等于第二次操作的次数。这像极了括号匹配,任何时候左括号必须大于右括号。
其中左括号是操作 \(1\),右括号是操作 \(2\)。
dp 设计
于是我们可以先在 \(x\) 为奇数时把 \(x\) 不断执行第二种操作直到变成偶数,相当于往栈里丢了几个左括号。
然后接下来我们对每次操作考虑,定义 \(dp_{i,j}\) 表示考虑前 \(i\) 位,目前栈里有 \(j\) 个左括号的方案数。
然后很显然的转移:
\]
其中 \(s\) 表示一开始加进栈里面的左括号个数。
时间复杂度 \(O(n^2)\),可过。
其实这题可以用滚动数组优化,但是不用滚动数组仍然可以过。因为我懒,就不写滚动数组了。
特判
注意到当最后 \(x\) 能变成 \(1\) 时,无论何时使用操作 \(1\) 或者操作 \(2\) 都可以。于是此时答案就是 \(2^n\)。
代码
#include <bits/stdc++.h>
#define fi first
#define se second
#define lc (p<<1)
#define rc ((p<<1)|1)
using namespace std;
typedef long long ll;
typedef pair<int,int> pi;
const ll mod=998244353;
ll dp[5005][6005],n,s,ans=0;
int main()
{
freopen("op.in","r",stdin);
freopen("op.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>s;
int tmp=s,qs=0;
while(tmp%2==1&&tmp>1)
{
tmp=(tmp+1)/2;
qs++;
}
if(tmp!=1)
{
dp[0][qs]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=6000;j++)
{
dp[i][j]=(dp[i-1][j-1]+dp[i][j])%mod;
}
for(int j=0;j<=6000;j++)
{
dp[i][j]=(dp[i][j]+dp[i-1][j+1])%mod;
}
}
for(int i=0;i<=6000;i++)ans=(ans+dp[n][i])%mod;
cout<<ans%mod;
return 0;
}
dp[0][0]=1;
for(int i=1;i<=n;i++)dp[i][0]=(dp[i-1][0]*2)%mod;
cout<<dp[n][0];
return 0;
}
坑点
dp 转移上限不能直接设为 \(n\),因为一开始会多丢 \(\log\) 个左括号进去。
Hetao P1391 操作序列 题解 [ 绿 ] [ 二维线性 dp ]的更多相关文章
- Vijos1392拼拼图的小衫[背包DP|二维信息DP]
背景 小杉的幻想来到了经典日剧<死亡拼图>的场景里……被歹徒威胁,他正在寻找拼图(-.-干嘛幻想这么郁闷的场景……). 突然广播又响了起来,歹徒竟然又有了新的指示. 小杉身为新一代的汤浅, ...
- UVA1347 旅游(二维递归DP)
旅游 [题目链接]旅游 [题目类型]DP &题解: 紫书P269 代码很简单,但思路很难.很难能想到要把一个圈分成2条线段,很难想到d(i,j)表示的是已经走过max(i,j)还需要的距离值, ...
- 二维线性表 list实现
class Coordinate{ private int x; private int y; } List<Coordinate> list=new ArrayList<Coord ...
- 棋盘分割(二维区间DP)
题目大意:给一个棋盘,棋盘上每个格子中都有一个值,现在需要将棋盘切成n个矩形,总共切n-1刀,求最小的均方差.均方差定义为:,其中. 题目分析:将均方差化简得到:均方差2=(Σxi2)/n-平均值2. ...
- 在UniApp的H5项目中,生成二维码和扫描二维码的操作处理
在我们基于UniApp的H5项目中,需要生成一些二维码进行展示,另外也需要让用户可以扫码进行一定的快捷操作,本篇随笔介绍一下二维码的生成处理和基于H5的扫码进行操作.二维码的生成,使用了JS文件wea ...
- HDU 4819 Mosaic 二维线段树
Mosaic Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- poj2155二维树状数组
Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the i-th row an ...
- Android应用--QR的生成(二维码)
二维码的定义: 二维码(2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的. 在许多种类的二维条码中,常用的码制 ...
- 低差异序列 (low-discrepancy sequences)之Halton序列均匀产生多维随机数的介绍与实现
Halton序列 在统计学中,Halton序列是用于生成空间中的点的序列,如Monte Carlo模拟的数值方法,虽然这些序列是确定性的,但它们的差异性很低,也就是说,在许多方面看起来是随机的.它们在 ...
- PHP二维码生成的方法(google APi,PHP类库,libqrencode等)
原文地址: http://blog.csdn.net/liuxinmingcode/article/details/7910975 ================================== ...
随机推荐
- ai大模型流式输出------基于SSE协议的长连接实现
传统的http1.0请求开发,已经满足了我们日常的web开发.一般请求就像下图这样子,客服端发起一个请求(触发),服务端做出一个响应(动作): 有时会有诸如实时刷新,实时显示的场景,我们往往是客户端定 ...
- 药企如何实现ERP系统与CRM系统的整合
ERP系统与CRM系统整合的意义深远,对于企业尤其是药企来说,这种整合能够带来多方面的优势和改进.可以确保企业内部数据的一致性和准确性:优化业务流程.增强决策支持:从而提高企业的整体运营效率和市场竞争 ...
- word常规操作
为何写标 招标: A公司要买100台电脑 [需求] 投标: 电脑公司看到招标后,就会投标:自我介绍(公司,产品,售后) [自我介绍满足需求] 中标: A公司选择XX公司 [选择] 保密价格内容 不能透 ...
- 规范LR(1)语法分析表
前面已经实现了SLR语法分析表,但是可能会出现即使语法不是二义性文法,也存在移入/规约冲突 状态 i 包含项[A ->α ],当状态 i 出现在栈顶时,栈中的可行前缀时βα且在任何最后句型中a都 ...
- Object-relational impedance mismatch (转载)
http://www.agiledata.org/essays/impedanceMismatch.html Why does this impedance mismatch exist? The ...
- django介绍及基本使用
目录 一.python主流web框架 二.django简介 1.版本问题 2.运行django注意事项 三.django基本使用 1.下载模块 2.验证 3.常见命令 4.pycharm自动创建dja ...
- 强化学习:使用自动控制方法PID来解决强化学习问题中的cartpole问题(小车平衡杆问题)
网上找到的一个实现: 地址: https://gist.github.com/HenryJia/23db12d61546054aa43f8dc587d9dc2c 稍微修改后的代码: import nu ...
- Qt音视频开发19-海康sdk录像存储
一.前言 关于调用海康sdk来进行录像存储,整体的框架架构处理流程沿袭了之前vlc内核.ffmpeg内核.mpv内核的做法,定时存储这块,开个定时器判断,到了时间则先关闭原来的录像存储,然后在开始一个 ...
- 即时通讯技术文集(第45期):微信、QQ技术精华合集(Part2) [共14篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第45 期. [-1-] QQ音乐团队分享:Android中的图片压缩技术详解(上篇) [链接 ...
- docker导入和导出
save和export 镜像导入和导出有2种方式,分别为 save和load.export和import save导出的是镜像:export导出的为容器 save导出会保存镜像所有的提交记录:expo ...