蓝桥杯[省赛][B组]-乘积最大
2022-04-05 22:37 幻霞 阅读(63) 评论(0) 编辑 收藏 举报题目来自蓝桥杯练习系统
这一题存在一个组合C(k,n),选择的就是组合中的其中一个,如果一个条件一个条件的考虑的话非常麻烦,比赛时也会浪费大量时间,实在想不出思路的话可以去暴力拿一些分
#include<bits/stdc++.h> #include<map> #include<queue> #include<stdlib.h> #include<algorithm> using namespace std; int n,k; int num[100005]; queue<int> z; queue<int> f; int main() { ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>n>>k; for(int i=0; i<n; i++) { cin>>num[i]; } sort(num,num+n); long long maxAns=LLONG_MIN; long long cur; while(next_permutation(num,num+n)) { cur=1; for(int i=0; i<k; i++) { cur*=num[i]; } maxAns=max(maxAns,cur); } cout<<(maxAns>0?maxAns%1000000009:-(-maxAns%1000000009)); return 0; }
升序排序,然后运用algorithm库中的next_permutation函数去获得下一个全排列,每次得到前k个再累乘,就可以拿到40分(思考一下怎么剪枝也许可以拿更多分)
这40分几乎是一半了,而且是毫无疑问能拿到的,如果时间不够充沛可以这样骗一波分,总比没有好。
当然,想要更多的分还是必须去思考如何求解的。
这里笔者去认真学习了一番:https://blog.csdn.net/weixin_52797843/article/details/122371558?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6.pc_relevant_default&utm_relevant_index=12
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long LL; const int N = 100010, mod = 1000000009; int n, k; int a[N]; int main() { ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>n>>k; for(int i=0; i<n; i++) cin>>a[i]; sort(a,a+n); int res=1; int l=0,r=n-1;//左右下标 int sign=1; if(k%2) { //如果k是奇数,先把奇数转化为偶数 // 这边res取得是最大值,一般是正数(通常情况下最大值一定要取) res=a[r--]; k--; // 如果res小于0,就说明全是负数,这个时候颠倒判断符号取最大值(如果是奇数又全为负数必然结果是负数) if(res<0) sign=-1; } //k是偶数,每次从左选两个,从右选两个,比较大小 while(k) { LL x=(LL)a[l]*a[l+1],y=(LL)a[r-1]*a[r]; // 如果k原本就是偶数 if(x*sign>y*sign) { res=x%mod*res%mod; l+=2; } else { res=y%mod*res%mod; r-=2; } k-=2; } cout<<res; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理