1037. Magic Coupon (25)
来源:互联网 发布:棋逢对手 知乎 编辑:程序博客网 时间:2024/06/13 23:37
题目链接:https://www.patest.cn/contests/pat-a-practise/1037
题目大意:给两个数列A和B,A、B中格挑一个元素相乘,一直重复此动作,每个元素只能用一次,把每次的乘积累加,计算所能达到的最大和。
解题思路:
- 先将两个数列排序
- 分别计算所有的负数*负数和正数*正数
- 累加起来
代码如下:
#include <iostream>#include <algorithm>using namespace std;int main(int argc, char const *argv[]){ int nc,np; cin>>nc; int ncnums[nc]; //输入两nc数组 for(int i=0;i<nc;i++){ cin>>ncnums[i]; } cin>>np; //输入np数组 int npnums[np]; for(int i=0;i<np;i++){ cin>>npnums[i]; } //将两个数组排序 sort(ncnums,ncnums+nc); sort(npnums,npnums+np); int res=0,p,q; //先计算所有的负数*负数 for(p=0,q=0;p<nc&&q<np&&ncnums[p]<0&&npnums[q]<0;p++,q++){ res+=ncnums[p]*npnums[q]; } //再计算所有的正数*正数 for(p=nc-1,q=np-1;p>=0&&q>=0&&ncnums[p]>0&&npnums[q]>0;p--,q--){ res+=ncnums[p]*npnums[q]; } cout<<res<<endl; return 0;}
阅读全文
0 0
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- 1037. Magic Coupon (25)
- Java的四种引用方式
- XML和正则表达式
- caffe and c++ compile with g++
- Evensgn 剪树枝
- 输油管道问题
- 1037. Magic Coupon (25)
- poj 3523 uva 3523
- SAP_BW建模第四步之创建转换规则(Transformation)
- Python基础总结(2)
- Summer Training day6 codeforces 593D LCA+并查集
- 安卓工作室 创建java工程 程序
- poj-3050
- 笔试笔记(三)
- 跳棋