zoukankan      html  css  js  c++  java
  • 题解 CF492C Vanya and Exams

    CF492C Vanya and Exams

    有了Pascal题解,来一波C++题解呀qwq。。

    简单的贪心题

    按b[i]从小到大排序,一个一个学科写直到达到要求即可

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    struct number {
    	long long a,b;
    	bool operator <(const number &x)const {
    		return b<x.b;
    	}
    } a[100005];
    long long ans,sum,n,r,ave;//不开long long最后一个点WA
    int main() {
    	scanf("%lld%lld%lld",&n,&r,&ave),sum=n*ave;//总共需要的学分
    	for (int i=0; i<n; i++) scanf("%lld%lld",&a[i].a,&a[i].b),sum-=a[i].a;
    	if (sum<=0) {//若当前学分已大于大于所需,直接输出
    		puts("0");
    		return 0;
    	}
    	sort(a,a+n);//按a[i].b排序
    	for (int i=0; sum>0 && i<n; i++) {
    		ans+=a[i].b*min(sum,r-a[i].a);//每个学科的论文要么尽量写完(最多只能赚r-a[i].a个学分),要么写到达到要求即可
    		sum-=(r-a[i].a);//减去写论文所得学分
    	}
    	printf("%lld",ans);
    }
    
  • 相关阅读:
    0425正则数组
    0424php函数
    0424php基础
    string类例题
    数组分为一维数组,二维数组,多为数组
    string类 截取的长度 是否包含某个数
    循环语句2
    /异常语句try,catch.
    string类
    循环语句
  • 原文地址:https://www.cnblogs.com/Randolph68706/p/11301595.html
Copyright © 2011-2022 走看看