[luoguP2618] 数字工程(DP)
离线处理。。。
先线性筛一遍。
直接预处理出所有答案。
注意要用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] = notpri[1] = 1;
for(i = 2; i < N; i++)
{
if(!notpri[i]) prime[++cnt] = i;
for(j = 1; i * prime[j] < N; j++)
{
notpri[i * prime[j]] = 1;
if(!(i % prime[j])) break;
}
}
} int main()
{
int i, j;
init();
memset(f, 127, sizeof(f));
f[1] = 0;
for(i = 1; i < N - 1; i++)
{
f[i + 1] = min(f[i + 1], f[i] + 1);
for(j = 1; j <= cnt && i * prime[j] < N; j++)
f[i * prime[j]] = min(f[i * prime[j]], f[i] + 1);
}
while(~scanf("%d", &n)) printf("%d\n", f[n]);
return 0;
}
[luoguP2618] 数字工程(DP)的更多相关文章
- luogu2618 数字工程 DP
题目大意:ACM实验室开启了一个数字工程项目,希望把正整数n通过一些特殊方法变成1.可采用的方法有:(1)减去1:(2)除以它的任意一个素因子. 每操作一次消耗一个单位的能量.问,把n变成1最少需要消 ...
- 取数字(dp优化)
取数字(dp优化) 给定n个整数\(a_i\),你需要从中选取若干个数,使得它们的和是m的倍数.问有多少种方案.有多个询问,每次询问一个的m对应的答案. \(1\le n\le 200000,1\le ...
- 繁繁的数字 背包DP
繁繁的数字 背包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+ ...
- P2034 选择数字——线性dp(单调队列优化)
选择数字 题目描述 给定一行 \(n\) 个非负整数 \(a[1]...a[n]\) .现在你可以选择其中若干个数,但不能有超过 \(k\) 个连续的数字被选择.你的任务是使得选出的数字的和最大. 输 ...
- xbz分组题B 吉利数字 数位dp入门
B吉利数字时限:1s [题目描述]算卦大湿biboyouyun最近得出一个神奇的结论,如果一个数字,它的各个数位相加能够被10整除,则称它为吉利数.现在叫你计算某个区间内有多少个吉利数字. [输入]第 ...
- BZOJ 1833: [ZJOI2010]count 数字计数( dp )
dp(i, j, k)表示共i位, 最高位是j, 数字k出现次数. 预处理出来. 差分答案, 对于0~x的答案, 从低位到高位进行讨论 -------------------------------- ...
- codevs 1085 数字游戏 dp或者暴搜
1085 数字游戏 2003年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单 ...
- [BZOJ1833][ZJOI2010]Count数字计数(DP)
数位DP学傻了,怎么写最后都写不下去了. 这题严格上来说应该不属于数位DP?只是普通DP加上一些统计上的判断吧. 首先复杂度只与数的位数$\omega$有关,所以怎么挥霍都不会超. f[i][j][k ...
- 牛客小白月赛8 - E - 诡异数字 数位DP
牛客小白月赛8 - E - 诡异数字 题意: 求区间中,满足限制条件的数字的个数. 限制条件就是某些数字不能连续出现几次. 思路: 比较裸的数位DP, DP数组开一个dp[len][x][cnt] 表 ...
随机推荐
- 将php数组传递到js—json_encode(),json_decode()
json_decode(),对一个json字符串进行解码,json_encode()是生成一个json字符串 上面的解释很清楚了,关于php里数组赋值的问题,列举如下: <?php //对象 c ...
- 基于Java实现的冒泡排序算法
冒泡排序是一种简单基础的排序算法,相信在大学课堂里老师已经讲过了,现在我基于Java来实现一遍. 简述 冒泡排序正如其关键词一样,杂乱的气泡经过浮动,最后大的气泡飘到了上面而小的气泡在下面,无序的元素 ...
- Java GUI简介
Java有2个GUI库:AWT.Swing. AWT是SUN最早提供的GUI库,依赖本地平台,界面不好看,功能有限.之后推出了Swing,Swing并没有完全替代AWT,而是建立在AWT基础上的.Sw ...
- 伟景行 citymaker 从入门到精通(3)——点击地图获取坐标,点击模型获取模型信息和属性信息
在地图上点击要素查看要素信息,也就是identify功能 script部分 // 通过枚举索引获取枚举名称 function getEnumTextByIdx(enumObj, idx) { for ...
- Android 基础知识总结
搞了这么久安卓开发,对基础的知识点总会遗忘,所有有必要总结一下:
- vb6如何调用delphi DLL中的函数并返回字符串?
1,问题描述 最近发现vb6调用delphi DLL中的函数并返回字符串时出现问题,有时正常,有时出现?号,有时干脆导致VB程序退出 -- :: 将金额数字转化为可读的语音文字:1转化为1元 ???? ...
- java nio 读取大文件
package com.yao.bigfile; import java.io.File; import java.io.IOException; import java.io.RandomAcces ...
- Android(java)学习笔记186:多媒体之视频播放器
1. 这里我们还是利用案例演示视频播放器的使用: (1)首先,我们看看布局文件activity_main.xml,如下: <RelativeLayout xmlns:android=" ...
- Open Cascade:如何从AIS_Shape导出TopoDS_Shape?
Open Cascade:如何从AIS_Shape导出TopoDS_Shape? 实现代码如下: if( !myAISContext->HasOpenedContext()) { wxMessa ...
- hdu 6441 Find Integer(费马大定理+勾股数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6441(本题来源于2018年中国大学生程序设计竞赛网络选拔赛) 题意:输入n和a,求满足等式a^n+b^ ...