• 题解 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);
    }
    
  • 相关阅读:
    如何进行函数式编程
    HTML文本格式化
    非模态对话框的创建及注意事项
    中国第一代程序员列传
    野指针
    缓冲区溢出攻击
    windows全部启动项
    HTML 样式
    Volatile关键字
    HTML基本标签
  • 原文地址:https://www.cnblogs.com/Randolph68706/p/11301595.html
Copyright © 2020-2023  润新知