一.牛牛的快递
https://www.nowcoder.com/practice/41b42e7b3c3547e3acf8e90c41d98270?tpId=290&tqId=39852&ru=/exam/oj

cpp
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a;
char b;
cin >> a >> b;
int ret = 0;
if (a <= 1)
{
ret += 20;
}
else
{
ret += 20;
a -= 1;
ret += ceil(a);
}
if (b == 'y') ret += 5;
cout << ret << endl;
return 0;
}
二.最小花费爬楼梯
https://www.nowcoder.com/practice/9b969a3ec20149e3b870b256ad40844e?tpId=230&tqId=39751&ru=/exam/oj

cpp
//楼顶在最后一个数组的后一个位置
//dp[i]表示到达i位置的最小花费(不计算当前位置的cost[i])
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int cost[N];
int n;
int dp[N];
int main() {
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> cost[i];
}
for (int i = 2; i <= n; i++)
{
dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
}
cout << dp[n] << endl;
return 0;
}
三.数组中两个字符串的最⼩距离
https://www.nowcoder.com/questionTerminal/2c6a0a8e1d20492f92941400036e0890

cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int n;
string s1, s2;
string s;
cin >> n;
cin >> s1 >> s2;
int prev1 = -1, prev2 = -1, ret = 0x3f3f3f3f;
for (int i = 0; i < n; i++)
{
cin >> s;
if (s == s1) // 去前面找最近的 s2
{
if (prev2 != -1)
{
ret = min(ret, i - prev2);
}
prev1 = i;
}
else if (s == s2) // 去前面找 s1
{
if (prev1 != -1)
{
ret = min(ret, i - prev1);
}
prev2 = i;
}
}
if (ret == 0x3f3f3f3f) cout << -1 << endl;
else cout << ret << endl;
return 0;
}