题意:给定n,k,m分别代表天数,每天上的课,以及科目数。
给定每门课的学分,已经基础分数。
给定n天每天有哪些课能学。
求如何安排复习,使得GPA尽可能大且没有挂科,算出GPA。
思路:最大费用最大流。定义函数f(score,credit)=credit×(4-3.0/1600×(100-score)^2)。每一天向汇点连边,容量为k,费用0; 每门课
与每天根据是否在当天能上连边,容量为k,费用为0; 源点向每门课连边,若基础分score小于60,则与源点连一条流量60-score、费用
inf的边,保证优先到达60,接着从源点与该课程连40条流量分别为1,费用为f(x+1,)-f(x,p)的边(40条代表61到100);若基础分score
大于等于60,则连100-score条容量1、费用f(x+1,p)-f(x,p)的边。跑完最大费用最大流之后,再看是否还有哪门课不及格,如果有ans=0,不然计算GPA。详见代码:
/*********************************************************
file name: hdu4406.cpp
author : kereo
create time: 2015年02月11日 星期三 15时35分08秒
*********************************************************/
#include
#include
#include
#include
#include
#include