[CF261E]Maxim and Calculator_搜索_欧拉筛素数_动态规划
Maxim and Calculator
题目链接:https://www.luogu.org/problem/CF261E
数据范围:略。
题解:
考试的时候只会暴力,学弟太强了$\%\%\% Orz$。
感觉直接处理不太好处理,得想到所有有可能被这种操作在$100$步表示出来。
先打个表。
之后就随便$dpdp$就好了,关键是你得想到所有合法的数非常小。
我反正是没想到.....
代码:
#include <bits/stdc++.h>
#define N 3000010 
using namespace std;
typedef long long ll;
bool vis[110];
int prime[110], cnt;
void init(int mx) {
	for (int i = 2; i <= mx; i ++ ) {
		if (!vis[i]) {
			prime[ ++ cnt] = i;
		}
		for (int j = 1; j <= cnt && i * prime[j] <= mx; j ++ ) {
			vis[i * prime[j]] = true;
			if (i % prime[j] == 0) {
				break;
			}
		}
	}
}
int a[N], f[N];
bool b[N];
int l, r, p;
void dfs(int x, int k) {
	a[ ++ a[0]] = k;
	for (int i = x; i <= cnt; i ++ ) {
		if ((ll)prime[i] * k <= r) {
			dfs(i, k * prime[i]);
		}
	}
}
int main() {
	cin >> l >> r >> p ;
	init(p);
	dfs(1, 1);
	sort(a + 1, a + a[0] + 1);
	for (int i = 1; i <= a[0]; i ++ ) {
		f[i] = 0x3f3f3f3f;
	}
	f[1] = 0, b[1] = 1;
	int ans = 0;
	for (int i = 2; i <= p; i ++ ) {
		int j = i;
		for (int k = 1; k <= a[0]; k ++ ) {
			while ((j <= a[0]) && (a[j] != a[k] * i)) {
				j ++ ;
			}
			if (j > a[0]) {
				break;
			}
			if (f[k] + 1 < f[j]) {
				f[j] = f[k] + 1;
			}
			if ((a[j] < l) || b[j]) {
				continue;
			}
			if (f[j] + i <= p) {
				b[j] = 1;
				ans ++ ;
			}
		}
	}
	cout << ans << endl ;
	return 0;
}
小结:不会不会,这种题出成考试题真的合适么
[CF261E]Maxim and Calculator_搜索_欧拉筛素数_动态规划的更多相关文章
- [bzoj3308]九月的咖啡店_欧拉筛素数_费用流
		bzoj-3308 九月的咖啡店 题目大意:深绘里在九份开了一家咖啡让,如何调配咖啡民了她每天的头等大事我们假设她有N种原料,第i种原料编号为i,调配一杯咖啡则需要在这里若干种兑在一起.不过有些原料不 ... 
- POJ-3126.PrimePath(欧拉筛素数打表 + BFS)
		给出一篇有关素数线性筛和区间筛的博客,有兴趣的读者可以自取. 本题大意: 给定两个四位的素数,没有前导零,每次变换其中的一位,最终使得两个素数相等,输出最小变换次数.要求变换过程中的数也都是素数. 本 ... 
- 洛谷 P3383 【模板】线性筛素数-线性筛素数(欧拉筛素数)O(n)基础题贴个板子备忘
		P3383 [模板]线性筛素数 题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范 ... 
- [bzoj4818][Sdoi2017]序列计数_矩阵乘法_欧拉筛
		[Sdoi2017]序列计数 题目大意:https://www.lydsy.com/JudgeOnline/problem.php?id=4818. 题解: 首先列出来一个递推式子 $f[i][0]$ ... 
- Java实现欧拉筛与花里胡哨求质数高级大法的对比
		我也不清楚这是什么高级算法,欧拉筛是昨天有位大佬,半夜无意间告诉我的 欧拉筛: 主要的含义就是我把这个数的所有倍数都弄出来,然后下次循环的时候直接就可以跳过了 import java.text.Sim ... 
- BZOJ_4804_欧拉心算_欧拉函数
		BZOJ_4804_欧拉心算_欧拉函数 Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N&l ... 
- BZOJ_2186_[Sdoi2008]沙拉公主的困惑_欧拉函数
		BZOJ_2186_[Sdoi2008]沙拉公主的困惑_欧拉函数 Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行 ... 
- 埃氏筛优化(速度堪比欧拉筛) + 洛谷 P3383 线性筛素数 题解
		我们一般写的埃氏筛消耗的时间都是欧拉筛的三倍,但是欧拉筛并不好想(对于我这种蒟蒻) 虽然 -- 我 -- 也可以背过模板,但是写个不会的欧拉筛不如写个简单易懂的埃氏筛 于是就有了优化 这个优化还是比较 ... 
- noip复习——线性筛(欧拉筛)
		整数的唯一分解定理: \(\forall A\in \mathbb {N} ,\,A>1\quad \exists \prod\limits _{i=1}^{s}p_{i}^{a_{i}}=A\ ... 
随机推荐
- Java进阶知识26 SSH整合(Struts2、Spring、Hibernate)
			1.我用到的jar包 2.整合实例 2.1.数据库建表语句 create database school; -- 创建数据库 use school; -- 使用school数据库 create tab ... 
- linux mysql5.7设置中文字符集
			ubuntu16.04已测试 注意版本,好像从5.6根5.5就不一样,配置文件更深了一层. 1.用vim或nano编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 2.[ ... 
- C语言学习笔记10-结构体、枚举、联合体
			C语言学习笔记10-结构体.枚举.联合体 待传 
- Mybatis 返回值  返回Map的为空的值
			第一种.springMVC和boot通用配置:(Mybatis.xml) <?xml version="1.0" encoding="UTF-8"?> ... 
- 一个XP SP3调用0地址蓝屏BUG
			0x00 蓝屏的堆栈 在XP SP3上跑POC之后,一段时间之后会出现蓝屏,蓝屏的堆栈如下,可以看出是ACKData里面CALL了一个0指针导致的蓝屏 0x01 蓝屏原因 1 ETW(Event Tr ... 
- Flutter子组件调用父组件方法修改父组件参数
			子组件调用父级组件方法的主要实现是父组件给子组件传入一个方法,然后在子组件中调用父级方法来修改父级的参数.看一下效果图 父级组件实现 在父级组件中写一个_editParentText的方法来修改组件中 ... 
- springmvc配置jackson时遇到的一些问题
			在没接触springmvc之前我们在servlet中想返回前台json数据时,都是自定义一个JSONObject和JSONArray,然后调用response.getWriter()对象的方法返回js ... 
- php学习之单例模式
			<?php class Dog { private function __construct() { } //静态属性保存单例对象 static private $instance; stati ... 
- VUE数组操作方法的局限
			1.不能通过索引值直接设置一个项: vm.items[indexOfItem] = newValue 但是可以用set方法设置: Vue.set(example1.items,indexOfItem, ... 
- kotlin之函数的范围和泛型函数
			kotlin 中函数可以定义为局部函数,成员函数以及扩展函数 局部函数:就是嵌套在函数内的函数 成员函数就是定义在类或者对象之内的函数 泛型函数就是函数可以带有泛型参数,可通过尖括号来指定 
