zoukankan      html  css  js  c++  java
  • YbtOj练习:贪心 1最大积分

    http://noip.ybtoj.com.cn/contest/12/problem/1

     这道题的题意描述有问题。。。。问题很大,导致我WA了无数次。

     如果看这句话很容易就会理解错。

     在我WA了n次之后看到了这两个字,哦豁,原来这里的意思是当你在第i级时,如果买的总件数达到了t[i],那么就可以升级。

    #include<bits/stdc++.h>
    using namespace std;
    typedef unsigned long long ull;
    const int N=105;
    ull t[N],sum,ans;//sum:总件数 
    int n,m;
    struct node{
        ull k,c;
        bool operator < (const node &G)const
        {
            return c<G.c;
        }
    }a[N];
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i].k>>a[i].c;
        cin>>m;
        for(int i=1;i<=m;i++) cin>>t[i];
        t[m+1]=1e13;
        sort(a+1,a+n+1);
        int Lv=1;
        for(int i=1;i<=n;i++)
        {
            while(sum+a[i].k>=t[Lv])
            {
                ans+=(t[Lv]-sum)*a[i].c*Lv;
                a[i].k-=t[Lv]-sum;
                sum=t[Lv];
                Lv++;
            }
            ans+=a[i].k*a[i].c*Lv;
            sum+=a[i].k;
        }
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    堆排序
    冒泡排序
    描述字符串写入文件
    Java Socket编程,读服务器几个字符,再写入本地显示。
    final,finally,finalize区别
    圆桌问题 (a)
    表达式
    计算系数
    乌龟棋
    显示图像(多源dfs)
  • 原文地址:https://www.cnblogs.com/smartljy/p/13426258.html
Copyright © 2011-2022 走看看