luogu2618 数字工程 DP】的更多相关文章

题目大意:ACM实验室开启了一个数字工程项目,希望把正整数n通过一些特殊方法变成1.可采用的方法有:(1)减去1:(2)除以它的任意一个素因子. 每操作一次消耗一个单位的能量.问,把n变成1最少需要消耗多少能量? 定义\(f(i)\)为将i变为1所需要的能量,则有递归式: \[\min({f(i-1)+1,\min_{质数p|i}({f(i/p)+1})})\] 用刷表法解决即可. #include <cstdio> #include <cstring> #include <…
取数字(dp优化) 给定n个整数\(a_i\),你需要从中选取若干个数,使得它们的和是m的倍数.问有多少种方案.有多个询问,每次询问一个的m对应的答案. \(1\le n\le 200000,1\le m\le 100,1\le q\le 30,-10^9\le a_i\le 10^9\). 首先有一个暴力dp:\(f[i][j]\)表示选到第i个数,和mod m是j的方案数.但是显然,这个dp是\(O(nm)\)的,然后就tle了. 换一个思路dp?由于我们只需要一个数模m的值,可以先把所有数…
繁繁的数字 背包DP 问一个数\(n\)有多少种二进制分解方案数 \(n\le 10^5\) 如7有7=4+2+1=4+1+1+1=2+2+2+1=2+2+1+1+1=2+1+1+1+1+1=1+1+1+1+1+1+1,共6种方案 一眼完全背包,将\(2^0,2^1\cdots\)等看成\(log_n\)个物品,每个物品无限件,背包体积为\(n\).然后求方案数套个计数DP即可. 其他机房大佬都是找规律找出来的-- #include <cstdio> #define MAXN 1000010…
选择数字 题目描述 给定一行 \(n\) 个非负整数 \(a[1]...a[n]\) .现在你可以选择其中若干个数,但不能有超过 \(k\) 个连续的数字被选择.你的任务是使得选出的数字的和最大. 输入格式 第一行两个整数 \(n\),\(k\) . 以下 \(n\) 行,每行一个整数表示 \(a[i]\) . 输出格式 输出一个值表示答案. 输入输出样例 输入 5 2 1 2 3 4 5 输出 12 说明/提示 对于 \(20\%\) 的数据,\(n\leq 10\) . 对于另外 \(20\…
传送门 离线处理... 先线性筛一遍. 直接预处理出所有答案. 注意要用push,用乘法,常数小. #include <cstdio> #include <cstring> #define N 1000001 #define min(x, y) ((x) < (y) ? (x) : (y)) int n, cnt; int f[N], prime[N]; bool notpri[N]; inline void init() { int i, j; notpri[0] = no…
B吉利数字时限:1s [题目描述]算卦大湿biboyouyun最近得出一个神奇的结论,如果一个数字,它的各个数位相加能够被10整除,则称它为吉利数.现在叫你计算某个区间内有多少个吉利数字. [输入]第一行为样例个数N.接下来N行,每一行代表一个输入样例,每个输入样例有2个数,分别代表某个区间的起点a和终点b.注意所求区间为[a,b],1<=a<=b<=10^9 [输出]N行.对于第x个输入样例,在第x行输入该样例所对应的结果. [输入样例]21 101 20 [输出样例]01 [Hint…
dp(i, j, k)表示共i位, 最高位是j, 数字k出现次数. 预处理出来. 差分答案, 对于0~x的答案, 从低位到高位进行讨论 ------------------------------------------------------------------------------ #include<bits/stdc++.h>   using namespace std;   typedef long long ll;   const int maxn = 16; const in…
1085 数字游戏 2003年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB     题目描述 Description 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k.游戏的要求是使你所得的k最大或者最小. 例如,对于下面这圈数字(n=4…
数位DP学傻了,怎么写最后都写不下去了. 这题严格上来说应该不属于数位DP?只是普通DP加上一些统计上的判断吧. 首先复杂度只与数的位数$\omega$有关,所以怎么挥霍都不会超. f[i][j][k]表示所有i位数(可以有前导零),第一位数为j,数字k出现的次数.直接$O(\omega^4)$转移即可. 接下来只需要统计[1,n]中某个数字出现的次数,分两种情况. 1. 第一位是0:这个直接做就好了. 2. 第一位不是0:枚举第一个小于原数的位置,同样直接转移. #include<cstdio…
牛客小白月赛8 - E - 诡异数字 题意: 求区间中,满足限制条件的数字的个数. 限制条件就是某些数字不能连续出现几次. 思路: 比较裸的数位DP, DP数组开一个dp[len][x][cnt] 表示长度为len,x这个数字连续出现cnt次的个数. #include <iostream> #include <algorithm> #include <cstring> #include <string> #include <cstdio> typ…