【LG4067】[SDOI2016]储能表】的更多相关文章

[LG4067][SDOI2016]储能表 题面 洛谷 题解 这种$n$.$m$出奇的大的题目一看就是数位$dp$啦 其实就是用一下数位$dp$的套路 设$f[o][n][m][k]$表示当前做到第$i$位卡不卡$n,m,k$的界 其中$f$是个$pair$一维存方案数.一位存数值 然后按照普通套路$dfs$即可 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstrin…
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时满足条件的方案数和异或和…
4513: [Sdoi2016]储能表 链接 分析: 数位dp. 横坐标和纵坐标一起数位dp,分别记录当前横纵坐标中这一位是否受n或m的限制,在记录一维表示当前是否已经大于k了. 然后需要两个数组记录答案,分别记录个数和答案的和. 语意不清了...看代码吧.. 代码: #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<iostream>…
[BZOJ4513][Sdoi2016]储能表 Description 有一个 n 行 m 列的表格,行从 0 到 n−1 编号,列从 0 到 m−1 编号.每个格子都储存着能量.最初,第 i 行第 j 列的格子储存着 (i xor j) 点能量.所以,整个表格储存的总能量是, 随着时间的推移,格子中的能量会渐渐减少.一个时间单位,每个格子中的能量都会减少 1.显然,一个格子的能量减少到 0 之后就不会再减少了. 也就是说,k 个时间单位后,整个表格储存的总能量是, 给出一个表格,求 k 个时间…
题意: 题面中文,不予翻译:SDOI2016储能表 分析: 据说有大爷用一些奇怪的方法切掉了这道题%%%%% 这里用的是大众方法——动态规划. 其实这是一道类似于二进制数位dp的动态规划题,(但是实际上还不是特别典型的数位dp)这里就要我们对问题的深入理解. 如果我们按照思路进程来发展的话,首先,我们会想到把求和式和k拆开,先求出所有大于k的(i^j)的和,然后减去若干个k. 我们怎样去数这个数呢? 逐位分析,用数位dp的手段,要判断i是否卡n的上界,j是否卡m的上界,以及i^j是否卡k这个下界…
Description 有一个 n 行 m 列的表格,行从 0 到 n−1 编号,列从 0 到 m−1 编号.每个格子都储存着能量.最初,第 i 行第 j 列的格子储存着 (i xor j) 点能量.所以,整个表格储存的总能量是, 随着时间的推移,格子中的能量会渐渐减少.一个时间单位,每个格子中的能量都会减少 1.显然,一个格子的能量减少到 0 之后就不会再减少了. 也就是说,k 个时间单位后,整个表格储存的总能量是, 给出一个表格,求 k 个时间单位后它储存的总能量. 由于总能量可能较大,输出…
Description 有一个 n 行 m 列的表格,行从 0 到 n−1 编号,列从 0 到 m−1 编号.每个格子都储存着能量.最初,第 i 行第 j 列的格子储存着 (i xor j) 点能量.所以,整个表格储存的总能量是, 随着时间的推移,格子中的能量会渐渐减少.一个时间单位,每个格子中的能量都会减少 1.显然,一个格子的能量减少到 0 之后就不会再减少了. 也就是说,k 个时间单位后,整个表格储存的总能量是, 给出一个表格,求 k 个时间单位后它储存的总能量. 由于总能量可能较大,输出…
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,…
挺隐蔽的数位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数位填什么转移 注意爆…
国际惯例的题面: 听说这题的正解是找什么规律,数位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,…