⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1283.cpp

📁 ZOJ 动态规划算法题目入门与提高 源代码
💻 CPP
字号:
#include<iostream>
#include<fstream>
#include<cmath>
#include<vector>
#include<iomanip>
#include<algorithm>
using namespace std;
void round(double & a){
   double b=a*10;
   b=(int) b;
   if((a-b/10)<0.05) a=b/10;
   else a=(b+1)/10;
}
class item{
public:
	vector<double> fenshu;
	double av,aav,g,ag;
	int a,b;
	item(){}
	double makeav(){
        if(fenshu.size()==1) av=fenshu[0];
		else if(fenshu.size()==2) av=(fenshu[0]+fenshu[1])/2;
		else {
           av=-(*min_element(fenshu.begin(),fenshu.end()));
		   for(int i=0;i<fenshu.size();i++){
               av+=fenshu[i];
		   }
		   av/=(fenshu.size()-1);
		}
		round(av);
		return av;
	}
	void makeaav(){
        int incrate=b/2*3;
		aav=av+incrate;
	}
	void makeg(double sd,double pin){
        if(aav>=sd+pin) g=4;
		else if(aav>=pin) g=3;
		else if(aav>=pin-sd) g=2;
		else g=1;
	}
	double makeag(){
        if(a==0){
			ag=g+1;
		    if(ag>4) ag=4;
		}
		else{
			int dec=a/4;
		    ag=g-dec;
		    if(ag<0) ag=0;
		}
		return ag;
	}
};
double makesd(vector<item> & vec,double temp){
    double res=0;
	for(int i=0;i<vec.size();i++){
       res+=(vec[i].av-temp)*(vec[i].av-temp);
	}
	//cout<<"res"<<" "<<res<<endl;
	res/=vec.size();
	res=sqrt(res);
	round(res);
	if(res<1) res=1;
	return res;
}
int main(){
  //ifstream cin("in.txt");
  int c,i,l,r,t,j,k;
  double temp,sd,g;
  cout<<"MAKING THE GRADE OUTPUT\n";
  cin>>c;
  for(l=0;l<c;l++){
      cin>>r>>t; temp=0;
      vector<item> vec(r);
	  for(i=0;i<r;i++){
		  vec[i].fenshu.resize(t);
		  for(j=0;j<t;j++) cin>>vec[i].fenshu[j];
		  cin>>vec[i].b>>vec[i].a;
		  temp+=vec[i].makeav();
		  vec[i].makeaav();
	  }
	  temp/=r; round(temp); sd=makesd(vec,temp);
	  g=0;
	  for(i=0;i<vec.size();i++){
          vec[i].makeg(sd,temp);
          g+=vec[i].makeag();
	  }
	  g/=vec.size();
	  round(g);
	 // for(i=0;i<vec.size();i++){
	 //	  cout<<vec[i].av<<" "<<vec[i].aav<<" "<<vec[i].g<<" "<<vec[i].ag<<" ";
	 // }
	 //cout<<endl;
	  cout<<setiosflags(ios::fixed)<<setprecision(1)<<g<<endl;
  }
  cout<<"END OF OUTPUT\n";
  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -