- 博客(67)
- 收藏
- 关注
原创 力扣刷题第十三 最大合金数
这样这道题就可以化为一个简单的二分查找问题,查找的判定标准是所有的金属需要的价格与budget比较,如果不超过给定的 budget,那么可以制造 x 块合金,并修改二分查找的左边界。如果所有的机器都需要超过 budget的价格,那么无法制造 x块合金,并修改二分查找的右边界。总共需要 2 * 1 + 2 * 2 + 2 * 3 = 12 的金钱,小于等于预算 15。假设你是一家合金制造公司的老板,你的公司使用多种金属来制造合金。注意,我们最开始时候没有任何一类金属,所以必须买齐所有需要的金属。
2024-01-29 09:57:01 494 1
原创 力扣刷题 第十二 边权重均等查询
第 4 条查询,将边 [0,1]、[1,2]、[2,3] 的权重变更为 2。对于每条查询 queries[i] ,可以证明 answer[i] 是使从 ai 到 bi 的路径中的所有边的权重相等的最小操作次数。对于每条查询 queries[i] ,可以证明 answer[i] 是使从 ai 到 bi 的路径中的所有边的权重相等的最小操作次数。第 1 条查询,从节点 0 到节点 3 的路径中的所有边的权重都是 1。第 2 条查询,从节点 3 到节点 6 的路径中的所有边的权重都是 2。
2024-01-26 17:22:38 816
原创 力扣刷题 第十一天 计算K置位下标对应元素的和
因此,答案为 nums[1] + nums[2] + nums[4] = 13。下标 1、2 和 4 在其二进制表示中都存在 k = 1 个置位。,这些特定元素满足:其对应下标的二进制表示中恰存在。整数的二进制表示中的 1 就是这个整数的。代码:额...,这题我就不写题解了。
2024-01-25 09:26:51 462
原创 力扣刷题第十天 美丽塔 一
解题思路:对山状数组进行分析 ,发现山状数组在最大值前为非递减,最大值后为非递增,枚举遍历数组中每个数字为最大值,记录获得的最大值。- heights 是个山脉数组,峰值在 i = 0 处。- heights 是个山脉数组,峰值在 i = 0 处。13 是所有美丽塔方案中的最大高度和。13 是所有美丽塔方案中的最大高度和。如果以下条件满足,我们称这些塔是。满足以下条件,那么我们称数组。你的任务是在坐标轴上建。
2024-01-24 17:03:22 487
原创 力扣刷题第九天 最长交替子数组
给你一个下标从开始的整数数组nums。如果nums中长度为m的子数组s满足以下条件,我们称它是一个m1s请你返回nums中所有子数组中,最长的长度,如果不存在交替子数组,请你返回-1。子数组是一个数组中一段连续的元素序列。
2024-01-23 10:22:13 418
原创 力扣刷题第八天 最大交换
给定一个非负整数,你可以交换一次数字中的任意两位。返回你能得到的最大值。27367236交换数字2和数字7。99739973不需要交换。
2024-01-22 13:58:58 390
原创 力扣刷题第七天 分割数组的最大值
给定一个非负整数数组nums和一个整数k,你需要将这个数组分成k个非空的连续子数组。设计一个算法使得这k个子数组各自和的最大值最小。
2024-01-22 10:50:34 410
原创 力扣刷题第六天 按分隔符拆分字符串
因此,结果数组为 ["one","two","three","four","five","six"]。"one.two.three" 拆分为 "one", "two", "three""$problem$" 拆分为 "problem"(不包括空字符串)"four.five" 拆分为 "four", "five"因此,结果数组为 ["easy","problem"]。"$easy$" 拆分为 "easy"(不包括空字符串)返回一个由拆分后的新字符串组成的字符串数组,"six" 拆分为 "six"
2024-01-20 14:38:35 371
原创 力扣刷题第五天 使数组和小于等于x的最小时间
对于第 j 个元素,我们可以选择对其进行操作或者不操作,由此可以得到状态转移方程:dp[j][i]=max(dp[j−1][i],dp[j−1][i−1]+nums2[j−1]×i+nums1[j−1])最终结果应为nums1的和加上nums2的和再减去可以消掉的最大数目。第 2 秒,我们对 i = 1 进行操作,得到 nums1 = [0+1,0,6+3] = [1,0,9]。第 3 秒,我们对 i = 2 进行操作,得到 nums1 = [1+1,0+2,0] = [2,2,0]。
2024-01-19 15:48:23 452
原创 力扣刷题第四天 拿出最少数目的魔法豆
总共拿出了 1 + 2 + 1 = 4 个魔法豆,剩下非空袋子中魔法豆的数目相等。总共拿出了 2 + 2 + 3 = 7 个魔法豆,剩下非空袋子中魔法豆的数目相等。- 然后我们从另一个有 2 个魔法豆的袋子中拿出 2 个魔法豆。- 我们从有 2 个魔法豆的其中一个袋子中拿出 2 个魔法豆。- 然后我们从有 6 个魔法豆的袋子中拿出 2 个魔法豆。- 然后我们从有 5 个魔法豆的袋子中拿出 1 个魔法豆。- 然后我们从有 3 个魔法豆的袋子中拿出 3 个魔法豆。剩下袋子中魔法豆的数目为:[4,0,4,
2024-01-18 14:29:33 349
原创 力扣刷题第三天 最大字符串配对数目
二重循环,枚举给定的数组 words 中的 words[i] 和 words[j]是否可以匹配。借助哈希集合,使用vector和set容器解决问题。注意,每个字符串最多匹配一次。
2024-01-17 14:17:14 524
原创 力扣刷题第二天 统计整数数目(每天一题)
通常 x 可以取 0∼9 中的任意一个数字,但当第 n−1 位到第 i+1 位放置的数字都与 num 一样时,x 的取值范围缩小至 0∼num[i],在代码中,当 limit 为 true 时,表示这一特殊情况发生。= −1,则直接返回 d[i][j],否则在 0∼9 范围内遍历 x,并递归调用 dfs(i−1,j+x,false),统计所有返回值的和并更新 d[i][j]。需要注意的是,由于上文中第 n−1 位表示数字的最高位,第 0 位表示数字的最低位(即个位),因此需要将题目中输入的数字翻转。
2024-01-16 14:28:07 906
原创 力扣刷题第一天 删除排序链表中的重复元素 II
思路:首先链表已经按升序排列,因此重复的元素在链表中出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。如果当前 cur.next与 cur.next.next对应的元素相同,那么我们就需要将 cur.next以及所有后面拥有相同元素值的链表节点全部删除。如果当前 cur.next 与 cur.next.next对应的元素不相同,那么说明链表中只有一个元素值为 cur.next的节点,那么我们就可以将 cur指向 cur.next。输入:head = [1,2,3,3,4,4,5]
2024-01-15 15:59:53 428
原创 【无标题】
#include <iostream>using namespace std;int main(){ int n,k; scanf("%d",&n); int J[n]; int money[n]; for(int i=0; i<n; i++) scanf("%d",&J[i]); money[0] = 1 ; for ( int i = 0; i < n - 1; i++ ) {
2021-12-10 11:16:21 408
原创 L2-024 部落 (25 分)
L2-024 部落 (25 分)在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。输入格式:输入在第一行给出一个正整数N(≤104 ),是已知小圈子的个数。随后N行,每行按下列格式给出一个小圈子里的人:K P[1] P[2] ⋯ P[K]其中K是小圈子里的人数,P[i](i=1,⋯,K)是小圈子里每个人的编号。这里所有人的编号从1
2021-04-19 20:16:54 104
原创 图着色问题 (25 分)
图着色问题 (25 分)图着色问题是一个著名的NP完全问题。给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。输入格式:输入在第一行给出3个整数V(0<V≤500)、E(≥0)和K(0<K≤V),分别是无向图的顶点数、边数、以及颜色数。顶点和颜色都从1到V编号。随后E行,每行给出一条边的两个端点的编号。在图的信息给出之后,给出了一个
2021-04-19 19:59:27 358
原创 悄悄关注 (25 分)
悄悄关注 (25 分)新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。输入格式:输入首先在第一行给出某用户的关注列表,格式如下:人数N 用户1 用户2 …… 用户N其中N是不超过5000的正整数,每个用户i(i=1, …, N)是被其关注的用户的ID,是长度为4位的由数字和英文字母组成的字符串,各项间以空格分隔。之后给出该
2021-04-12 16:58:37 229
原创 是否完全二叉搜索树 (30 分)
是否完全二叉搜索树 (30 分)将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。输入格式:输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。输出格式:将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。输入样例1:938
2021-04-05 16:28:56 345
转载 L2-014 列车调度 (25分)
必须要⻋号⼤的先出,⼩的后出。所以列⻋排队的每⼀队必须是从⼤到⼩排列(从右往左看),才能保证开出去的⻋也是从⼤到⼩的。对于每⼀个想要进⼊并列铁轨的⻋,如果⻋号⼤于每⼀ 队的队尾的⻋号,说明不能进⼊已经有的队伍,必须进⼊新的铁轨,否则,选择⼀个最接近它⻋号的 尾部⻋号的队伍进⼊。其实⽆需保存每⼀个并⾏队列的所有值,只需要保存当前队伍的⻋尾(就是每 ⼀列最左边 即 每⼀列的最⼩值)即可,因为每⼀次都是需要排序⽐较⼤⼩的,所以⽤ set ⾃动排序, ⾸先把 set ⾥⾯放⼊⼀个 0 值。每⼀次
2021-04-05 15:05:08 113
原创 敲笨钟 (20 分)
敲笨钟 (20 分)微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”。例如唐代诗人李贺有名句曰:“寻章摘句老雕虫,晓月当帘挂玉弓”,其中“虫”(chong)和“弓”(gong)都压了“ong”韵。于是这句诗就被糟改为“寻章摘句老雕虫,晓月当帘敲笨钟”。现在给你一大堆古诗词句,要求你写个程序自动将压“ong”韵的句子糟改成“敲笨钟”。输入格式:输入首先在第一行给
2021-03-31 20:12:11 152
转载 冰岛人 (25 分)
冰岛人 (25 分)018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下:iceland.JPG冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加 sson,女儿则加 sdottir。因为冰岛人口较少,为避免近亲繁衍,本地人交往前先用个 App 查一下两人祖宗若干代有无联系。本题就请你实现这个 App 的功能。输入格式:输入首先在第一行给出一个正整数 N(1<N≤105 ),
2021-03-27 21:02:36 475
原创 特立独行的幸福 (25 分)
特立独行的幸福 (25 分)对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100 的幸福是依附于 19 的。而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的;其独立性就
2021-03-27 19:56:12 1816 1
原创 排座位 (25 分)
排座位 (25 分)布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。输入格式:输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1 宾客2 关系,其中关系为1表示是朋友,-1表示是死对头。注意两个人不可能既是朋友又是敌人。最后K行,每
2021-03-26 20:40:27 184
原创 畅通工程之局部最小花费问题 (35 分)
畅通工程之局部最小花费问题 (35 分)7-4 畅通工程之局部最小花费问题 (35 分)某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。输入格式:输入的第一行给出村庄数目N (1≤N≤100);随后的N(N−1)
2021-03-26 19:55:53 129
原创 7-3 地下迷宫探索 (30 分)
7-3 地下迷宫探索 (30 分)地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式。地道网是房连房、街连街、村连村的地下工事,如下图所示。我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智。在现在和平发展的年代,对多数人来说,探索地下通道或许只是一种娱乐或者益智的游戏。本实验案例以探索地下通道迷宫作为内容。假设有一个地下通道迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关。请问你如何从某个起点开始在迷宫中点亮所有的灯并回到起点?
2021-03-26 18:57:22 290
原创 BFS算法小结
模拟BFSvoid bfs(int i,int n){ int a[100],x=-1,y=-1,v; a[++x]=1=i; vis[i]=1; while(1) { if(x==y) break; v=a[++y]; printf(); for(int j=0;j<n;j++) { if(vis[j]==0&&m
2021-03-25 20:22:12 58
原创 PAT最短路专题
R7-2 旅游规划#include <bits/stdc++.h>using namespace std;int n,m,s,d;const int maxn=550;int city[maxn][maxn],save[maxn],money[maxn][maxn];int num[maxn],cnt[maxn],Mon[maxn];int dis[maxn];int vis[maxn]={0};const int inf=0x3f3f3f3f;void dijkstra(
2021-03-19 19:06:42 207
原创 SDUT 2021 Spring Individual Contest - C
B - Unlucky TeacherAli is a teacher in one of Kuwait universities. Last week he made a multi-choice test for his students. After the test, he marked some papers before collecting all papers and going home. However, he discovered that he forgot the solutio
2021-03-17 16:11:42 147
原创 SDUTACM春季集训选拔赛(19级)
7-6 链表去重 (25 分)#include <bits/stdc++.h>using namespace std;struct node{ int address,data,next;};int main(){ int st,n; cin>>st>>n; map<int,node>mp; int address,data,next; for(int i=0;i<n;i++) {
2021-03-14 09:14:57 159
原创 二叉树遍历
1.前序,中序,后序遍历递归算法struct node{ int data; struct node *l; struct node *r;};(1)前序void PreOrderTraverse(struct node *root){ if(root==NULL) { return; } printf("%c",root->data);//注意数据类型 PreOrderTraverse(root->
2021-03-13 09:58:13 63
原创 2021-02-22
A - Block Game#include<bits/stdc++.h>using namespace std;typedef long long ll;void bo1(ll a, ll b, ll sum){ if((a % b == 0) || (a/b >= 2)) { cout << "win" <<endl; return; } else while(b!=1)
2021-02-22 21:02:32 104
原创 Maze Connect
Maze ConnectGiven an orthogonal maze rotated 45 degrees and drawn with ASCII forward and backward slashcharacters (see below), determine the minimum number of walls that need to be removed to ensure it ispossible to escape out of the (possibly disconnec
2021-01-22 11:36:30 184
原创 L - Timsort Gym - 102059L
标题L - Timsort Gym#include<bits/stdc++.h>#define INF 0x3f3f3f3ftypedef long long ll;using namespace std; const int maxn=1e5+5; struct node{ int v1=0,v2=0;}ans[maxn];int a[maxn];int c1[maxn],c2[maxn],c[maxn];int n,q; int main(){ scanf
2020-12-05 21:35:00 115
原创 天梯赛L2-家庭房产
L2-007 家庭房产 (25分)#include<bits/stdc++.h>using namespace std;struct Data{ int id,fid,mid,num,area;//个人编号,父编号,母编号,房产数,房产面积 int cid[10];//子编号}data[1005];//个人struct node{ int id,people; double num,area; bool flag=false;//证明家族存在
2020-11-21 14:45:09 169
原创 2020-10-26
KMP算法void Getnext(int next[],String t){ int j=0,k=-1; next[0]=-1; while(j<t.length-1) { if(k == -1 || t[j] == t[k]) { j++;k++; next[j] = k; } else k = next[k];//此语句是这段代码最反人类的地方,如果你一下子就能看懂,那么请允许我称呼你
2020-10-26 20:57:55 49
转载 2020-10-26
二叉树前序、中序、后序遍历非递归写法的透彻解析前言在前两篇文章二叉树和二叉搜索树中已经涉及到了二叉树的三种遍历。递归写法,只要理解思想,几行代码。可是非递归写法却很不容易。这里特地总结下,透彻解析它们的非递归写法。其中,中序遍历的非递归写法最简单,后序遍历最难。我们的讨论基础是这样的://Binary Tree Nodetypedef struct node{ int data; struct node* lchild; //左孩子 struct node* rchild; //右孩子
2020-10-26 20:51:17 73
原创 中序非递归算法
中序非递归算法首先我们初始化一个栈,让根指针进栈。因为是中序遍历,所以我们首先要找到树的最左边结点,代码标记1完成的就是这个任务。那么代码标记1循环停止的条件不满足时,这个时候GetTop(S,p)得到的指针p是空的,因为到达最左边了,p->lchild是空,故我们需要把这个进栈的空指针给Pop掉,这是代码标记2的作用。 下面是关键一步了,我们需要访问当前栈顶结点了。Pop(S,p)删除栈顶结点并赋给p,然后Visit函数代表我们要对这个结点进行的 操作,这是代码标记4的作用。至于代码标记5就
2020-10-26 20:06:16 490
原创 L1-025 正整数A+B(简单法)
求指教哪里错了?#include<iostream>#include<string>#include<bits/stdc++.h>using namespace std;int cha(char *str){ int sum=0; for(int i=0; str[i]!='\0'; i++) { if(str[i]>='0'&&str[i]<='9') {
2020-09-19 19:59:25 156
原创 天梯赛L1(c//c++)星炎
L1-002 打印沙漏 (20分)关键在于如何计算沙漏的总高度。假设沙漏总共有 H 行(根据题目要求,H 一定是奇数),我们观察 H+12 行到 H 行(共 H+12 行),符号个数为 1+3+5+⋯+H=(H+12)2 个,整个图形的符号个数即为 2(H+12)2−1=n 个,那么 H=2n+12−−−√−1。我们需要找到一定的 N 下最大的 H 值,即 Hmax=2⌊N+12−−−−√⌋−1,之后按要求输出即可。Ps.每行的 * 后没有多余空格#include<iostream>
2020-09-11 21:23:33 123
原创 PTA-排序专题
7-3 奥运排行榜 (25分)#include<iostream>#include<bits/stdc++.h>#include<algorithm>using namespace std;struct node{ int gold,medal,people; double x,y;}s[100010];int main(){ int N,M,i,j,minn=255,index=0; scanf("%d%d",&am
2020-09-10 21:33:50 730
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人