- 博客(46)
- 收藏
- 关注
原创 C++基础知识(2)
1:在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration),而定义文件用于保存程序的实现(implementation)。
2024-07-31 21:10:33
274
原创 C++基础知识(1)
第一个版本的C++,因其面向对象的思想使得编程变得简单,并且又保持了C语言的运行效率,在推出的一段时间内,得到了快速的发展,占据了编程语言界的半壁江山。从1998年到2003年,是C++标准从C++98到C++03的迭代期,期间C++扩增了很多额外的特性,比如以Boost MPL(Boost Metaprogramming Library)与Loki等为代表的模板元编程库的出现,让开发者更加便捷的使用C++在编译期的执行能力,即通过代码编译获得计算结果,学术性的称为模板元编程。
2024-07-29 20:49:02
395
原创 题解 P2178 树屋阶梯
catalan数满足递推式:h(n)= h(0) h(n-1)+h(1) h(n-2) + …+ h(n-1) h(0) (n>=2)递推关系的另类解为:h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,…递推关系的解为:h(n)=C(2n,n)/(n+1) (n=0,1,2,…例如:h(2)=h(0) h(1)+h(1) h(0)=1 1+1 1=2。设h(n)为catalan数的第n+1项,令h(0)=1,h(1)=1,那么到达某个点的方案数=左边点的方案数+右边点的方案数。
2024-03-05 20:52:19
512
2
原创 2179:2、信号塔
在既定的给定点条件下,如果引入一张新的半平面,只要此前的最优解顶点(即唯一确定最小包围圆的几个关键顶点)能够包含于其中,则不必对此最优解进行修改,亦即此亦为新点集的最优解;则仿照上述处理的思路,Di={ p1 ,pi },逐个判断点集{ p2 ,p3。证明可以考虑这么做:最小圆必定是可以通过不断放大半径,直到所有以任意点为圆心,半径为半径的圆存在交点,此时的半径就是最小圆。方法二:模拟退火法:对于每个枚举的点找到改点到所给点的最远点的距离,然后保证这个距离最小,即为所求圆的半径;以下代码采用的是方法一。
2024-03-05 20:47:10
338
原创 2045第六题 拯救花园 (flowers)
有n只兔子,每只兔子抓回去的时间为ti,回来的时间也是ti,则抓一只兔子要2*ti的时间,di则为每只兔子一个时间单位能吃多少草,用最优方法做的话它们一共吃了多少草(最少)我们先把每一只兔子的性价比算出来(di/ti),及在一个时间单位里能阻止吃多少草,如果性价比相同,则根据其他兔子在这只兔子搬运的时间中能吃多少草进行比较。
2024-02-19 20:02:35
401
2
原创 2194 4.琵琶湖(lakebiwa)——2015安徽初中
这个时候,每一单位时间,会有额外的格子露出水平,并有可能合并原有的不相连的区域。这样的问题可以被描述为 对若干集合进行合并 ,用 并查集 是最高效的处理方案。接着,我们易知, 每次的方格更新最多只会联通它四个方向上的块 ,所以我们 不需要对整个方格整体进行扫描 ,只需要让当前格 与四个方向上块依次进行合并(还没出现的块不合并)。但他们分别属于不同块时,将其合并,并将答案值减一即可。细节一下 ,可知,倒叙操作时,假如新出现的小方格周围全是海洋,那么它就能提供一个答案值(当成一个小块)。
2024-01-08 18:50:05
535
1
原创 4030 【例题2】Cashier Employment 出纳员问题(Poj1275Hdu1529)————一本通(提高篇)
从0点到23点,给出每个时刻需要的售货员个数,再给出每个时刻应征的售货员个数,然后让你求出满足需求的最小售货员个数。
2024-01-08 18:48:10
596
原创 6130 树的最长路
从树的中心节点(即直径的中间节点)出发,分别给两侧 DFS ,对于经过的每个结点,记录其到直径长度的最大值。以任意一个点为起点进行深度优先遍历(DFS),找到与该点距离最远的点 u。以 u 为起点进行 DFS ,找到与 u 距离最远的点 v。2.第二次 DFS 求每个结点的最远距离。则从 u 到 v 的路径即为树的直径。1.第一次 DFS 求树的直径。
2023-12-29 21:07:34
1242
原创 3375 小白逛公园
那么我们对应的就是tree[o<<1].maxv tree[o<<1|1].maxv tree[o<<1].right+tree[o<<1|1].left。要么是左端端点延伸到达了右部分 所以这个时候肯定就是选取了全部的左边加上右端的left。我们知道一个最大连续和的子序列 要么是左半段的最大和 要么就是右半段的最大和。maxv就是我们要求的 即整个区间中能达到的最大连续和值。第四个maxv我们就是和O(nlogn)算法的思路一样了。所以有的时候就忽略了我们的O(nlogn)的分治算法。
2023-12-28 19:38:14
387
原创 3155 多重背包
把有n件的物品拆分成1件,2件,4件,8件……2的k次方件,n-2的k次方件。事实证明,这样既可以获得全部的拆分方案,又同时不会超过n件,这对于上一种方法是很大的改进。如果只考虑NOIP范围内的话,方法二已经很优了。但是用单调队列来解决多重背包问题,可以效率更高。这里就不给大家展示代码了,大家可以自行摸索。思路:把每种有n个的物品看成是n件一个物品,转化为01背包。利用二进制的优化,转化为01背包。转化为普通的01背包。
2023-12-28 19:33:21
422
原创 1073:【入门】A类多?B类多?
一个自然数转换成二进制后,如果1的个数比0的个数多,则称为A类数,否则称为B类数,输入n(n=10000),输出1到n之间A类数.B类数各有多少个。两个整数,为A类数和B类数的个数(用空格隔开)。输入一个整数n(n<=10000)
2023-10-07 20:10:05
391
1
原创 3022:46:八进制到十进制
一行,仅含一个八进制表示的整数a,a的十进制表示的范围是(0<a<65536)。把一个八进制正整数转化成十进制。
2023-09-20 21:08:52
54
1
原创 宝可梦游戏c++
本人想做一款宝可梦的小游戏,请各位大佬指导指导。只写好了一个开头,想以小智的经历作,因此来纪念小智(本人十分十分喜欢小智与皮卡丘),请大佬看看怎么改。
2023-09-18 21:11:35
649
2
原创 2821:10满足条件的数累加
将正整数m和n中间(包括m和n)能被17整除的数累加。其中,0<m<n<1000。一行,包含两个整数m和n,其间,以一个空格间隔。输出一行,包含一个整数,表示累加的结果。
2023-09-17 20:39:55
318
1
原创 2851:40:数1的个数
例如当n=2时,写下1,2。这样只出现了一个“1”;当n=12时,写下1,2,3,4,5,6,7,8,9,10,11,12。这样出现5个“1”。给定一个十进制正整数n,写下从1到n的所以整数,然后数一下其中出现的数字“1”的个数。一个正整数,即“1”的个数。
2023-09-15 21:29:58
52
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人