C++ sort排序(从小到大,从大到小)
使用 sort() 函数,需要先引入头文件:algorithm。 #include <algorithm>。
sort() 函数的模板:
/**
* @brief Sort the elements of a sequence.
* @ingroup sorting_algorithms
* @param __first An iterator.
* @param __last Another iterator.
* @return Nothing.
*
* Sorts the elements in the range @p [__first,__last) in ascending order,
* such that for each iterator @e i in the range @p [__first,__last-1),
* *(i+1)<*i is false.
*
* The relative ordering of equivalent elements is not preserve ...
Hexo使用SFTP部署到个人服务器
官方文档在这:官方文档
安装依赖
安装 hexo-deployer-sftp。
npm install hexo-deployer-sftp --save
参数
deploy:
type: sftp
host: <host>
user: <user>
pass: <password>
remotePath: [remote path]
port: [port]
privateKey: [path/to/privateKey]
passphrase: [passphrase]
agent: [path/to/agent/socket]
含义:
参数
描述
默认值
host
远程主机的地址。填ip或者域名都可以。必填。
user
远程主机的用户名。必填。
pass
远程主机的密码。可不写,与privateKey二选一。
remotePath
远程主机的目录。
/
port
远程主机的端口。
22
privateKey
本机ssh私钥的目录地址。
passphrase
...
AcWing 3802. 消灭数组
原题链接
题目描述
给定一个长度为 nnn 的数组,如果它不是非降序(非严格单调递增)的,那么就将它的前半部分或后半部分消灭。
不断重复这个消灭一半数组的过程,直至数组变为升序为止。
请问,得以幸存的数组的最大可能长度是多少?
输入格式
第一行包含整数 TTT,表示共有 TTT 组测试数据。
每组数据第一行包含整数 nnn。
第二行包含 nnn 个整数 a1,a2,…,ana_1,a_2,…,a_na1,a2,…,an,表示给定数组。
输出格式
输出幸存数组的最大可能长度。
数据范围
1≤T≤101≤T≤101≤T≤10
1≤n≤161≤n≤161≤n≤16,nnn 保证是 222 的整数次幂。
1≤ai≤1001≤a_i≤1001≤ai≤100
样例
输入样例:
3
4
1 2 2 4
8
11 12 1 2 13 14 3 4
4
7 6 5 4
输出样例:
4
2
1
思路
当当前区间为升序的时候,直接返回当前区间的长度即可。
否则递归求解当前区间的前半段和后半段,取最大值即可。
代码
C++
#include <iostream>
us ...
AcWing 3801. 最佳连续子数组
原题链接
题目描述
给定一个长度为 nnn 的数组 a1,a2,…,ana_1,a_2,…,a_na1,a2,…,an。
请你找到其中的最佳连续子数组。
最佳连续子数组需满足:
子数组内各元素的算术平均数(即所有元素之和除以元素个数)尽可能大。
满足条件 111 的前提下,子数组的长度尽可能长。
输出最佳连续子数组的长度。
输入格式
第一行包含整数 TTT,表示共有 TTT 组测试数据。
每组数据,第一行包含整数 nnn。
第二行包含 nnn 个整数 a1,a2,…,ana_1,a_2,…,a_na1,a2,…,an。
输出格式
每组数据输出一行结果,表示最佳连续子数组的长度。
数据范围
1≤T≤201≤T≤201≤T≤20
1≤n≤1051≤n≤10^51≤n≤105
0≤ai≤1090≤a_i≤10^90≤ai≤109
同一测试点内所有 nnn 的和不超过 10510^5105。
样例
输入样例:
1
5
6 1 6 6 0
输出样例:
2
思路
子数组内各元素的算术平均数(即所有元素之和除以元素个数)尽可能大:其实就是数组的最大值。
...
LeetCode 1646. 获取生成数组中的最大值
原题链接
题目描述
给你一个整数 nnn 。按下述规则生成一个长度为 n+1n + 1n+1 的数组 numsnumsnums :
nums[0]=0nums[0] = 0nums[0]=0
nums[1]=1nums[1] = 1nums[1]=1
当 2≤2∗i≤n2 \le 2 * i \le n2≤2∗i≤n 时,nums[2∗i]=nums[i]nums[2 * i] = nums[i]nums[2∗i]=nums[i]
当 2≤2∗i+1≤n2 \le 2 * i + 1 \le n2≤2∗i+1≤n 时,nums[2∗i+1]=nums[i]+nums[i+1]nums[2 * i + 1] = nums[i] + nums[i + 1]nums[2∗i+1]=nums[i]+nums[i+1]
返回生成数组 numsnumsnums 中的 最大 值。
数据范围
0≤n≤1000 \le n \le 1000≤n≤100
样例
输入样例1:
n = 7
输出样例1:
3
样例1解释:
根据规则:
nums[0]=0nums[0] = 0nu ...
LeetCode 787. K 站中转内最便宜的航班
原题链接
题目描述
有 nnn 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i]=[fromi,toi,pricei]flights[i] = [from_i, to_i, price_i]flights[i]=[fromi,toi,pricei] ,表示该航班都从城市 fromifrom_ifromi 开始,以价格 toito_itoi 抵达 priceiprice_ipricei。
现在给定所有的城市和航班,以及出发城市 src 和目的地 dst,你的任务是找到出一条最多经过 kkk 站中转的路线,使得从 srcsrcsrc 到 dstdstdst 的 价格最便宜 ,并返回该价格。 如果不存在这样的路线,则输出 −1-1−1。
数据范围
1≤n≤1001 \le n \le 1001≤n≤100
0≤flights.length≤(n∗(n−1)/2)0 \le flights.length \le (n * (n - 1) / 2)0≤flights.length≤(n∗(n−1)/2)
flights[i].length == ...
LeetCode 797. 所有可能的路径
原题链接
题目描述
给你一个有 nnn 个节点的 有向无环图(DAG),请你找出所有从节点 000 到节点 n−1n-1n−1 的路径并输出(不要求按特定顺序)
二维数组的第 iii 个数组中的单元都表示有向图中 iii 号节点所能到达的下一些节点,空就是没有下一个结点了。
译者注:有向图是有方向的,即规定了 a→ba→ba→b 你就不能从 b→ab→ab→a 。
数据范围
n == graph.length
2≤n≤152 \le n \le 152≤n≤15
0≤graph[i][j]<n0 \le graph[i][j] < n0≤graph[i][j]<n
graph[i][j]≠igraph[i][j] \not= igraph[i][j]=i(即,不存在自环)
graph[i] 中的所有元素 互不相同
保证输入为 有向无环图(DAG)
样例
输入样例1:
graph = [[1,2],[3],[3],[]]
输出样例1:
[[0,1,3],[0,2,3]]
样例1解释:
有两条路径 0 -> 1 -> 3 和 0 -> ...
LeetCode 1137. 第 N 个泰波那契数
原题链接
题目描述
泰波那契序列 TnT_nTn 定义如下:
T0=0,T1=1,T2=1T_0 = 0, T_1 = 1, T_2 = 1T0=0,T1=1,T2=1,且在 n≥0n \ge 0n≥0 的条件下 Tn+3=Tn+Tn+1+Tn+2Tn+3 = T_n + T_n+1 + T_n+2Tn+3=Tn+Tn+1+Tn+2。
给你整数 nnn,请返回第 nnn 个泰波那契数 TnT_nTn 的值。
数据范围
0<=n<=370 <= n <= 370<=n<=37
答案保证是一个 323232 位整数,即 answer≤231−1answer \le 2^{31} - 1answer≤231−1。
样例
输入样例1:
n = 4
输出样例1:
4
样例1解释:
T3=0+1+1=2T_3 = 0 + 1 + 1 = 2T3=0+1+1=2。
T4=1+1+2=4T_4 = 1 + 1 + 2 = 4T4=1+1+2=4。
输入样例2:
n = 25
输出样例2:
1389537
题意
T0=0,T1=1 ...
试除法判断质数
质数
什么是质数:存在一个数 n (n>1)n \, (n > 1)n(n>1) ,若 nnn 只能被 111 和 nnn 整除,不再有其他的因数,称为质数(素数),否则称为合数。若 n≤1n \le 1n≤1 ,nnn 既不是质数,也不是合数。
判定质数——试除法
从定义出发,枚举每个 i (3≤i≤n−1)i \ (3 \le i \le n - 1)i (3≤i≤n−1) ,若 i∣ni|ni∣n( nnn 能被 iii 整除 n % i=0n \ \% \ i = 0n % i=0),则 nnn 不是质数。时间复杂度是 O(n)O(n)O(n) 的。
如果 d∣nd|nd∣n ( ddd 整除 nnn ) ,那么 nd∣n\frac{n}d|ndn∣n ( nnn 除 ddd 的商也能整除 nnn )的。比如 d=3,n=13d = 3, n = 13d=3,n=13 的时候,333 可以整除 121212 ,123\frac{12}3312 也可以整除 121212 。可以发现 nnn 的约数都是成对出现的,我们在枚举的时候,可以只枚举每一对中较小的那 ...
AcWing 3794. 构造字符串
原题链接
题目描述
给定一个整数 nnn,请你构造一个长度为 nnn 的字符串,要求:
字符串中不含 a,b,c 以外的字符。
字符串中不含长度为 333 的回文子串。
字符串中 c 的数量尽可能少(最好没有)。
输入格式
一个整数 nnn。
输出格式
一个满足条件的字符串。
如果答案不唯一,则输出任意合理方案均可。
数据范围
1≤n≤2×1051≤n≤2×10^51≤n≤2×105。
样例
输入样例1:
2
输出样例1:
aa
输入样例2:
3
输出样例2:
bba
思路
构造一个长度不超过 333 的回文子串,只用 aaa 和 bbb 构建,只要重复 abbaabbaabba 或者 aabbaabbaabb 即可。
代码
C++
#include <iostream>
using namespace std;
int main()
{
string temp = "aabb";
// string temp = 'abba'
int n;
c ...
