zoukankan      html  css  js  c++  java
  • 牛客网 牛客练习赛7 B.购物-STL(priority_queue)

    B.购物

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 32768K,其他语言65536K
    64bit IO Format: %lld

    题目描述

    在遥远的东方,有一家糖果专卖店
     
    这家糖果店将会在每天出售一些糖果,它每天都会生产出m个糖果,第i天的第j个糖果价格为C[i][j]元
     
    现在的你想要在接下来的n天去糖果店进行选购,你每天可以买多个糖果,也可以选择不买糖果,但是最多买m个。(因为最多只生产m个)买来糖果以后,你可以选择吃掉糖果或者留着之后再吃。糖果不会过期,你需要保证这n天中每天你都能吃到至少一个糖果。
    这家店的老板看你经常去光顾这家店,感到非常生气。(因为他不能好好睡觉了)于是他会额外的要求你支付点钱。具体来说,你在某一天购买了 k 个糖果,那么你在这一天需要额外支付 k2 的费用。

    那么问题来了,你最少需要多少钱才能达成自己的目的呢?

    输入描述:

    第一行两个正整数n和m,分别表示天数以及糖果店每天生产的糖果数量。
    接下来n行(第2行到第n+1行),每行m个正整数,第x+1行的第y个正整数表示第x天的第y个糖果的费用。

    输出描述:

    输出只有一个正整数,表示你需要支付的最小费用。
    示例1

    输入

    3 2 
    1 1
    100 100 
    10000 10000

    输出

    107
    示例2

    输入

    5 5
    1 2 3 4 5
    2 3 4 5 1 
    3 4 5 1 2 
    4 5 1 2 3 
    5 1 2 3 4

    输出

    10

    备注:

    对于100%的数据,1 ≤ n, m ≤ 300 , 所有输入的数均 ≤ 10^6。
     
     
     
    代码:
     1 #include<cstring>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cmath>
     5 #include<iostream>
     6 #include<queue>
     7 using namespace std;
     8 typedef long long ll;
     9 const int N=1e4+10;
    10 int a[N][N];
    11 priority_queue<int,vector<int>,greater<int> >gg;
    12 int main(){
    13     int n,m;
    14     ll ans;
    15     while(cin>>n>>m){
    16         for(int i=1;i<=n;i++)
    17             for(int j=1;j<=m;j++)
    18             cin>>a[i][j];
    19         for(int i=1;i<=n;i++)
    20             sort(a[i]+1,a[i]+1+m);
    21         for(int i=1;i<=n;i++){
    22             int cnt=1;
    23             for(int j=1;j<=m;j++){
    24                 a[i][j]+=cnt;
    25                 cnt+=2;
    26             }
    27         }
    28         ans=0;
    29         for(int j=1;j<=m;j++)
    30             gg.push(a[1][j]);
    31         ans+=gg.top();
    32         gg.pop();
    33         for(int i=2;i<=n;i++){
    34             for(int j=1;j<=m;j++)
    35                 gg.push(a[i][j]);
    36             ans+=gg.top();
    37             gg.pop();
    38         }
    39         cout<<ans;
    40     }
    41     return 0;
    42 }

    一开始二维数组排序的通过了90%的数据,应该是卡在一组很大的数上了。

    溜啦溜啦,还有一道珂朵莉的数列的树状数组+大数(高精度)没写出来,补题补题。

  • 相关阅读:
    window.fonts
    smpt authentification 配置
    如何从思维上应对
    中文字体 英文字体
    Path Breadcrumbs
    drupal commerce app
    做视频或者什么模块开发之类的
    分页符 箭头 难看
    theme wrapper 例子
    background position 稍微深入
  • 原文地址:https://www.cnblogs.com/ZERO-/p/9695383.html
Copyright © 2011-2022 走看看