F001 木棒加工问题 题目描述 现有n根木棒,已知它们的长度和重量。要用一部木工机一根一根地加工这些木棒。该机器在加工过程中需要一定的准备时间,是用于清洗机器,调整工具和模板的。木工机需要的准备时间如下: (1) 第一根木棒需要1min的准备时间; (2) 在加工了一根长为l,重为w的木棒之后,接着加工一根长为l’(l≤l’),重为w’(w≤w’…
NENUACM培训二分专题 - Virtual Judge A - 查找 Description 输入 nn 个不超过 109109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a1,a2,…,ana1,a2,…,a**n,然后进行 mm 次询问。对于每次询问,给出一个整数 qq,要求输出这个数字在序列中第一次出现的编号,如果没有找到的…
前言 这一章是搜索相关,搜索需要有很强的“转移”的意识,你要能把题目变成一颗“树”,然后在这棵”树“上完成你的搜索。 搜索和动态规划是相似的,想办法分类讨论+分解吧~ E001 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两种分法不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5;1,5,1;5,…
这里是大一入学的一门必修,会实现最最基础的C语言内容。 前言 作为初学者,可以去各种平台上学习C语言的语法。 善用搜索引擎、代码论坛(CSDN、稀土掘金、stack overflow)、AI(国内的kimi、文心一言、通义千问)进行学习。 可以学习笔者的代码风格,也可以不学习,但是推荐代码里的符号,例如+-*/=的前后都加上空格。 代码换行要注意,…
这里是大一入学的一门必修,会实现最最基础的C语言内容。 前言 作为初学者,可以去各种平台上学习C语言的语法。 善用搜索引擎、代码论坛(CSDN、稀土掘金、stack overflow)、AI(国内的kimi、文心一言、通义千问等)进行学习。 可以学习笔者的代码风格,也可以不学习,但是推荐代码里的符号,例如+-*/=的前后都加上空格。 代码换行要注意…
前言 这一章是动态规划,理解上可能会比较晦涩,但是还是希望读者能尽量去理解其中的精华。 D001 数字三角形 题目描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 注意:路径上的每一步只能从…
前言 这套题的核心其实就是二分~ 虽然我们可以用一些好用的数据结构偷偷懒,但是二分还是得会的! C001 字符串计数 题目描述 给出m个字符串,要求输出重复n次的字符串有几个。 输入 先给定一个N,N≤100000,接着输入N个字符串。 输出 对于每组测试数据,输出若干行,每行两个正整数,第一个数表示重复的次数,第二个数表示在此重复次数下有几种不同…
前言 不太好写的一章节~愿读者充满耐心地学习每一道题,如果是面对小测,可以提前准备一下,因为这一章不太容易在初次见到的时候马上做出来。 B001 快乐的蠕虫 题目描述 有一只快乐的蠕虫居住在一个m×n大小的网格中。在网格的某些位置放置了k块石头。网格中的每个位置要么是空的,要么放置了一块石头。当蠕虫睡觉时,它在水平方向或垂直方向上躺着,把身体尽可能…
前言 考虑到进入大二上了,所以代码主要以C++的形式给出,倘若读者擅长使用C语言,影响也不会很大~ A001 猴子吃桃 题目描述 猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半另加一个。到第10天早上想再吃时,就只剩下一个桃子了。求第1天共摘了多少个桃子…
GCD(最大公约数)和LCM(最大公倍数)都是大家很熟悉的东西,这里不再赘述基本概念,而是浅谈一下GCD和LCM所具有的一些性质。 算数基本定理 任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积$N=P_{1}^{a_{1}}P_{2}^{a_{2}}P_{3}^{a_{3}}......P_{n}^{a_{n}}$…