欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 7.2总结

7.2总结

2025/5/10 15:20:56 来源:https://blog.csdn.net/2301_80903641/article/details/140136884  浏览:    关键词:7.2总结

今天写了三道题目

给你两个字符串 $$$a$$$ 和 $$$b$$$ ,这两个字符串都由小写拉丁字母组成。

字符串的子串是从原始字符串中删除几个(可能是零)字符后得到的字符串。字符串的子串是该字符串的连续子串。

例如,考虑字符串 abac:

- a、b、c、ab、aa、ac、ba、bc、aba、abc、aac、bac 和 abac 是其子序列;
- a、b、c、ab、ba、ac、aba、bac 和 abac 是它的子串。

你的任务是计算包含 $$$a$$$ 作为子串和 $$$b$$$ 作为子序列的字符串的最小可能长度。

第一思路是子序列在原串中每个字母必然是连续的,可以子串的每个字母若存在于子序列中则是离散的,所以遍历子串每个字母,再在子序列中找到离散的子串元素并记录数量,取遍历后的最大的最大元素个数和,再将a和b相加再减去遍历后的最大的最大元素个数和即为答案

#include<bits/stdc++.h>
#define ll long long
#define max_int 2147483647
#define max_ll 9223372036854775807
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(0);int all;cin>>all;while(all--){string a,b;int longth=0;cin>>a>>b;for(int i=0;i<b.size();++i){int s=i;for(int p=0;p<a.size();++p){if(a[p]==b[s]){s++;}}longth=max(longth,s-i);}cout<<a.size()+b.size()-longth<<endl;}
}

某电影公司发行了 $$$2$$$ 部电影。有 $$$n$$$ 人观看了这些 $$$2$$$ 部电影。我们知道每个人对第一部电影的态度(喜欢、中立或不喜欢)以及对第二部电影的态度。

如果要求某人对电影留下评论,那么

- 如果这个人喜欢这部电影,他就会留下正面评论,这部电影的评分就会增加 $$$1$$$ ;
- 如果此人不喜欢这部电影,则会留下负面评论,电影评分将降低 $$$1$$$ ;
- 否则,他们会留下中性评论,电影评分不会改变。

每个人都会评论一部电影,您可以为每个人选择评论哪部电影。

公司的评分是两部电影评分的最小值。您的任务是计算公司可能获得的最高评分。

易得只有3*3种可能,则每次选择两值中的最大值操作会达到全局最优,不过当两值相同时情况不一样,均为0时不操作,为1或-1时则记录加了多少减了多少,在遍历完成后再判断怎么分配加减事较小值最大

#include <bits/stdc++.h>using namespace std;int main() {int t;cin >> t;while (t--) {int n;cin >> n;vector<int> a(n), b(n);for (auto& x : a) cin >> x;for (auto& x : b) cin >> x;int x = 0, y = 0, neg = 0, pos = 0;for (int i = 0; i < n; ++i) {if (a[i] > b[i]) {x += a[i];} else if (a[i] < b[i]) {y += b[i];} else {neg += (a[i] < 0);pos += (a[i] > 0);}}int ans = -1e9;for (int i = -neg; i <= pos; ++i)ans = max(ans, min(x + i, y + (pos - neg - i)));cout << ans << '\n';}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词