- 博客(34)
- 收藏
- 关注
原创 [GESP202312 六级] 闯关游戏
这道题目使用动态规划(dynamic programming)。dp[i]存储通过第 i 关能够获得的最高分数。先把可以到达的关卡标记好。然后用 for 循环计算 dp[i] 的值。最后用一个 for 循环找到最大的 dp[i] 的值并输出。
2024-05-26 09:16:06
179
原创 B3969 [GESP202403 五级] B-smooth 数
使用埃式筛的方法使的 a[i]=i 的最大质因数。当 i 是质数时,a[i]=0。判断 a[i] 是否 <=B,如果是,ans++。如果 a[i] 是质数,判断 i 是否 <=B。
2024-05-19 20:04:46
240
原创 P2367 语文成绩
方法:差分的思想。本题用暴力大概率不会过。变量:n,p,原数组a[],差分数组d[]。步骤:1.输入n,p2.for循环:输入a[i];求d[i]=a[i]-a[i-1];3.对于第x到y个学生加z分:d[x]+=z;d[y+1]-=z;4.利用前缀和计算a[i]的值:a[i]=d[i]+a[i-1];5.for循环:找到最小值6.输出最小值。
2024-04-06 16:24:00
193
原创 P1719 最大加权矩形
方法:前缀和提示:x1,y1到x2,y2的区间和=sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1].步骤:1.计算每一个坐标的前缀和2.计算每一个x1,y1到x2,y2的区间和:2.1按照以上公式计算2.2将结果与现有的最大结果进行比较,存储最大结果作为ans3.输出ans(最大结果)
2024-04-01 14:07:16
204
原创 P8218 【深进1.例1】求区间和
方法:利用前缀和得到的数据进行简单运算前缀和的计算:用一个一维数组存储,sum[i]就是a[i]的前缀和。把r[i]的前缀和与l[i]-1的前缀和相减,得到结果并输出。
2024-04-01 13:29:08
168
原创 P1294 高手去散步
算法:dfs深搜步骤:1. 输入并存储2. for循环:遍历从每一个景点开始的步数(dfs(景点,0))3. dfs:如果step>最大值,最大值=step;for循环:遍历每一条路线如果该路线行得通:dfs(到达的景点,现在步数+该路线长度);
2024-03-31 21:09:31
133
原创 P1118 [USACO06FEB] Backward Digit Sums G/S
n=3, n=4, n=5...试试把第一行那乱序的1到n个数从左到右编为a, b, c, d, e, f, g... 并且将整个”金字塔“中的数字都用这些字母表示(每一个值都是由上面相邻的两个值之和得到的)。使用next_permutation()函数解决如何得到1到n的数的下一个排列方式的问题。使用next_permutation()的时候一定要用do-while循环。
2024-03-21 21:17:49
224
原创 BFS 广度优先算法
1.一个队列,用来存点的坐标,父结点坐标,和编号信息编号信息仅用于需要知道最短步数,连通块个数等题目父结点坐标仅用于需要输出最短路径等题目。
2024-02-23 21:44:12
335
原创 P1030 [NOIP2001 普及组] 求先序排列,洛谷,C++
#include<bits/stdc++.h>using namespace std;typedef struct node* tree;struct node{ char data; tree left,right;};tree root;string in,last;int k;void buildTree(int L,int R,tree &t){ if(L>R) return; int flag=-1; for(int i=L;i<=R;i
2023-12-31 17:28:47
425
1
原创 1367:查找二叉树(tree_a), 信息学奥赛一本通(C++版)在线评测系统
【代码】1367:查找二叉树(tree_a), 信息学奥赛一本通(C++版)在线评测系统。
2023-12-30 22:00:47
643
1
原创 C++:左移位和右移位
通过以上左移位和右移位的两个例子,我们认识到了这两者之间的共同点和差异。将整数b左移a位(ba),得到的值与b/2a的值取最近整数的整数值相同。
2023-12-03 11:06:33
1690
1
原创 C++:指针
在程序中,每一个变量的存储位置都比一样。但是,我们可以通过一定的语句,来取得数据在内存中的地址。其实,地址也是一种数据。存放地址用的变量类型就是指针变量,也成为指针。指针一般占用八个字节。指针在程序中的定义写程序时,我们到底如何定义指针呢?以上是一个int类型指针的定义,我们不难发现,指针的定义只不过是多了一个“*”号。
2023-11-12 10:48:36
28
1
原创 C++:数组与链表
链表就是用来解决数组有的问题的数据结构。它的每一个元素不一定存储在连续的空间内。数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表的每一个存储单元(类似于一个元素被存放的格子)中会包含两部分:值域和链域。值域就是存储真正的数据的地方。一个存储单元的值域可以有多个不同类型的变量。链域就是存放该元素后下一个元素的地址的空间。因为链表中的元素不一定连续,所以必须用一些空间来存放该元素的下一个元素的地址。
2023-11-05 10:53:08
124
原创 C++:队列
队列,也称queue,是C++中常用的一种线性表。它最大的特点就是队列中元素先进先出(FIFO)的规则。我们最先存入的元素,在输出时,会最先输出。
2023-11-04 22:20:40
36
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人