• 题意:有\(n\)个数,从中选\(k\)个数累乘,求最大的乘积\((mod\ 10^9+7)\).

  • 题解:

    1.假如全是负数,并且选奇数个,那么从小到大选.

    2.否则,考虑当前状态,假如\(k\)是奇数,那么我们先选一个最大的,然后再选两个最大的正数相乘或者两个负数相乘后最大,每次这样选即可.

  • 代码:

    int n,k;
    ll a[N];
    ll mp[N]; bool cmp(ll x,ll y){
    return abs(x)<abs(y);
    } int main() {
    ios::sync_with_stdio(false);cin.tie(0);
    cin>>n>>k;
    for(int i=1;i<=n;++i){
    cin>>a[i];
    if(a[i]>=0) mp[1]++;
    else mp[2]++;
    }
    int l=1,r=n;
    ll ans=1;
    if(mp[1]==0 && k%2==1){
    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=k;++i){
    ans=a[i]*ans%mod;
    }
    }
    else{
    sort(a+1,a+1+n,greater<int>());
    while(k>0){
    if(k%2==1) ans=ans*a[l++]%mod,m--;
    else if(k>=2){
    if(a[l]*a[l+1]>=a[r]*a[r-1]){
    ans=ans*a[l]%mod*a[l+1]%mod;
    l+=2;
    k-=2;
    }
    else{
    ans=ans*a[r-1]%mod*a[r]%mod;
    r-=2;
    k-=2;
    }
    }
    }
    } cout<<(ans%mod+mod)%mod<<endl; return 0;
    }

最新文章

  1. sqlite like 通配符 ,匹配区分大小写(默认不区分大小写)
  2. java中的负数的问题
  3. 01-C语言概述
  4. openwrt: Makefile 框架分析
  5. sjtu1333 函数时代
  6. C#学习第二天
  7. QThread 与 QObject的关系
  8. Struts 2.x 与Spring4.x整合出现:No mapping found for dependency [type=java.lang.String, name=&#39;actionPackages...
  9. watch命令详解(linux)
  10. 四轴飞行器1.2.2 RT-Thread 串口
  11. web desktop在线演示
  12. [Android]Android SDk Manager中创建模拟器无法选择CPU问题解析
  13. Java多线程打辅助的三个小伙子
  14. Ubuntu下编译SqlCipher以及解密微信数据库EnMicroMsg.db过程和坑
  15. 【4】数独(Sudoku Killer)(深度优先遍历)
  16. VS code 配置为 Python R LaTeX IDE
  17. 匆忙记录 编译linux kernel zImage
  18. NHibernate.3.0.Cookbook第一章第五节Setting up a base entity class
  19. leecode第六十二题(不同路径)
  20. MySQL -- Innodb是如何处理自增列的

热门文章

  1. 分别使用 Python 和 Math.Net 调用优化算法
  2. ctfshow—web—web2
  3. [从源码学设计]蚂蚁金服SOFARegistry之配置信息
  4. 技术基础 | Apache Cassandra 4.0基准测试
  5. Vue中:error &#39;XXXXX&#39; is not defined no-undef解决办法
  6. Java并发组件二之CyclicBarriar
  7. 从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名。
  8. (012)每日SQL学习:TO_CHAR(DATE,FORMAT)
  9. (Sql Server)Soundex语音算法
  10. Centos7 Nginx 安装