自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 B. And It‘s Non-Zero

位运算之前没怎么写过,所以不会写。留一份题解,作为复习使用。题解:按位与的结果不为0,则至少有一列全为1.要求删除的数最少,即要求该列原本含有的1最多。则统计每一位的1的个数,找出个数最大值,用数组数字的总数,减去1的个数,即需要删除的个数。第一版写的是枚举每一个数,对每一个数的每一位用&(1<<j)判断是不是1,用一个数组来统计每一位的结果。然而是TLE...第二版,借助AI工具,发现了从0开始到某一位的数据的二进制排列规律,用前缀和求解可得。

2025-04-26 16:09:34 247

原创 喜欢我们的海绵宝宝吗?--《计算机图形学》实践

本程序实现了一个带有纹理贴图和动态光照效果的3D四面体渲染系统。四面体会在场景中沿轨道公转并自转,用户可以通过键盘控制摄像机视角和调整光照参数。程序基于OpenGL和GLUT框架,实现了完整的3D图形渲染管线。,中文版,对新手极其友好。屏幕录制 2025-04-13 141419。程序设计说明:3D四面体渲染与光照系统。需要源码,可以留下评论~源码暂不开源,推荐去。

2025-04-13 14:34:03 762

原创 P3166 [CQOI2014] 数三角形

思路是很简单的,在所有点中任选3个,减去共线的三种情况,即横,竖,斜,剩下的就可以构成三角形了。那么总点数是(n+1)*(m+1),选3,是组合数,这里按照公式直接求组合数。横的共线:有m+1排横线,每个横线的总点数选3(组合数)即为共线情况。最后别忘了对角线的对称性,最后算出来的斜线需要乘以2~这个公式,看看是否有重复计算,以及如何正确理解它。计算的都是不同步长的斜线,所以。竖的共线:同横线,直接给出公式。取 i=2,j=1,步长为。取 i=2,j=2,步长为。

2025-03-02 12:09:00 689

原创 P3811 【模板】模意义下的乘法逆元

第一版代码用费马小定理求逆,时间复杂度(nlogn)出现TLE的测试点。第二版,线性方法求逆,具体公式推导看这里。

2025-03-01 20:05:01 179

原创 P2401 不等数列

题解参考来源洛谷思路:常规解法涉及阶乘的计算,显然这个复杂度是我们不想要的。对于n个数,有k个小于号,不妨试一下递推,即用动态规划来解决这个问题,定义状态dp[i][j]表示前i个数的排列中,恰好有j个的排列数量。。

2025-03-01 18:54:16 303

原创 C. Infected Tree

说一个错误的解法,也是我一开始的写法----贪心做法。乍一看,感觉贪心思路没什么问题。但是我们如果注意到这里是一棵二叉树,就要考虑到二叉树只有一个儿子的情况。只有一个儿子的情况,,我们可以选择删除这个单个儿子,防止下方感染。也就是说不是每一次都选择节点数最多的分支进行保留。这里不禁想起课上学长们说过的,贪心是局部最优,但不是全局最优。官方题解给出了dp解法,即树形dp。自底向上地选择保留节点最多的分支,直到根节点,得到最终的答案。参考官方题解,采用DP解法。

2025-02-15 21:06:23 188

原创 C. Ehab and Path-etic MEXs

那么解决方案就是,在一个度大于等于3的节点,把0,1,2的标签分别分给这个节点的边。这就使得经过这个节点时,可选的路径里,不会同时出现0,1,2。自己写了很多次,基本上就卡在不知道如何处理这个答案,导致的MLE这里参考了我前面提到的链接,是我看到最为简洁的解决代码了。2、路径经过这个节点,那么所有经过这个节点的路径得到的未出现的最小值有0,1,2。0即经过1和2的边,1即经过0和2的边,2即经过0和1的边。显然,不论我们如何放置标签,总会有一条路径经过权重为0和1的边,那么最大值中的最小值至少为2。

2025-02-14 12:54:15 221

原创 E. Tree Queries(DFS序)

参考链接说的解题思路很清晰,这里仅作为个人学习的补充。

2025-02-13 00:14:21 183

原创 B. Kay and Snowflake

这里用weight权重数组来标记以u结点为根结点的树的直接子结点所带结点数的最大值。

2025-02-10 21:54:57 164

原创 P2016 战略游戏

这里,题目已经说明,结点编号为从0到n-1,那么我们可以把0结点当成根结点,用dfs自底向上推导,根结点的两个最优解的最小值即为答案。dp[u][0]表示不选择该父结点的最优解,则子结点必选。这里用u表示父结点,用v表示子结点。

2025-02-08 19:55:06 251

原创 P1352 没有上司的舞会

dp[u][0]+=max(dp[v][0],dp[v][1]) //不选择当前结点,则子结点可选可不选。dp[u][1]+=dp[v][0] //选择当前结点,则不选择子结点。注意这个题目,没有说明根结点,我们需要找到根结点。所谓根结点,即没有父结点的结点。对于这里的dp递推公式,结合题目可以得到,这里用u表示父结点,用v表示子结点。

2025-02-07 22:03:22 211

原创 P2127序列排序

