zoukankan      html  css  js  c++  java
  • [haoi2009]巧克力

             鉴于河南是oi弱省,所以想来这道题也没什么人会翻出来写吧,而且这还是haoi2009的一道简单题目,所以估计也没几个人会写博客的,那么看在我这么弱的份上,我觉得是应该写一篇出来的。

             这道题我是按照贪心写的(毕竟被划在贪心题中了),解题思想在于从大到小排列所有代价,别管是横着还是竖着,都是要排的,但横竖又是必不可少的,所以我们用一个结构体来记录代价和这个代价到底是横着切的还是竖着切的。用一个数组c[2]来分别记录横着切了几次和竖着切了几次,然后就是相乘后累加,关于这个,建议还是推一遍样例为好。

     

     

    下面发代码:

    #include <iostream>

    #include <iomanip>

    #include <cmath>

    #include <cstdio>

    #include <algorithm>

    #include <cstring>

    #include <ctime>

    #include <functional>

    using namespace std;

    int n,m,i,ans;

    int c[2];

    struct lp

    {

             int v;

             int c;

    }a[20086];

    bool cmp(lp a,lp b)

    {return a.v>b.v;}

    int main()

    {

             cin>>n>>m;

             n--;m--;

             memset(c,0,sizeof(c));

             for(i=1;i<=n;i++)

             {cin>>a[i].v,a[i].c=0;}

             for(i=n+1;i<=n+m;i++)

             {cin>>a[i].v,a[i].c=1;}

             sort(a+1,a+n+m+1,cmp);

             for (i=1;i<=n+m;i++)

             {

                       c[a[i].c]++;

                       if(a[i].c==0)

                                ans+=a[i].v*(c[1]+1);

                       if(a[i].c==1)

                                ans+=a[i].v*(c[0]+1);

             }

             cout<<ans<<endl;

             return 0;

    }

  • 相关阅读:
    14、流程分析法
    13、场景法
    SPL之Iterator(迭代器)接口
    MySQL的自动补全和语法高亮工具MyCli
    如何在mmseg3添加词库
    sphinx 配置文件全解析
    配置samba 服务器 共享Linux目录
    Centos7 下coreseek的安装
    机器学习常用的降维方法
    mysql 分类
  • 原文地址:https://www.cnblogs.com/ywjblog/p/7596491.html
Copyright © 2011-2022 走看看