admin管理员组文章数量:1439591
【今日三题】经此一役小红所向无敌(模拟) / 连续子数组最大和(动态规划) / 非对称之美(贪心)
- 经此一役小红所向无敌
代码语言:javascript代码运行次数:0运行复制简单枚举会超时,可以根据题意做一下最大优化,先求出对立和光的血量最多能接收多少次对方的攻击,在判断剩下的最后一次攻击。
#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问题。
#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;
- 如果本身不是回文串,则返回原字符串长度。
#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;
}
本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-04-15,如有侵权请联系 cloudcommunity@tencent 删除优化字符串int动态规划数组本文标签: 今日三题经此一役小红所向无敌(模拟)连续子数组最大和(动态规划)非对称之美(贪心)
版权声明:本文标题:【今日三题】经此一役小红所向无敌(模拟)连续子数组最大和(动态规划)非对称之美(贪心) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1747662931a2739452.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论