C++
文章平均质量分 57
城主_全栈开发
兴趣领域是全栈,同时是正在网安/数通领域探索的菜鸟,希望我的文章能够帮助到你!
展开
-
【BUCTOJ】问题H:Harnack函数(动态规划)
首先审题,发现如果要求H(n,m),需要从1向上迭代出,符合动态规划题型.dp方程也已经给出,最优子结构为H(n-1,m)+n-1和H(n,m-1)+m-1.那么还剩下枚举确定边界就可以做出该题.假设获取初值时函数为H(-1,k)(k>=0),那么向上迭代一次,为H(0,k)=max(H(-1,k)-1,H(0,k-1)+k-1)(1)对于H(0,k-1)=max(H(-1,k-1)-1,H(0,k-2)+k-2)(2),对于H(1,m)=max(H(0,m)+0,H(1,m-1)+m-1),原创 2023-02-13 21:47:56 · 177 阅读 · 0 评论 -
【算法】动态规划入门
那我们反过来想一想,小偷要偷到第i号房,从他是第0号房开始算,那他是不是可以选2或者3开始偷,然后到了2或者3再想偷哪间,往后以此类推。最后一次跳可跳1或2块石头,那么出现跳n-1块,跳n-2块两种解法和f(n-1),f(n-2).可以看出这是一个斐波那契数列,更可以通过穷举分析找到数列的首项和次项。由此可推知,f(n)的解可直接由f(1)和f(2)表示,最优子结构为f(n-1),f(n-2)说明可以把问题直接缩小为求出边界,自底向上遍历.f(n)=f(n-1)+f(n-2).这也称作问题的状态转移方程。原创 2023-01-29 15:56:17 · 59 阅读 · 0 评论 -
问题F:最少操作次数
但不用解出该方程,因为我们又发现,我们最后还要加上三个数都减一的次数,也就是101-n-k(==90-n==88-k),加上n+k就是101,也就是三个数中最大的那个数。我的思路是挑两个数减一和三个数都减一这两种操作里,肯定是尽量挑三个数都减一能达到最少操作次数,因为三次前者才等于两次后者。设a为最大值,a=b+c可以ac和ab共减1即可得0,那么a>b+c时a减完c减完b之后还有剩余。选择 A,C 减 1。数字变成 1,1,1。选择其中两个数,并将这两个数减 1。一行三个空格分隔的整数 A,B,C。原创 2023-01-15 17:36:21 · 333 阅读 · 0 评论 -
【C++】问题 G: Bob和Alice(3)
问题 G: Bob和Alice(3)内存限制:128 MB时间限制:1.000 S评测方式:文本比较题目描述求的是最大值!!!Bob和Alice在玩一个序列游戏有一个n-1个数的序列B1B2.......Bn−1Bob又定义了一个新的序列A1A2.......An对每一个i [1原创 2023-01-11 22:00:00 · 381 阅读 · 0 评论 -
【C++】数的反序处理:数位/数的进制转换
第二次循环个位x10+新的n%10,而这个新的n就是原来的n除以10取整后的结果,原来的n/10即等于(千百十)。然后进入循环,从个位开始,十位,百位...分别乘以1,A,A^2即可。这就是递归算法,它通过数n每次对k取模,自身除以k,取得目标数最低位,次低位...遍历出整个目标数.例如,11,13均为真素数,因为11的反序还是为11,13的反序为31也为素数。真素数的定义:如果一个正整数P为素数,且其反序也为素数,那么P就为真素数。(/的优先级等同于%,*也一样,数学上易推知,与变量从左往右结合)原创 2023-01-10 23:52:40 · 611 阅读 · 0 评论 -
【C++】竞赛笔记:最小公倍数/最大公约数/素数筛函数
1.最小公倍数、最大公约数最小公倍数的求算一般依赖于最大公约数的获取。假设求12和18的最小公倍数,直觉告诉我们是36,解释起来就是:18/12!12%6==0;最大公约数即为6.最小公倍数=两数乘积/最大公约数即12*18/6=36.可见,核心函数是最大公约数的求算函数.原创 2023-01-09 00:55:22 · 270 阅读 · 0 评论 -
【C/C++】变量自加/自减运算小白释疑篇
现在很多非常0基础的初学者都搞不清楚i++和++i的区别,打集训题的同时偶遇此题,想起了五年级时理解i++的痛苦经历,其实说白了就是那时太小,还没理解结合性、赋值、内存等。我相信这也是一些年纪比较小的初学者会遇到的问题。于是写此文以试用多种角度解释变量自加运算符间区别,以及实际使用时注意事项。如遇大佬请狠狠批评指正,以免误人子弟。问题 M: 9.变量自加运算内存限制:128 MB时间限制:1.000 S题目描述对于给定的整数a,输出 a++,a--,++a,--a的值输入输入一个整数a。原创 2023-01-06 20:24:29 · 3150 阅读 · 0 评论 -
【C++】问题 I: 许攸说
曹操有n个骑兵团,每一个骑兵团的耐力为d,许攸对曹操说,需要找到一个值k,耐力小于k的去乌巢东边偷袭,耐力值大于等于k的去西边偷袭,聪明的你知道有多少种取值k能让去偷袭东边的骑兵团数量和去偷袭西边的骑兵团数量相等吗?原创 2023-01-05 15:36:40 · 154 阅读 · 0 评论 -
【C++】问题 F: 【蓝桥杯2022初赛】刷题统计
他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?100% 的评测用例:1 ≤ a, b, n ≤ 10^18。50% 的评测用例:1 ≤ a, b, n ≤ 10^6;小明决定从下周一开始努力刷题准备蓝桥杯竞赛。输入一行包含三个整数a, b 和n.输出一个整数代表天数。以上是我的思路和题解。原创 2023-01-03 21:36:44 · 255 阅读 · 0 评论 -
【C++】判断和是否超过1000
输入一个数sum,求s=1+2+3+...+n,当加到第几项时,s的值会超过sum?原创 2023-01-01 10:54:05 · 598 阅读 · 0 评论