PTA-L2-025-分而治之-vector-思维
L2-025-分而治之
题目链接:L2-025
解析图问题!!
刚开始是想存储在vector里面,然后如果摧毁i的话,就把对应的vector<i>清空,还有查询别的vector,如果有i的话,则去掉,然后提交了一发,过了两个test,TLE了两个(很明显暴力超时,而且暴力不对)
附上TLE代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172/*2019/3/6 20:42:45 */#include <iostream>#include <vector>#include <cstring>#include <algorithm>using namespace std;int vis[11000];int main(){ ios::sync_with_stdio(false); int ...
PTA-L2-028-vector-思维
L2-028 秀恩爱分得快
题目链接:L2-028
解析分别求出a,b与编号为i(i>0)的人的亲密度va[i],vb[i],还有va,vb的最大值MAXA,MAXB然后进行判断
如果MAXA对应的人是b而且MAXB对应的人是a,那么输出a,b即可
否则,分别按要求输出MAXA对应的人的编号,MAXB对应的人的编号
对于va,vb我们可以用个double数组存储,因为编号有正有负,所以得进行绝对值处理,所以得有另外一个数组g进行标记性别,同时需要注意到0这个点,因为会有+0,-0出现,所以得以字符串的形式输入
存储输入的数据,因为每行的个数都不一样,所以可以开辟一个较大的二维数组,或者用vector,这里选用vector
参考:https://blog.csdn.net/qq1013459920/article/details/86772096
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 ...
chroot方法恢复grub信息
利用Live CD的另外一个方法解决grub rescue方法
开机缺引导日常进grub rescue,除了set set prefix的办法外,还可以利用Live CD进行update-grub命令
从Linux LIve CD启动后,能够通过update-grub chroot到grub分区来解决这个问题
步骤参考:https://askubuntu.com/questions/254491/failed-to-get-canonical-path-of-cow
评论区还有个更好的解决方案,如果这个不行,可以试试那一个
(/dev/sda1用你在grub上安装的任何分区替换下面。所有命令都是root。)
12345678910mkdir /mnt/chrootdirmount /dev/sda1 /mnt/chrootdir#分别用proc dev sys etc bin sbin var usr lib lib64 tmp替代$dir后执行命令mkdir /mnt/chrootdir/$dirmount --bind /$dir /mnt/chrootdir/$dirchro ...
L2-001紧急救援-dijkstra变形-记录路径
L2-001紧急救援
题目L2-001紧急救援
解析123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112/*2019/2/22 17:08:1056ms*/#include <bits/stdc++.h>using namespace std;const int MAXN = 1e3;const int INF = 0X3F3F3F3F;int edge[MAXN][MAXN]; int vis[MAXN] = {0}; int dis[MAXN];int num[MAXN]; //存每个点救援人员数量int path[MAXN]; //存储路径,pat ...
图论之最小生成树
prim算法,kruskal算法,POJ1251入门题目
参考:https://blog.csdn.net/qq_40306845/article/details/81540626
模板题目poj1251—Jungle Roads
题意:给你n个点,右n-1条边,每个边都有一个权值,让你求出最小生成树
题目说明不含重复边
prime
先任意选择一条边(一般直接选择第一条),连接与其相连权值最小的点,然后两个点成为一个集合体。
找这个不在这个集合体里 但是与集合体相连的权值最小的点 与集合体相连,并把该点归入集合体。
重复上一条操作,直到集合体归入了所有的点
时间复杂度
记顶点数v,边数e
邻接矩阵:O(v2) 邻接表:O(elog2v)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374#include <iostrea ...
图论之最短路
Floyd,Dijkstra, Spfa
Dijkstra:适用于权值为非负的图的单源最短路径,用斐波那契堆的复杂度O(E+VlgV)
BellmanFord:适用于权值有负值的图的单源最短路径,并且能够检测负圈,复杂度O(VE)
SPFA:适用于权值有负值,且没有负圈的图的单源最短路径,SPFA的最坏情况应该是O(VE).
Floyd:每对节点之间的最短路径
(E为边个数,V为顶点个数)
其中N表示点数,M表示边数
Floyd 算法虽然总体上时间复杂度较高,但可以处理带负权边的图(但不能有负权回路),并且均摊到每一点对上,在所有的算法中还是属于比较优秀的算法。另外,floyd算法较小的编码复杂度也是一大优势,所以,如果要求的是所有点对间的最短路径,或者如果数据范围较小,则floyd算法比较合适。
Dijkstra算法最大的弊端就是他无法处理带有负权边以及负权回路的图,但是Dijkstra算法具有良好的可扩展性,扩展后可以适应很多问题。另外用堆优化的Dijkstra算法的时间复杂度可以达到O(M log N)。当边有负权,甚至存在负权回路时,需要使用Bellman-for ...
配上模拟的vector
天梯赛练习L1-049 天梯赛座位分配
L1-049 天梯赛座位分配题目题目描述
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位参赛选手。令每校选手排成一列纵队,第 i+1 队的选手排在第 i 队选手之后。从第 1 所学校开始,各校的第 1 位队员顺次入座,然后是各校的第 2 位队员…… 以此类推。如果最后只剩下 1 所学校的队伍还没有分配座位,则需要安排他们的队员隔位就坐。本题就要求你编写程序,自动为各校生成队员的座位号,从 1 开始编号。
输入格式
输入在一行中给出参赛的高校数 N (不超过100的正整数);第二行给出 N 个不超过10的正整数,其中第 i 个数对应第 i 所高校的参赛队伍数,数字间以空格分隔。
输出格式
从第 1 所高校的第 1 支队伍开始,顺次输出队员的座位号。每队占一行,座位号间以 1 个空格分隔,行首尾不得有多余空格。另外,每所高校的第一行按“#X”输出该校的编号X,从 1 开始。
样例1
输入
1233 ...
模拟除法
天梯赛练习L1-046. 整除光棍
L1-046 整除光棍题目123时间限制: 400 ms内存限制: 64 MB代码长度限制: 16 KB
题目描述
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。
提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 —— 比如,程序输入31,那么就输出3584229390681和15,因为31乘以3584229390681的结果是111111111111111,一共15个1。
输入格式
输入在一行中给出一个不以5结尾的正奇数x(<1000)。
输出格式
在一行中输出相应的最小的s和n,其间以1个空格分隔。
样例1
输入
131
输出
135842293 ...
Arch安装配置笔记
整理一下,方便以后安装Arch Linux
刻录u盘略过。。。
检测是否是UEFI启动1ls /sys/firmware/efi/efivars
文件不存在说明不是以UEFI启动
连接WIFI1wifi-menu
然后可以检测连接是否成功
1ping -c 5 www.baidu.com
更新系统时间操作1timedatectl set-ntp true
查看服务状态1timedatectl status
原因
系统时间不对可能造成ssl连接失败导致安装出错
验证软件包签名,确定公钥过期没过期
https证书,也要验过期时间
分区检测分区情况1lsblk
分区1cfdisk /dev/sdx
格式化分区
格式化成ext4
1mkfs.ext4 /dev/sdX2
格式swap分区并激活
12mkswap /dev/sdX3swapon /dev/sdX3
格式化efi分区
1mkfs -t vfat /dev/sdX4
挂载分区
首先将根分区 挂载 到 /mnt
1mount /dev/sdX2 /mnt
(多个分区的情况下可选)
挂载home分区
12 ...
进制的应用
天梯赛练习L1-050 倒数第N个字符串题目123时间限制: 400 ms内存限制: 64 MB代码长度限制: 16 KB
题目描述
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为{ aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。
输入
输入在一行中给出两个正整数 $L(2 ≤ L ≤ 6)$和$N (N≤10^5)$。
输出
在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。
输入样例
13 7417
输出样例
1pat
解析L个字符就是L位的26进制数,告诉我们n是倒数的位置,那么我们求一下正着数的位置,然后将求得的10进制数字转化为26进制(每位26进制用小写的26个字符表示),这样求得的字符串就是外面需要的字符串。
如何求正数呢?
用总数减去倒数的就是正数 ...