最小代价,并不一定是次数越少越好,最小代价的还需要考虑被交换的两个数的大小。当然,交换次数最少,交换的数值最小,肯定是一个理想的最小代价。当二者不能同时满足的时候,我们的就要分类考虑,分别求得满足上述两种情况之一的最小代价,选择最小值即可。此时元素7在位置2,和刚刚的步骤一样,将元素7与最终位置在2的元素交换位置,一直重复这样的操作直到元素7回到它应该在的位置。因为快速排序算法交换的次数在我的认识里,是相对比较少的一个排序算法。这里,我们可以对数组的下标进行操作,来体会这个交换的本质。

2025-02-07 15:30:03 376

原创 P1090【NOIP2004 提高组】合并果子-洛谷

写了一个很朴素的思路,每次都取最小的两堆来合并,把合并的结果,作为新的堆,重新再选最小的两堆合并,n堆,需要合并n-1次,每次合成之后都用sort排序,显然复杂度已经达到O(n2log2n),超时是必然的。当然,我们还可以手搓一个堆排序来实现我们刚才的思路。略显麻烦,但作为知识的补充或是复习,还是可以看看的。思路是不变的,重要的是怎么实现;它的底层逻辑是堆排序,时间复杂度是O(log2n),那么下面的实现时间复杂度就是O(nlog2n).留一个TLE代码,以做提醒。因为这个时候的我没了解过优先队列,,,

2025-01-29 13:56:31 123

原创 P1106删数问题

链接我也放到文章的前头咯~简单来说,遇到高峰,即遇到一个数字,它比左右两边的数都大,或者比右边的数大(特指的是第一个数字),那就删去即可。(这里的erase函数确实是一个很棒的函数)其实这里是一个更妙的方法,来找到了一个最小值。个数字,在前k个数字里找到一个最小的数字,那么这个数字前的数字都可以删去了(这个删去的原因应该很明显吧,欲求的答案是最小的数,那答案的第一个数肯定是越小越好)。一般思路:要想得到的数最小,一个很自然的想法,就是把大数字,且位置靠前的数字删去。返回值是一个布尔值,表示是否删除成功。

2025-01-26 15:24:01 1381

原创 D. Olya and Energy Drinks

直到每一个可到达的位置的最小距离都更新完毕以后,直接输出终点的位置的最短距离以后就可以啦~关于bfs的模板,似乎在每一次出栈都会把出栈的结点的vis置为0,这里略去了,依然没有影响结果,可能会在其他题目有影响,这里留一个小疑惑,以后再说。时间的处理,这里参考了我附在前文的链接的做法。因为刚刚已经说过了,不一定每一步都走k米,但每走一步就会花一秒钟。,要看这段距离中是否有障碍,如果有障碍的话,跨过的距离就应当小于k,或者就不能往这个方向走。注意,这里的一步,是指选择上下左右四个方向中的一个方向来走一步,

2025-01-23 23:01:56 1383

原创 P1144最短路径计数

共 N 行,每行一个非负整数,第 i 行输出从顶点 1 到顶点 i 有多少条不同的最短路,由于答案有可能会很大,你只需要输出 ans \bmod 100003$ 后的结果即可。1 到 5 的最短路有 4 条,分别为 2 条 1-> 2-> 4-> 5 和 2 条 1-> 3-> 4-> 5(由于 4-> 5 的边有 2 条)。问从顶点 $1$ 开始,到其他每个点的最短路有几条。邻接矩阵不能处理重边的情况,这里用vector<int>来替换,对于每条边的输入,直接用push_back追加到每个顶点的尾部。

2025-01-22 22:49:47 355

原创 Multisim仿真实现番茄钟

基于Multisim番茄钟仿真设计

2024-12-22 21:02:13 133

原创 数字系统实验循环显示学号

对于计数器的每个状态,表示一位学号.假设学号是22351234,0000 状态对应2,0001状态对应2,0010对应3,以此类推。将学号每一位都转换成二进制码,这样,输入是八个连续的状态,每一个状态对应一个输出,用卡诺图求得输出的函数表达式,用逻辑器件实现该逻辑表达式。74LS161D计数器为实现模八计数器,在输出段有0111出现时,重新预置数为0;具体的原理,把他们当成一个整体,对于每一个状态到来时,让对应输出为1就行。思路:计数器实现循环,译码器和数码管实现学号输出。方法二:简单,需要一点技巧。

2024-12-02 20:20:09 467

原创 Largest Rectangle in Histogram(直方图求最大矩形面积)

【代码】Largest Rectangle in Histogram(直方图求最大矩形面积)

2024-11-16 19:28:39 338

原创 数字系统实验

一、涉及知识点:简单来说,采样频率为时钟频率的2倍,能呈现出较好的波形。(时钟源100Hz)(调整时钟频率为200Hz,即信号的2倍)~1CLR(clear端,清0)~1PR(不需要异步清零功能,都接高电平,即不需要时候置为1,通常都置为1)

2024-11-07 09:52:51 1515

原创 Problem I. 一颗姜会长多高?

【代码】TLE!

2024-10-26 10:10:26 82

原创 数字系统实验

不要抄作业啊everybody!(一定要自己做!)

2024-10-24 19:56:14 565

原创 E. Compress Words

【代码】E. Compress Words。

2024-10-21 22:07:52 228

原创 1958. 三体·Round - 智子(Easy Version)

【代码】1958. 三体·Round - 智子(Easy Version)

2024-10-06 15:22:05 130 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除