首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
【Luogu】P4067储能表(数位DP)
】的更多相关文章
BZOJ 4513: [Sdoi2016]储能表 [数位DP !]
4513: [Sdoi2016]储能表 题意:求\[ \sum_{i=0}^{n-1}\sum_{j=0}^{m-1} max((i\oplus j)-k,0) \] 写出来好开心啊...虽然思路不完全是自己的但代码是按照自己的想法用记忆化搜索写的啊 小于k的直接不用考虑 考虑二进制上数位DP,从高到低考虑每一位 \(n,m,k\)变成了三条天际线,小于等于\(n,m\)并且大于等于\(k\) \(f[i][s1][s2][s3]\)表示第i位三条天际线状态s1s2s3时满足条件的方案数和异或和…
【BZOJ4513】[Sdoi2016]储能表 数位DP
[BZOJ4513][Sdoi2016]储能表 Description 有一个 n 行 m 列的表格,行从 0 到 n−1 编号,列从 0 到 m−1 编号.每个格子都储存着能量.最初,第 i 行第 j 列的格子储存着 (i xor j) 点能量.所以,整个表格储存的总能量是, 随着时间的推移,格子中的能量会渐渐减少.一个时间单位,每个格子中的能量都会减少 1.显然,一个格子的能量减少到 0 之后就不会再减少了. 也就是说,k 个时间单位后,整个表格储存的总能量是, 给出一个表格,求 k 个时间…
BZOJ.4513.[SDOI2016]储能表(数位DP)
BZOJ 洛谷 切了一道简单的数位DP,终于有些没白做题的感觉了...(然而mjt更强没做过这类的题也切了orz) 看部分分,如果\(k=0\),就是求\(\sum_{i=0}^n\sum_{j=0}^mi\ \mathbb{xor}\ j\).这个数据范围考虑数位DP.(其实统计一下\(\leq n\)和\(\leq m\)中每位为\(1\)的数有多少个就行了...) 如果你做过字节跳动冬令营网络赛 D.The Easiest One(没做过也行),就可以想到枚举每一位的时候,同时枚举\(x,…
[SDOI2016]储能表——数位DP
挺隐蔽的数位DP.少见 其实减到0不减了挺难处理.....然后就懵了. 其实换个思路: xor小于k的哪些都没了, 只要留下(i^j)大于等于k的那些数的和以及个数, 和-个数*k就是答案 数位DP即可 f[i][0/1][0/1][0/1]表示,前i位,对n,m,k有无限制<=n,<=m,>=k?,xor值的总和 g[i][0/1][0/1][0/1]表示,前i位,对n,m,k有无限制<=n,<=m,>=k?,合法的方案数 然后枚举这一位的n,m数位填什么转移 注意爆…
4513: [Sdoi2016]储能表 数位DP
国际惯例的题面: 听说这题的正解是找什么规律,数位DP是暴力......好的,我就写暴力了QAQ.我们令f[i][la][lb][lc]表示二进制从高到低考虑位数为i(最低位为1),是否顶n上界,是否顶m上界,是否顶k下界的数字和,g[i][la][lb][lc]表示(同上定义)的数字个数.转移的话,先计算出这一位n,m,k的限制,然后枚举这一位第一个数和第二个数填什么,判定xor和是否满足k的条件,转移即可.记忆化搜索实现较为简单.注意最后计算答案的时候,方案数乘以k可能爆long long,…
BZOJ4513: [Sdoi2016]储能表(数位dp)
题意 题目链接 Sol 一点思路都没有,只会暴力,没想到标算是数位dp??Orz 首先答案可以分成两部分来统计 设 \[ f_{i,j}= \begin{aligned} i\oplus j &\left( i\oplus j >k\right) \\ 0 &\left( i\oplus j <=k\right) \end{aligned} \] 那么我们要求的就是 \[\sum_{i=0}^{n - 1} \sum_{j = 0}^{m - 1} f(i, j) - k *…
[bzoj4513][SDOI2016]储能表——数位dp
题目大意 求 \[\sum_{i = 0}^{n-1}\sum_{j=0}^{m-1} max((i\ xor\ j)\ -\ k,\ 0)\ mod\ p\] 题解 首先,开始并没有看出来这是数位dp. 后来发现可以一位一位的处理,每一位可以从前一位推出,所以可以考虑数位dp. 我们把要统计的数变为二进制表示,先考虑n位二进制的数,再考虑n-1位的数--,加起来就好辣. 定义f[i][1/0][1/0][1/0]为已经考虑到了第i位,第i位是否比n(第i位)小,第i位是否比m小,是否比k小的总…
[Luogu P4124] [CQOI2016]手机号码 (数位DP)
题面 传送门:洛咕 Solution 感谢神仙@lizbaka的教学 这题是数位DP的非常非常模板的题目,只是状态有点多 . 这题我使用记忆化搜索实现的 中国有句古话说的好,有多少个要求就设多少个状态. 所以说,考虑这样设置状态: 设\(f[i][j][k][2][2][2][2][2]\)表示当前填到第i位,上一位填了j,上两位填了k,是否卡上界,上一个数是否为前导零,是否有4,是否有8,是否出现了连续三个相同的数字,之后任意填的可行方案总数 使用记忆化搜索的话,转移是非常容易的,我们只需要像…
【Luogu】P4067储能表(数位DP)
题目链接 好的 看到这题之后我一直在想反演,然后想不出来,一度以为自己脑子有问题 然后我脑子真的有问题,这题tm根本就不是反演 设f[i][j][k][l]表示现在已经DP到从高位往低数的第i位,有没有碰到n的上界,有没有碰到m的上界,有没有碰到k的上界 然后记忆化DFS搞一搞,把方案数和异或和都记录下来,最后减掉输出 #include<cstdio> #include<cstring> #include<cctype> #include<cstdlib>…
数位DP复习笔记
前言 复习笔记第五篇.(由于某些原因(见下),放到了第六篇后面更新)CSP-S RP++. luogu 的难度评级完全不对,所以换了顺序,换了别的题目.有点乱,见谅.要骂就骂洛谷吧,原因在T2处 由于半路换题,中间耽搁了一天等原因,所以此文的阅读体验不一定和前5篇相当,见谅. 注:此文大部分建议结合代码阅读,便于解释 0--HDU 3555 Bomb link 题意 求 \(1\sim N\) 中包含子串 49 的个数.\(N\leq 2^{63}-1.\) 思路 设 \(f[i][0]\) 表…