牛客春招刷题训练营 - 3.11题解 | C++

活动地址: 牛客春招刷题训练营 - 编程打卡活动

简单题:字符串分隔

可以考虑一个字符一个字符地输出,,每输出8个字符就输出一个回车。这一点可以用一个累加器来实现,累加器是8的倍数的时候就输出回车。

最后累加器如果不是8的倍数,就输出0,直到变为8的倍数。

#include <iostream>
using namespace std;

int main() {
    string s;
    cin >> s;
    int tot = 0;
    for(char c: s) {
        cout << c;
        tot ++;
        if(tot % 8 == 0) {
            cout << endl;
        }
    }
    while(tot % 8 != 0) {
        cout << 0;
        tot ++;
    }
    return 0;
}

中等题:质数因子

分解质因数的模板,准备春招的uu们可以记一下。

复杂度是O(√N)

#include <iostream>
#include <vector>
using namespace std;
vector<pair<int, int>> div(int n)
{
	vector<pair<int, int>> res;
	for(int i=2; i<=n/i; i++)
	if(n%i == 0) {
		int cnt = 0;
		while(n%i == 0) n/=i, cnt++;
		res.emplace_back(i, cnt);
	}
	if(n > 1) res.emplace_back(n, 1);
	return res;
}
int main() {
    int n;
    cin >>n;
    auto d = div(n);
    for(auto [x, y]: d)
        for(int i=1; i<=y; i++)
            cout << x << " ";
  	return 0;
}

困难题:合唱队

最长上升子序列DP模型

要使得出列的同学最少,就要找一个最长的^形序列。

我们用 up[i] 记录以 a[i] 结尾的最长上升子序列,down[i] 记录以 a[i] 开头的最长下降子序列。

最后打一遍擂台,求出max{up[i] + down[i]}就是答案。

然后查看题目n的范围是 [1, 3000],用N^2复杂度的求法求最长上升子序列即可。

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> a(n+1);
    for(int i=1; i<=n; i++)
        cin >> a[i];
    vector<int> up(n+1, 1), down(n+1, 1);
    for(int i=1; i<=n; i++) {
        for(int j=1; j<i; j++) {
            if(a[j] < a[i]) {
                up[i] = max(up[i], up[j]+1);
            }
        }
    }
    for(int i=n; i>=1; i--) {
        for(int j=i+1; j<=n; j++) {
            if(a[j] < a[i]) {
                down[i] = max(down[i], down[j]+1);
            }
        }
    }
    int res = 0;
    for(int i=1; i<=n; i++) {
        res = max(res, up[i]+down[i]-1);
    }
    cout << n - res << endl;
    return 0;
}

#牛客春招刷题训练营#
全部评论

相关推荐

昨天 10:10
已编辑
门头沟学院 人工智能
写这篇之前我犹豫了挺久。一方面是怕被人骂,&quot;又一个收割焦虑的转行帖&quot;;另一方面是看了太多用&nbsp;GPT&nbsp;套娃出来的「学习路线」文章,AI&nbsp;味重得让人没法读完。所以这篇全是亲身踩过的坑,时间线、用过的项目、当时的心路全都尽量原样写出来。如果你是大学生在迷茫要不要转&nbsp;AI,或者已经在转的路上,希望能给点参考。&nbsp;一个反共识的开场:你以为进&nbsp;OpenAI&nbsp;的人都是博士?&nbsp;先讲个故事,跟我没关系,但跟所有想转&nbsp;AI&nbsp;的人都有关系。&nbsp;OpenAI&nbsp;的&nbsp;Sora&nbsp;团队(就是搞文生视频那个)一共&nbsp;13&nbsp;个人。这里面有两个人特别有意思:&nbsp;Will&nbsp;DePue,密歇根大学计算机系,直接辍学了。17...
_hengheng:我也本,也算是做ai相关,我最开始感觉做ai工程师有多么多么困难,后来发现懂了原理后整体训练完全可以看成一个流程化的内容,开源方案太多了,大多基本都是按着模子在自家业务上做各种操作,就算是大厂的小部门也没那么多资源去训基模,反而更多的是像怎么把技术往业务方向靠近了,不过当前时代如果本科学历没那么好加上自己执行力不是特别强还真不建议走ai工程师这条路,可以试试其他ai的偏业务方向,不然校招不太好杀出来
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务