首页 > 其他分享 >ABC 246 C - Coupon(思维)

ABC 246 C - Coupon(思维)

时间:2022-10-03 20:34:05浏览次数:67  
标签:ABC num Coupon LL 优惠卷 cin Sample 246 Input

怎么最近连纯思维题都写不出来了???
我人傻了

https://atcoder.jp/contests/abc246/tasks/abc246_c

题目大意:

给定n个价钱,我们手里有k个优惠卷,每个优惠卷都可以减7元;

假如一个是a元,那么我们可以把它的价钱变成max{0,a-k*x},不能够低于0元;

问我们合理分配这k张优惠卷,买下这n个东西使用的最小价格总数是多少?
Sample Input 1 
5 4 7
8 3 10 5 13
Sample Output 1 
12

Sample Input 2 
5 100 7
8 3 10 5 13
Sample Output 2 
0

Sample Input 3 
20 815 60
2066 3193 2325 4030 3725 1669 1969 763 1653 159 5311 5341 4671 2374 4513 285 810 742 2981 202
Sample Output 3 
112
  • 当我们的优惠卷数量特别充裕的时候,每次遇到一个优惠卷都先满打满算用完它,比如第一个样例,先把大于等于7元的全部使用掉,这样就能确保7元的优惠卷是没有浪费的

  • 紧接着,我们来到了余数大比拼的时候,那就是看利用程度了,那必然是最大的余数使用一张合算多了,所以直接从大到小使用直到用不了为止,

  • 剩下的结果就是答案

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=200200,M=2002;
LL a[N];
bool cmp(LL l,LL r)
{
    return l>r;
}
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        LL n,k,x;
        cin>>n>>k>>x;
        for(LL i=1;i<=n;i++)
        {
            cin>>a[i];
            if(a[i]>=x&&k>=1) //无差别先➖
            {
                LL num=min(k,a[i]/x);
                a[i]-=num*x;
                k-=num;
            }
        }
        sort(a+1,a+1+n,cmp);
        LL sum=0;
        for(LL i=1;i<=n;i++)
        {
            //cout<<a[i]<<" ";
            if(k!=0)
            {
                k--;
                a[i]=0;
            }
            else sum+=a[i];
        }
        cout<<sum<<endl;
    }
    return 0;
}

标签:ABC,num,Coupon,LL,优惠卷,cin,Sample,246,Input
From: https://www.cnblogs.com/Vivian-0918/p/16751169.html

相关文章

  • ABC-270 F - Transportation(kruskal)
    ABC-270F-Transportation(kruskal)考虑等价转换,建立两个虚点(分别表示airport和harbor的中转站)。这样就可以把点统一为边权问题。对于操作1和操作2,就是等价于向虚点连边......
  • solution-arc149(ABC)
    A就是枚举,先枚举是哪个数再枚举位数。把这种题放arcA感觉挺没意思。#include<cstdio>usingnamespacestd;intansx,ansy;voidcheckmax(inti,intj){if(......
  • ABC246
    FourPointsGetCloserCoupon2-variableFunctionBishoptypewriterGameonTree301?Queries......
  • Coupon
    ProblemStatementThereare$N$itemsinashop.Foreach$i=1,2,\ldots,N$,thepriceofthe$i$-thitemis$A_i$yen(thecurrencyofJapan).Takahashih......
  • P2467 [SDOI2010]地精部落
    P2467[SDOI2010]地精部落题目传送门题目大意:略题目分析:首先一眼可以知道这个是个计数类的问题,我们可以考虑使用组合数学和\(dp\),由于题目让我们求奇数项都高于或低......
  • Iroha and Haiku (New ABC Edition)
    ProblemStatementThereisasequence$A=(A_0,\ldots,A_{N-1})$oflength$N$.Determineifthereexistsatupleofintegers$(x,y,z,w)$thatsatisfiesalloft......
  • *ABC 245 D - Polynomial division(数论/思维)
    https://atcoder.jp/contests/abc245/tasks/abc245_d题目大意:n个数字,代表A(X)=a[0]*X^0+a[1]*X^1+......+a[n]*X^n;m个数字,代表B(X)=b[0]*X^0+b[1]*X^1+...........
  • ABC254E Small d and k(BFS)
    E-Smalldandk题目描述:  给\(n\)个顶点\(m\)条边的无向图,每个顶点的度不超过\(3\),给你\(Q\)次询问,每次询问给你一个顶点\(x\)和一个\(k\),表示求距离顶点\(x\)的长......
  • ABC 244 C - Yamanote Line Game (交互题)
    https://atcoder.jp/contests/abc244/tasks/abc244_c题目大意:有两个人,分别叫做AB。给定一个数字,A先手,每个人可以从[1,2*n+1]这个范围内说出一个数字,说不出的人就输;我......
  • AtCoder ABC 270 题解(D-F)
    AtCoderABC270题解(D-F)D-Stones(博弈DP)题目:​ 现在有一堆石子,一个序列a表示每次可以从石头里拿走多少个石子。当无法再拿出石头的时候,游戏结束。两边都以最佳策略......