【今日三题】经此一役小红所向无敌(模拟) / 连续子数组最大和(动态规划) / 非对称之美(贪心)

⭐️个人主页:@小羊 ⭐️所属专栏:每日两三题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

目录


经此一役小红所向无敌(模拟)

简单枚举会超时,可以根据题意做一下最大优化,先求出对立和光的血量最多能接收多少次对方的攻击,在判断剩下的最后一次攻击。

cpp 复制代码
#include <iostream>
using namespace std;

using ll = long long;

int main()
{
    ll a, h, b, k;
    cin >> a >> h >> b >> k;
    ll res = 0;
    int cnt = min(h / b, k / a);
    res += (a + b) * cnt;
    h -= cnt * b;
    k -= cnt * a;
    if (h > 0 && k > 0)
    {
        res += a + b;
        // 这次减完后必然至少有一方死亡
        h -= b;
        k -= a;
    }
    if (h > 0 || k > 0)
        res += 10 * (h > 0 ? a : b);
    cout << res << endl;
    return 0;
}

连续子数组最大和(动态规划)

经典线性dp问题。

cpp 复制代码
#include <iostream>
using namespace std;

const int N = 2e5 + 10;
int dp[N];
int res = -0x3f3f3f3f;

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) 
    {
        int x; cin >> x;
        dp[i] = max(dp[i - 1], 0) + x;
        res = max(res, dp[i]);
    }
    cout << res << endl;
    return 0;
}

非对称之美(贪心)

  • 如果字符串是回文串,并且不是由同一个字符组成,则最长非回文串就是把原回文串左右任意删去一个字符;
  • 如果是回文串且所有字符相同,则答案为0;
  • 如果本身不是回文串,则返回原字符串长度。
cpp 复制代码
#include <iostream>
using namespace std;

int main()
{
    string s;
    cin >> s;
    int n = s.size();
    int l = 0, r = n - 1;
    while (s[l] == s[r]) l++, r--;
    if (l >= r) // 是回文串
    {
        // 判断所有字符是否都相同
        int flag = 1;
        for (auto ch : s)
        {
            if (s[0] != ch)
            {
                flag = 0;
                break;
            }
        }
        if (flag) cout << 0 << endl;
        else cout << n - 1 << endl;
    }
    else cout << n << endl;
    return 0;
}

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

相关推荐
kisshyshy1 小时前
从递归到迭代,一文吃透二叉树的核心知识与 JavaScript 实现
javascript·算法·代码规范
To_OC12 小时前
LC 49 字母异位词分组:想到哈希表很简单,选对 key 才是精髓
javascript·算法·leetcode
用户9385156350717 小时前
从 O(n²) 到 O(nlogn):一文读懂快速排序的“快”与“妙”
javascript·算法
To_OC18 小时前
手写快排次次翻车?别死背快排模板了,这才是面试官想听的底层逻辑
javascript·算法·排序算法
饼干哥哥19 小时前
Reddit VOC调研太慢?搭一个AI专家团队半小时洞察任何品类|以猫用饮水机为例
人工智能·算法·ai编程
地平线开发者20 小时前
Transformer模型部署之性能优化指南
算法
地平线开发者20 小时前
人在途中:从“编译失败”到“模型可落地”——CUDA 自定义算子
算法·自动驾驶
半个落月1 天前
从递归到快速排序:用 JavaScript 把分治思想讲明白
javascript·算法·面试
小月土星1 天前
JavaScript 快速排序:从 pivot、双指针到分治思想
javascript·算法·面试
小月土星1 天前
JavaScript 递归入门:从 1 到 n 求和,再到数组扁平化
javascript·算法·面试