
pta
文章平均质量分 51
罚时大师月色
努力让更多小白和我一起共同进步,努力学习Java中!
展开
-
Pay Less, Travel More flord+思维
去解决问题,我们可以发现并不可以直接解决问题,因为一条路径表示为前缀最小值的和,我们可以将题目转化为每一段只用第一条边的最长路径,即我们"加边",把新路径表示为第一条路径*两个点直接所经过最小边数,然后再用这写新边去跑一遍flord即可,时间复杂度。第二遍详细过程可解释为我们点1到点7经过了点1 、2、5、6、7,我们考虑直接用点1和点2之间的边去跑完所有路径,即dist[1][2] * 4是点1到点7的新路径,不难发现这是一个等价问题变换,因为我们正解后缀和一定要比我们当前路径的值小。原创 2023-03-30 20:52:09 · 436 阅读 · 0 评论 -
L3-029 还原文件 (30 分)
链接简单的爆搜,一点剪枝没有。#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std ;const int N = 2e5 + 10 ;const int M = 1e4 + 10 ;const int K = 1e2 + 10 ;int path[K] , l[K] , H[N] ;int h[K][M原创 2022-02-20 18:29:30 · 368 阅读 · 0 评论 -
进阶实验8-2.1 逆散列问题 (30分) 贪心不是最优解 时间复杂度为O(nlogn)的解法
题目链接题意这道题是给出一个散列表,根据散列表逆推出插入的数的最小字典序的排列。我们观察一下散列表,我们就发现每一个数离应该插的位置(x mod key)到放置的当前位置的所有的数一定比这个数先放,然后我们可以得出一个关系,我们假设对每个数都成立这个关系,那么我们可以得到一个有向无环图,然后我们就可以得出拓扑序,是满足该题目要求的序列,题目为了保证唯一性,要求满足要求的最小字典序,所以我们就贪心求最小拓扑序。代码#include <iostream>#include <cstr原创 2021-12-13 22:14:04 · 1441 阅读 · 2 评论 -
7-42 堆栈操作合法性 (20 分) 两种做法(模拟)/ (差分) 差分思维的应用(从0开始详细讲)
题目链接假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。输入格式:输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由S和X构成的序列。序列保证不为空,且长度不超过100。输出格式:对每个序列,在一行中输出YES如果该序列是合法的堆栈操作序列,或NO如果不是原创 2021-10-13 16:52:47 · 515 阅读 · 0 评论 -
7-37 小明打字 (10 分) (数据结构)最简洁的代码写最简单的数据结构
小明正使用Microsoft Word打一篇文档,文档只包含a-z的小写字母和空格,在打字过程中可能会一次或多次按下Home键、End键、←方向键、→方向键、Insert键、Backspace键。请编写程序,给定小明在键盘上按键的序列,输出小明屏幕上最终显示的文本。 提示:Home键会将当前光标移至文本开始位置,End键当前光标移至文本尾,←键和→键会使当前光标左移或右移一个位置(如果光标在文档头则无法左移,光标在文档尾则无法右移),Insert键会在插入和替换文本间切换(默认是插入状态),Backspac原创 2021-10-06 16:03:08 · 1444 阅读 · 3 评论 -
UPC 1336、1351、1353、1631、2655
输入样例121 33 40 73 815 1915 2010 158 186 125 104 142 90输出样例5主要是贪心思想,以结束时间从小到大排序。#include<iostream>#include<algorithm>using namespace std;typedef pair<int,int> PII;#define l first#define r secondconst int N=110;bo.原创 2021-02-07 09:15:36 · 1291 阅读 · 4 评论 -
1020: 密码破译 C语言简单写法,不用switch,小白写法。
作为刚学的小白,我可能会选择采取用switch的方式把字母的对应关系写出来,自从我学了字符串之后,我找到了一个新的表示方法。代码以及注释如下:#include<stdio.h>#include<string.h>int main(void){ int n;char a[1000];int g[30]; char s[30]="IUJTMFHXOKBQEAPZCDWRYNVSGL";//这是题目中给的“密码表”。 scanf("%d",&n); for(int .原创 2020-12-26 12:23:15 · 1003 阅读 · 0 评论 -
1053: 奇数幻方
幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。幻方也是一种汉族传统游戏。在《射雕英雄传》中郭黄二人被裘千仞追到黑龙潭,躲进瑛姑的小屋。瑛姑出了一道题:数字1~9填到三行三列的表格中,要求每行、每列、及两条对角线上的和都相等。这道题难倒了瑛姑十几年,被黄蓉一下子就答出来了。这就是一个最简单的3阶平面幻方。因为幻方的智力性和趣味性,很多游戏和玩具都与幻方有关,如捉放曹操、我们平时玩的六面体,也成为学习编程时的常见问题。对平面幻方的构造,分为三种情.原创 2020-12-25 23:37:03 · 572 阅读 · 0 评论 -
1034 有理数四则运算 (20分)--小白的简单写法C/C++
1034 有理数四则运算 (20分)本题要求编写程序,计算 2 个有理数的和、差、积、商。输入格式:输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。输出格式:分别在 4 行中按照 有理数1 运算符 有理数2 = 结果 的格式顺序输出 2 个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式 k a/b,其中 k 是整数部分,a/b 是最简分数部分;若为负数...原创 2020-12-17 00:21:17 · 837 阅读 · 0 评论 -
1005 继续(3n+1)猜想 (25分)--小白写法(无算法思路清晰)
1005 继续(3n+1)猜想 (25分)卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计...原创 2020-12-16 19:36:02 · 1140 阅读 · 0 评论